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.