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には権限が重要です。どうすればこれを達成できますか?
ありえない。シンボリックリンクのアクセス許可は無意味なので、方法はありません(シンボリックリンクはファイルではなく、ファイルを指しているだけです)。 Linuxでこれを行う方法は、 ACL です。
symlink は次のように説明されます...
作成されたシンボリックリンクのファイルモードビットの値は指定されていません。 POSIX.1-2008で指定されたすべてのインターフェイスは、stat構造体のst_modeフィールドで返されるファイルモードビットの値が指定されていないことを除き、シンボリックリンクの内容を常に読み取ることができるかのように動作します。
違いはここにあります: chmod と chmod ...これはBSD対Linuxです。
それが重要かどうかはわかりませんが、SSHに関しては、許可を取得するためにlstat(2)ではなく stat(2) を使用します。
できません。基礎となる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つの標準的な方法はどれもこれに役立ちません。