folder
다음 경로에 폴더가 있다고 가정 해보십시오 .
my_path = /a/b/c/d/e/folder
그리고 file
그 폴더에 있는 파일 .
그런 다음이 명령을 실행하여 / a / 아래에서 그룹 권한을 제거한다고 가정합니다.
> chmod g-rwx -R /a/
이제 다음에 대한 +rx
권한을 부여하십시오 folder
.
> chmod g+rx /a/b/c/d/e/folder
그런 다음 내 그룹의 두 번째 사용자가 실행되는 경우 :
> ls /a/b/c/d/e/folder
또는
> cat /a/b/c/d/e/folder/file
그녀는 권한 오류를 얻습니다. 내가 아는 한의 g+x
모든 부모 에게 액세스 권한을 제공해야하기 때문 입니다 folder
. 내 질문은 언제, 왜+x
부모가 가지고 있지 않은 디렉토리에 권한을 부여하는 것이 유용 할까요?
감사
답변
대부분의 경우 전체 디렉토리 (하위 디렉토리 포함)의 액세스 및 사용을 차단하려는 경우 디렉토리를 비재 귀적으로 제거하여 수행 할 수 있습니다 -x
. 따라서 +x
아무런 해를 끼치 지 않고으로 하위 디렉토리를 남겼을 수 있습니다 .
하위 디렉토리에 대한 권한을 유지하는 것은 여러 가지 이유로 유용 할 수 있습니다 (특히 -x
모든 사람에게 적용되지는 않지만 최소한 한 명의 사용자가 여전히 무언가를 수행 할 수있는 경우).
예를 들어 컨테이너 디렉토리의 사용을 일시적으로 차단하고 해당 디렉토리 구조 내에서 권한을 다른 방식으로 변경 한 다음 한 번의 조작으로 +x
최상위 트리에 대한 전체 트리 액세스를 다시 활성화 할 수 있습니다 .
스크립트 (소유자가 반드시 실행할 필요는 없음)가 디렉토리 트리를 임시 위치 (다른 사람이 읽을 수 없어야 함)에 백업하고 모든 파일을 tar 파일에 넣는 상황이있을 수 있습니다. 디렉토리의 내용.
답변
디렉토리의 파일을 cd하거나 액세스하려면 모든 상위 디렉토리에 + x 권한이 필요합니다.
파일을 나열하려면 디렉토리에 + r 권한이 필요합니다. 여기 예가 있습니다 :
다음 명령을 실행하여 몇 가지 설정을 할 수 있습니다.
mkdir -p /a/b
touch /a/b/{file1,file2}
cd /a
echo 1 > b/file1
echo 2 > b/file2
권리가 없습니다 :
pwd
/a$ pwd
/a
/a$ chmod -rwx b
/a$ ls -l
d--------- 4 mike admin 136 Jun 1 14:44 b/
/a$ ls -l b/
ls: : Permission denied
/a$ cat b/file1
cat: b/file1: Permission denied
실행 만
/a$ chmod +x b
/a$ ls -l
total 0
d--x--x--x 4 mike admin 136 Jun 1 14:44 b/
/a$ ls -l b
ls: b: Permission denied
/a$ cat b/file1
a
/a$ ls -l b/file1
-rw-r--r-- 1 mike admin 2 Jun 1 14:43 b/file1
이제 읽었습니다.
/a$ chmod +r b/
/a$ ls -l
/a$ ls -l
total 0
dr-xr-xr-x 4 mike admin 136 Jun 1 14:44 b/
/a$ ls -l b/
total 16
-rw-r--r-- 1 mike admin 2 Jun 1 14:43 file1
-rw-r--r-- 1 mike admin 2 Jun 1 14:43 file2
이 부분은 다소 혼란 스러울 수 있지만 읽기 및 실행이없는 경우 실제로 디렉토리에 파일을 나열 할 수 있지만 inodes 메타 데이터를 읽을 수 없으므로 권한이 거부되지만 여전히 파일 목록을 볼 수 있습니다 아래와 같이 디렉토리에 ..
/a$ chmod -x b/
/a$ ls -l
total 0
dr--r--r-- 4 mike admin 136 Jun 1 14:44 b/
/a$ ls -l b
ls: file1: Permission denied
ls: file2: Permission denied
답변
다음 +x
과 같은 상황에서 비 재귀 권한 을 사용하려고합니다 .
chmod g+x /a /a/b /a/b/c /a/b/c/d /a/b/c/d/e
(이는 사용자가 각 디렉토리 그룹의 구성원이라고 가정합니다. 그렇지 않은 경우 해당 디렉토리에 대해 수행해야 chmod o+x
합니다.)
사용자가 ls /a/b/c/d/e/folder
성공적으로 수행 하려면 경로의 모든 디렉토리에 대한 실행 권한 과에 대한 읽기 권한이 있어야합니다 folder
.
네가했다면
chmod g+x -R /a
작동하지만 / a 아래의 모든 파일과 디렉토리에 그룹 실행 권한을 부여 합니다. 그것은 불필요하며 파일의 경우 아마도 틀릴 것입니다.
답변
특정 상황에서 문제는 folder
자신의 그룹에서 일부 사용자가 액세스 할 수있는 적절한 권한이 있어도 해당 사용자가 상위 폴더 중 folder
하나에 액세스 할 수없는 경우 해당 사용자가 액세스 할 수 없다는 것입니다 내부에 액세스하십시오 ( folder
귀하의 예제에서 호출 된 것).
당신이 실행하는 경우 :
chmod g-rwx -R /a/
그러면 a
모든 자녀가 그 허가를받습니다.
당신이 실행할 때 :
chmod g+rx -R /a/b/c/d/e/folder
그러면 folder
모든 자녀들도 그 허가를받습니다. 그러나이 이후의 명령으로 폴더 a/
, a/b
등 a/b/c/d/e
은 권한을 변경하지 않을 때까지 계속 됩니다.
답변
디렉토리에서 x 비트를 제거하는 일반적인 경우는 홈 디렉토리에서 사용자를 잠그는 것입니다. 제한된 쉘 에는 cd
절대 경로 이름을 참조 할 수없고 절대 경로를 사용하는 프로그램의 실행을 허용 하지 않는 옵션 이 있습니다. 또한 cd ..
홈 디렉토리의 상위 디렉토리로 이동할 수 없으므로 $ PATH에없는 프로그램을 효과적으로 잠그고 실행할 수 없습니다.