x 디렉토리의 비트 Arch Linux 문서

x 디렉토리의 비트 Arch Linux 문서

나는 다음을 언급하고 있습니다.아치 리눅스 Access_Control_Lists 문서

그것은 다음과 같이 말합니다:

웹 서버에 개인 파일에 대한 실행 권한 부여

다음 기술은 전 세계에 액세스 권한을 부여하여 보안을 손상시키지 않고 웹 서버와 같은 프로세스에 사용자의 홈 디렉터리에 있는 파일에 대한 액세스 권한을 부여하는 방법을 설명합니다.

다음에서는 웹 서버가 http 사용자로 실행되고 geoffrey의 홈 디렉터리 /home/geoffrey에 대한 액세스 권한을 부여한다고 가정합니다.

첫 번째 단계는 http 사용자에게 실행 권한을 부여하는 것입니다.

setfacl -m "u:http:--x" /home/geoffrey

참고: 프로세스가 디렉터리의 콘텐츠를 나열하려면 디렉터리에 대한 실행 권한이 필요합니다.

따라서 위의 예에서는 /home/geoffrey 디렉토리에서 http 사용자에 대한 실행 권한을 설정하고 있습니다. 제가 이해한 바에 따르면 디렉터리에 실행 비트만 부여하면 디렉터리의 내용을 나열할 수는 없지만 파일에 액세스할 수는 있습니다(해당 이름을 알고 있는 경우 + 디렉터리 내의 특정 파일에 대한 권한이 올바른 권한을 갖고 있는 것입니다). 세트). 그러면 setfacl -m "u:http:--x" /home/geoffreyhttp 사용자(또는 그들이 참조하는 프로세스)를 사용하여 디렉토리의 내용을 나열하는 것이 어떻게 가능합니까 ? 내가 무엇을 놓치고 있나요?

미리 감사드립니다!

답변1

-x디렉토리와 그 안에 있는 모든 파일에 액세스하려면 디렉토리에 대한 권한이 필요합니다 . 그러나 디렉터리 아래의 파일에 대한 액세스는 디렉터리 자체가 아닌 파일의 권한에 따라 달라집니다. 상위(디렉토리)에 대한 실행 권한이 있는 한 여기에 포함된 파일에 액세스하기 위해 다른 것은 필요하지 않습니다. 이는 다음 예를 통해 가장 쉽게 설명됩니다.

$ sudo mkdir dir1 && echo "Hello world!" | sudo tee dir1/file1 && sudo chmod 700 dir1
Hello world!
$ ls -ld dir1/
drwx------ 2 root root 4096 Apr 12 16:09 dir1/
$ sudo ls -l dir1/
total 4
-rw-r--r-- 1 root root 13 Apr 12 16:09 file1

액세스 권한 만 root있으므로 디렉터리의 내용을 나열하거나 파일을 분류하려고 하면 실패합니다.

$ ls dir1/
ls: cannot open directory 'dir1/': Permission denied
$ cat dir1/file1
cat: dir1/file1: Permission denied

cat파일에 대한 읽기 액세스 권한이 있음에도 불구하고 어떻게 실패하는지 확인하십시오 . 이제 사용자에게 디렉토리에 대한 실행 액세스 권한을 부여하고 다시 시도하면 파일을 읽을 수 있습니다.

$ sudo chmod 711 dir1/
$ ls -l
total 4
drwx--x--x 2 root root 4096 Apr 12 16:09 dir1
$ cat dir1/file1
Hello world!

디렉토리에 대한 읽기 액세스가 필요하기 때문에 디렉토리의 내용을 나열할 수는 없지만 이제 해당 경로를 알고 있는 한 디렉토리에 있는 모든 파일을 읽을 수 있습니다.

따라서 기본 아이디어는 여기서는 타당합니다. 혼란스러운 것은 마지막 메모일 뿐입니다. 내용을 나열하려면 읽기 액세스 권한이 필요하지만 http경로가 알려진 특정 파일에 대한 액세스 권한만 사용자에게 부여해야 하는 경우 실행 액세스이면 충분합니다 .

표현이 형편없긴 하지만, 그 메모는 정확히 틀린 것은 아니며 단지 불완전할 뿐입니다. 실제로 실행 권한이 필요합니다.충분히디렉토리의 내용을 나열합니다. 이것이 없으면 파일 이름은 볼 수 있지만 속성은 볼 수 없습니다.

$ ls -l
total 4
drwxr--r-- 2 root root 4096 Apr 12 16:09 dir1
$ ls -l dir1/
ls: cannot access 'dir1/file1': Permission denied
total 0
-????????? ? ? ? ?            ? file1

답변2

누락된 내용이 없습니다. 이 문서의 대부분은 정확하지만 메모는 잘못되었습니다.

홈 디렉토리를 넘어 다른 디렉토리로 이동할 수 있습니다. 다른 디렉토리는 읽고 교차할 수 있으므로 해당 디렉토리의 내용이 나열됩니다.

나는 당신의 집을 건널 수만 있게 만드는 것이 좋은 생각이라고 생각합니다. 그러나 나는 또한 당신이 옳다고 생각합니다. 그것이 무엇을 하는지에 대한 설명은 잘못되었습니다.

  • 디렉터리의 파일 이름을 나열하려면 읽기 권한이 필요합니다.
  • 파일 에 대한 교차 권한이 필요합니다 stat(파일에 대해 알아보거나 파일을 엽니다).

버그 보고서를 제출하셨나요?

관련 정보