OSXの `chmod -h`フラグに相当するUbuntuとは何ですか?


13

OSXでは、シンボリックリンク自体のアクセス許可を設定できます(-hの使用を指すものの代わりに)。manページから:

 -h      If the file is a symbolic link, change the mode of the link itself rather than the file that the link points to.

Ubuntu 14.04では、シンボリックリンクのアクセス許可を設定しようとしましたが、シンボリックリンクターゲットでのみ設定されています。

から/home/nagios/.ssh/someprivatekeyへのシンボリックリンクに関するものである/somewhere/else/privatekeyため、sshではアクセス許可が重要です。どうすればこれを達成できますか?


それでは、なぜこのシンボリックリンクが必要なのでしょうか?
ムル

1
sshは、/ somewhere / else / privatekeyのアクセス許可ではなく、シンボリックリンクのアクセス許可を重要視していますか?
Random832

@ Random832はい、間違った結論を下した可能性があります。また、ls -l出力(lrwxrwxrwx)で権限がどのように表示されるかについて少し混乱していました。
レイブルジェメストレ

@muru sshキーを使用してあらゆる種類のサーバーにアクセスする(buildserver)Dockerイメージを作成していました。さまざまな理由(つまり、ドッカーハブでホストする場合)のために、秘密キーを内部に入れたくありません。そのため、シンボリックリンクを作成し、イメージが実行された後にのみマウントされるボリュームを指すようにしました。しかし、考えて.ssh/config
みると

回答:


18

ありえない。シンボリックリンクのアクセス許可は無意味なので、方法はありません(シンボリックリンクはファイルではなく、ファイルを指しているだけです)。Linuxでこれを行う方法は、ACLを使用することです。

シンボリックリンクは次のように説明されています...

作成されたシンボリックリンクのファイルモードビットの値は指定されていません。POSIX.1-2008で指定されているすべてのインターフェイスは、stat構造体のst_modeフィールドで返されるファイルモードビットの値が指定されていないことを除いて、シンボリックリンクの内容を常に読み取ることができるかのように動作します。


違いはここにあります:chmodchmod ... BSD対Linuxです。


わからないことが重要であるが、SSHについての場合:それは使用 のstat(2)許可を取得しない(2)LSTAT、。

  • stat()は、パスが指すファイルを統計し、bufを埋めます。
  • lstat()はstat()と同じです。ただし、pathがシンボリックリンクの場合、参照するファイルではなく、リンク自体がstat-edになります。

2
シンボリックリンクに許可を設定する機能は、最新バージョンでも指定されていません。これはBSD拡張機能です。
Random832

1
@ Random832うーん、もっと正確かもしれません。私は今日SOでそのビットを読みましたが、これについてはチェックしませんでした:D
Rinzwind

4
ちなみにPOSIXはfchmodat、シンボリックリンクのモードを変更するために使用できる関数を指定します(オプション機能-Linuxを含む、それをサポートしないシステムはエラーEOPNOTSUPPを返します)が、chmodこれを使用するコマンドには何もありません。-RPOSIXでのみ定義されています。
Random832

2
Linuxでは、 symlinkパーミッションは無意味です。変更できるシステム(lchmod(2)またはfchmodat(2)...)では、意味(許可/拒否readlink()(読み取り)またはパス解決(実行))があります。ただし、シンボリックリンクのターゲットを変更することはできないため、書き込み権限は通常はありません。
ステファンシャゼル

Unixは、「シンボリックリンクはファイルではありません」とあなたに同意しません。シンボリックリンクは特別なファイルです。
ホッブズ

9

できません。基礎となるchmodシステムコールはLinuxでこれをサポートしていないだけであり、その点で、Linuxはリンクのアクセス権も考慮しません。からman chmod

chmod never changes the permissions of symbolic links; the chmod system
call cannot change their permissions.  This is not a problem since  the
permissions  of  symbolic  links  are  never  used.   However, for each
symbolic link listed on the command line, chmod changes the permissions
of  the  pointed-to  file.   In  contrast, chmod ignores symbolic links
encountered during recursive directory traversals.

ハードリンクまたはバインドマウントについては、ソースのアクセス許可が使用されるため、ファイルのコンテンツを他の場所に反映する3つの標準的な方法はどれもこれに役立ちません。


この回答は私にとっても非常に明確でした。申し訳ありませんが、回答として1つしか受け入れられませんでした。
レイブルジェメストレ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.