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
디렉토리의 파일을 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
이 부분은 다소 혼란스러울 수 있지만 읽기만 하고 실행하지 않으면 실제로 디렉터리에 있는 파일 목록을 볼 수 있지만 inode 메타데이터는 읽을 수 없으므로 권한은 거부되지만 파일 목록은 계속 볼 수 있습니다. 다음 디렉토리에...
/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
대부분의 경우 전체 디렉터리(하위 디렉터리 포함)에 대한 액세스 및 사용을 방지하려면 해당 디렉터리를 비재귀적으로 삭제하면 됩니다 -x
. 따라서 아무런 해를 끼치지 않고 하위 디렉터리를 그대로 둘 수 있었습니다 +x
.
하위 디렉터리에 대한 권한을 유지하는 것은 여러 가지 이유로 유용할 수 있습니다(특히 -x
모든 사람에게 적용되지는 않지만 적어도 한 명의 사용자가 여전히 작업을 수행할 수 있는 경우).
예를 들어 해당 디렉터리 구조의 권한을 변경하는 동안 해당 컨테이너 디렉터리의 사용을 일시적으로 차단한 다음 +x
한 번의 작업으로 전체 트리에 대한 액세스를 다시 활성화(최상위 디렉터리에 부여)할 수 있습니다.
또한 스크립트(반드시 소유자가 실행할 필요는 없음)가 디렉토리 트리를 임시 위치(다른 사람이 읽어서는 안 됨)에 백업하고 모든 것을 tar 파일에 저장하여 디렉토리 트리의 권한 설정을 유지하는 상황이 발생할 수도 있습니다. .
답변3
+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 아래의 파일 및 디렉터리. 이는 불필요하며 파일에 맞지 않을 수 있습니다.
답변4
디렉토리에서 x 비트를 제거하는 일반적인 경우는 사용자를 홈 디렉토리에 잠그는 것입니다.제한된 껍질cd
절대 경로 이름에 대한 참조를 허용하지 않고 절대 경로를 사용한 프로그램 실행을 허용하지 않도록 선택할 수 있습니다 . 또한 cd ..
홈 디렉터리의 상위 디렉터리에 액세스할 수 없으므로 효과적으로 잠겨 $PATH에 없는 프로그램을 실행할 수 없습니다.