먼저 생각하십시오 : 디렉토리는 무엇입니까? 그것은 안에있는 항목 (파일 및 기타 디렉토리)의 목록 일뿐입니다. 그래서 : 디렉토리 = 이름 목록.
읽기 비트 = 설정되면이 목록을 읽을 수 있습니다. 따라서, 예를 들어, 당신이라는 이름의 디렉토리가있는 경우 poems
:
- 당신은
ls poems
안에있는 아이템들의 목록을 얻을 수 있습니다 ( -l
세부 사항은 공개하지 않습니다!).
- 명령 줄 완성을 사용할 수 있습니다 (예 :)
touch poems/so <TAB> poems/somefile
.
poems
작업 디렉토리를 만들 수 없습니다 (예 : 디렉토리 cd
).
Write bit = 설정되면이 목록을 수정할 수 있습니다. 즉 {add, rename, delete} 이름을 지정할 수 있습니다. 그러나! 실행 비트가 설정된 경우에만 실제로 할 수 있습니다.
비트 실행 =이 디렉토리를 작업 디렉토리로 만듭니다 cd
. 원하는 경우이 권한이 필요합니다.
- 안에있는 항목에 액세스 (읽기, 쓰기, 실행)합니다.
- 목록 자체를 수정하십시오. 즉, 이름을 추가, 이름 바꾸기, 삭제하십시오 (물론 디렉토리에 쓰기 비트가 설정되어 있어야합니다).
재미있는 경우 1 : 디렉토리에 대한 쓰기 + 실행 권한이있는 경우 해당 항목에 대한 쓰기 권한이없는 경우에도 해당 항목에 {delete, rename}있는 항목을 삭제할 수 있습니다. (이를 방지하기 위해 끈적 끈적한 비트를 사용하십시오)
흥미로운 경우 2 : 디렉토리에 대한 실행 (쓰기는 아님) 권한이 있고 그 안에있는 파일에 대한 쓰기 권한이 있으면 파일을 목록에서 제거하기 때문에 파일을 삭제할 수 없습니다. 그러나 텍스트 파일 인 경우 vi를 사용하여 내용을 지우고 모든 내용을 삭제할 수 있습니다. 파일은 여전히 존재하지만 비어 있습니다.
요약:
비트 읽기 = 목록에서 이름을 읽을 수 있습니다.
쓰기 비트 = 실행 비트가 설정된 경우 목록에서 {add, rename, delete} 이름을 사용할 수 있습니다.
비트 실행 =이 디렉토리를 작업 디렉토리로 만들 수 있습니다.
추신 : Kusalananda가 언급 한 기사는 잘 읽었습니다.