비트를 실행하고 읽습니다. Linux에서 디렉토리 권한은 어떻게 작동합니까?

비트를 실행하고 읽습니다. Linux에서 디렉토리 권한은 어떻게 작동합니까?

+x내 CMS에서 사용자가 디렉토리를 열려면 디렉토리에 실행 비트( )가 설정되어 있어야 한다는 것을 알았습니다 . 디렉토리를 읽으려면 실행 권한이 필요한 이유는 무엇이며 Linux에서 디렉토리 권한은 어떻게 작동합니까?

답변1

Linux에서 디렉터리에 권한을 적용할 때 권한 비트는 일반 파일과 다른 의미를 갖습니다.

  • 이것비트 읽기( r)를 사용하면 영향을 받는 사용자가 디렉터리의 파일을 나열할 수 있습니다.
  • 이것비트를 쓰다( w)를 사용하면 영향을 받는 사용자가 디렉터리에서 파일을 생성, 이름 변경 또는 삭제할 수 있을 뿐만 아니라 디렉터리의 속성도 수정할 수 있습니다.
  • 이것실행 비트( x)는 영향을 받은 사용자가 디렉터리에 들어가 그 안에 있는 파일과 디렉터리에 액세스할 수 있도록 허용합니다.
  • 이것끈끈한 비트( T또는 t실행 비트가 다른 사람에 대해 설정된 경우)는 이 디렉터리의 파일 및 디렉터리를 해당 소유자(또는 루트)만 삭제하거나 이름을 바꿀 수 있음을 의미합니다.

답변2

먼저 생각해 보세요. 디렉토리란 무엇입니까? 이는 그 안에 있는 항목(파일 및 기타 디렉터리)의 목록일 뿐입니다. 따라서: 디렉토리 = 이름 목록.

비트 읽기= 설정하면 이 목록을 읽을 수 있습니다. 예를 들어 다음과 같은 파일이 있다고 가정해 보겠습니다 poems.

  • ls poems당신 은 포함된 항목의 목록을 얻을 수 있습니다( -l세부 사항은 공개되지 않습니다!).
  • 명령줄 완성(예: )을 사용할 수 있습니다 touch poems/so <TAB> poems/somefile.
  • poems작업 디렉토리를 생성 (즉, cd입력)할 수 없습니다.

비트를 쓰다= 설정되면 이 목록을 수정할 수 있습니다. 즉, 이름을 {추가, 이름 바꾸기, 삭제}할 수 있습니다. 하지만! 실제로 실행 비트도 설정된 경우에만 이 작업을 수행할 수 있습니다.

실행 비트= 이 디렉토리를 작업 디렉토리로 만드십시오. 즉, cd그 디렉토리로 이동하십시오. 다음을 수행하려면 이 권한이 필요합니다.

  • 그 안에 있는 항목에 액세스(읽기, 쓰기, 실행)합니다.
  • 목록 자체를 수정합니다. 즉, 목록에 이름을 추가하고, 이름을 바꾸고, 삭제합니다(물론 쓰기 비트는 디렉터리에 설정되어야 합니다).

흥미로운 사례 1: 디렉터리에 대한 쓰기+실행 권한이 있으면 해당 항목에 대한 쓰기 권한이 없더라도 해당 항목을 {삭제, 이름 바꾸기}할 수 있습니다. (이를 방지하려면 끈끈한 비트를 사용하십시오)

흥미로운 사례 2: 디렉터리에 대한 실행(쓰기는 아님) 권한이 있고 그 안에 있는 파일에 대한 쓰기 권한이 있는 경우 파일을 삭제할 수 없습니다(목록에서 파일을 제거하는 것과 관련됨). 그러나 해당 내용을 삭제할 수 있습니다. 예를 들어 텍스트 파일인 경우 vi로 열어 모든 내용을 삭제할 수 있습니다. 파일이 여전히 존재하지만 비어 있습니다.

요약:

비트 읽기= 목록에 있는 이름을 읽을 수 있습니다.
비트를 쓰다= 실행 비트도 설정된 경우 목록에서 이름을 {추가, 이름 바꾸기, 삭제}할 수 있습니다.
실행 비트= 이 디렉터리를 작업 디렉터리로 설정할 수 있습니다.

추신: Kusalananda가 언급한 기사는 읽을 가치가 있습니다.

답변3

가능한 모든 권한과 실제 효과를 나열하는 이 표를 준비했습니다.

디렉토리
권한
8진수 del
이름 바꾸기 파일
생성
디렉토리 목록
파일
내용 읽기

파일
내용 쓰기
CD 디렉토리 CD
하위 디렉토리
하위 디렉토리
목록

하위 디렉터리
파일에 액세스
--- 0
-W- 2
아르 자형-- 4 파일
이름만(*)
RW- 6 파일
이름만(*)
-엑스 1
-WX
인수하다 5
wx 7

(*)파일 이름만: 차원, 날짜 등 다른 속성에는 액세스할 수 없습니다. 예를 들어 Tab 키를 사용하여 자동 완성할 수 있지만 ls 명령을 사용할 수는 없습니다.

몇 가지 생각:

  • 그리고X가 설정되지 않았습니다., R 및 W는 대부분 쓸모가 없습니다.
  • 엑스홀로읽기 및 쓰기 비활성화맹목적으로 파일 내용을 읽고 쓸 수 있으며 하위 디렉터리에 액세스할 수 있기 때문에 보안에 대한 잘못된 인식을 갖게 됩니다. 이 디렉터리의 모든 직접 하위 디렉터리에 명시적인 권한이 있는지 확인해야 합니다.
  • 다음 이외의 값은 거의 사용하지 않습니다.
    • 0: 접근할 수 없습니다.
    • 1: 순회를 허용하기 위한 최소한의 접근 권한입니다.
    • 5: 읽기/쓰기가 허용되지만 디렉터리 트리 자체의 구조는 변경되지 않습니다.
    • 7: 전체 권한.

답변4

~에서로버트 러브책 "LINUX 시스템 프로그래밍" 1장 라이센스 -

여기에 이미지 설명을 입력하세요.

관련 정보