+ x 권한이있는 디렉토리, 부모가없는 디렉토리. 언제 이것이 유용할까요?


11

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 부모가 가지고 있지 않은 디렉토리에 권한을 부여하는 것이 유용 할까요?

감사


1
당신은 실행하고 chmod +grx -R /a/b/c/d/e/folder있습니까? 잘못, 그것을 실행하는 올바른 방법은 다음과 같습니다chmod g+rx -R /a/b/c/d/e/folder
nozimica

3
이 질문에 직접 대답하지는 않지만 권장되는 배경 읽기 : 디렉토리 권한 설명
Gilles 'SO-stop

답변:


6

대부분의 경우 전체 디렉토리 (하위 디렉토리 포함)의 액세스 및 사용을 차단하려는 경우 디렉토리를 비재 귀적으로 제거하여 수행 할 수 있습니다 -x. 따라서 +x아무런 해를 끼치 지 않고으로 하위 디렉토리를 남겼을 수 있습니다 .

하위 디렉토리에 대한 권한을 유지하는 것은 여러 가지 이유로 유용 할 수 있습니다 (특히 -x모든 사람에게 적용되지는 않지만 최소한 한 명의 사용자가 여전히 무언가를 수행 할 수있는 경우).

예를 들어 컨테이너 디렉토리의 사용을 일시적으로 차단하고 해당 디렉토리 구조 내에서 권한을 다른 방식으로 변경 한 다음 한 번의 조작으로 +x최상위 트리에 대한 전체 트리 액세스를 다시 활성화 할 수 있습니다 .

스크립트 (소유자가 반드시 실행할 필요는 없음)가 디렉토리 트리를 임시 위치 (다른 사람이 읽을 수 없어야 함)에 백업하고 모든 파일을 tar 파일에 넣는 상황이있을 수 있습니다. 디렉토리의 내용.


7

디렉토리의 파일을 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

2
감사합니다 @skrewler. " 디렉토리의 파일을 CD로 액세스하거나 액세스하려면 모든 상위 디렉토리 에 + x 권한이 필요합니다." 라고 생각했습니다. 내 질문은 다음과 같습니다. 부모님 이 + x 권한 이 없는 디렉토리에 + x 권한을 부여 하시겠습니까?
Amelio Vazquez-Reina 2016 년

내가 생각할 수있는 유일한 것은 실행 권한이없는 부모 디렉토리를 무시하고 바인드 마운트를 직접 수행하려는 경우입니다. 그게 말이 안되면 예를 보여 드리겠습니다.
skrewler

위의 내용이 더 명확해야합니다. 모든 상위 디렉토리에 대한 권한이있는 루트 사용자는 다른 사용자가 디렉토리에 도달 할 수 있도록이 바인드 마운트를 만들 수 있습니다. d 또는 e 만 전역 실행이있는 / a / b / c / d / e에 도달 할 수 있기 때문에 / mnt / d-> / a / b / c / d / e에서 바인드 마운트를 만들 수 있으며 사용자는 마운트 지점으로 이동하여 다른 방법으로는 도달 할 수없는 디렉토리 트리의 깊은 곳에 하드 링크를 만드는 것과 같은 아이디어입니다. 심볼릭 링크는 이와 같이 작동하지 않지만 바인드 마운트가 필요합니다.
skrewler

2

다음 +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 아래의 모든 파일과 디렉토리에 그룹 실행 권한을 부여 합니다. 그것은 불필요하며 파일의 경우 아마도 틀릴 것입니다.


1

특정 상황에서 문제는 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은 권한을 변경하지 않을 때까지 계속 됩니다.


0

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.