c
「a」に制限されたアクセス権を与えたいと思います。
理由は合格したいからですa
。
a <- drwx------
└ b <- drwxr-xr-x
└ c <- drwxr-xr-x
ln -s ../a/b/c/some_files ../a/
私はすべてが必要であることを理解していますa
。b
c
+x
そしてc
+r
しかしそれは真実ではない。今aはdrwx--x--xです。
目標を達成するにはどうすればよいですか?ありがとうございます!
答え1
あなたの意図と目的に応じて、あなたが行うことはあなたの現在の権限と所有権の下では不可能です。これはバインドマウントを介して行うことができますが、シンボリックリンクは機能しません。
ご存知のように、所有者a
(およびルート)以外は誰もこのアイテムを閲覧できません。つまり、他の誰もそのアイテムにアクセスできないため、b
誰c
もが読んで閲覧できることは重要ではありません。
できる唯一のことは、権限を変更することだけです。誰にでもアクセス権を与えたくない場合は、グループを作成し、アクセスしたい人だけを追加してグループに設定し、a
権限をに変更します。755
a
a
750
答え2
はい、可能です。ハードリンク到着するa/b/c/some_files
。その後、o
中間ディレクトリからすべての「」権限を完全に削除できます。
ところで、指定するのが一番安全です純粋なリンクを作成するときのパスです。
デモ:準備
# whoami
root
# mkdir -p /a/b/c
# touch /a/b/c/d
# chmod o= /a/
# chmod o= /a/b/
# chmod o= /a/b/c/
# ls -ld /a/
drwxr-x--- 3 root root 15 Dec 23 20:45 /a/
# ls -ld /a/b/
drwxr-x--- 3 root root 15 Dec 23 20:45 /a/b/
# ls -ld /a/b/c/
drwxr-x--- 2 root root 15 Dec 23 20:45 /a/b/c/
# ls -l /a/b/c/d
-rw-rw-rw- 1 root root 0 Dec 23 20:46 /a/b/c/d
# ln -s /a/b/c/d /softlink-to-d
# ls -l /softlink-to-d
lrwxrwxrwx 1 root root 8 Dec 23 20:47 /softlink-to-d -> /a/b/c/d
# ln /a/b/c/d /hardlink-to-d
# ls -l /hardlink-to-d
-rw-rw-rw- 2 root root 0 Dec 23 21:09 /hardlink-to-d
デモ:証明する
# su - postgres -c 'touch /a/b/c/d'
touch: cannot touch ‘/a/b/c/d’: Permission denied
# su - postgres -c 'touch /softlink-to-d'
touch: cannot touch ‘/softlink-to-d’: Permission denied
# ls -l /a/b/c/d
-rw-rw-rw- 2 root root 0 Dec 23 20:46 /a/b/c/d
### Note, mtime still unchanged...
# su - postgres -c 'touch /hardlink-to-d'
# ls -l /a/b/c/d
-rw-rw-rw- 2 root root 0 Dec 23 21:13 /a/b/c/d
### ...finally, mtime changed.