+ x 권한이있는 디렉토리, 부모가없는 디렉토리. 언제 이것이 유용할까요? file그 폴더에 있는 파일 . 그런 다음이 명령을

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/ba/b/c/d/e은 권한을 변경하지 않을 때까지 계속 됩니다.


답변

디렉토리에서 x 비트를 제거하는 일반적인 경우는 홈 디렉토리에서 사용자를 잠그는 것입니다. 제한된 쉘 에는 cd절대 경로 이름을 참조 할 수없고 절대 경로를 사용하는 프로그램의 실행을 허용 하지 않는 옵션 이 있습니다. 또한 cd ..홈 디렉토리의 상위 디렉토리로 이동할 수 없으므로 $ PATH에없는 프로그램을 효과적으로 잠그고 실행할 수 없습니다.


답변