디렉터리에 파일을 쓰거나 나열하려면 실행 권한이 필요한 이유는 무엇입니까? [복사]

디렉터리에 파일을 쓰거나 나열하려면 실행 권한이 필요한 이유는 무엇입니까? [복사]

목차에 대해 일부 참고 자료에서는 다음과 같이 말합니다.

  • r: 디렉터리 내용을 나열할 수 있습니다.
  • w: 디렉터리에 쓸 수 있어요
  • x: 디렉토리로 전환할 수 있습니다(디렉토리로 cd).

그러나 테스트 중에 다음과 같은 문제가 발생했습니다.

  • 내 사용자마테우스다른 사람의 허가를 받아 사용할 수 있습니다.
  • x는 디렉토리입니다

다른 사람의 허가가 있는 경우에만 r( chmod 704):

디렉토리에서 ls -l을 실행하면 다음과 같은 이상한 결과가 나타납니다.

mateus@engsrv:/tmp$ ls -l x/
ls: cannot access 'x/file_teste': Permission denied
total 0
-????????? ? ? ? ?            ? file_teste
mateus@engsrv:/tmp$

나도 파일을 "고양이"할 수 없습니다.

mateus@engsrv:/tmp$ cat x/haha
cat: x/haha: Permission denied

w자, 다른 사람이 허용한 경우에만 어떻게 되는지 봅시다 ( chmod 702)

mateus@engsrv:/tmp$ touch x/file_test2
touch: cannot touch 'x/file_test2': Permission denied
mateus@engsrv:/tmp$

실행( )을 허용하면 chmod 703다음 폴더에 쓸 수 있습니다.

mateus@engsrv:/tmp$ touch x/file_test2

읽기 권한( chmod 705):

mateus@engsrv:/tmp$ ls -l x
total 4
-rw-rw-r-- 1 mateus mateus 0 Oct  3 17:45 file_test2
-rw-r--r-- 1 root   root   3 Oct  3 17:31 file_teste

그렇다면 항상 (x)를 해야 하는 걸까요? 그런데 왜? 실행 권한이 필요한 다른 것이 백그라운드에 있습니까?

답변1

폴더에 파일을 생성(쓰기)하려면 해당 폴더에 들어가(실행) 필요합니다. OS/셸이 파일을 생성하기 위해 해당 폴더로 이동하기 때문입니다. 폴더를 변경하면 폴더가 실행됩니다(직접 실행되지 않음).

이 문제를 해결하기 위한 좋은 점은 폴더를 파일로 처리할 때(Linux 시스템에서) 파일과 동일하지만 실행할 때 위치를 실행하는 대신 폴더 내부로 변경한다는 것입니다(예: 스크립트, 프로그램 )그것.

하지만: 쓰기 권한이 없어도 폴더 이름을 변경할 수 있습니다(쓰기는 폴더 내부에서 파일 생성에 사용됩니다). 실행 권한이 없으면 폴더에 들어갈 수 없습니다. 폴더를 실행할 수 있으면 권한에 따라 읽기만 할 수도 있고 나중에 쓸 수도 있습니다.

편집 : 다음과 같이 설계되었습니다.

답변2

단지 때문입니다.

디렉터리를 변경할 때 뒤에서는 아무 것도 수행하지 않습니다. 디렉토리를 실행하는 것은 실제로 의미가 없으므로 어떤 방식으로든 해석될 수 있습니다. 그게 다야. 코드가 실행되었기 때문이 아닙니다. sys_chdir 시스템 호출은 권한을 확인하지만 아무 작업도 수행하지 않습니다.

관련 정보