2016-11-13 2 views
3

디렉토리에 대한 쓰기 권한으로 인해 해당 사용자가 해당 디렉토리의 파일 create/remove/rename에 액세스 할 수 있다고 말하면서 실제로 그럴 수 있음을 알았습니다. 실행 권한이 없으면 수행 할 수 없습니다. 나는 open/fopen/remove/rename으로 전화를 시도했지만, 예외없이 모두 실패했습니다.쓰기 전용 디렉토리에서 파일을 만들거나 제거하거나 이름을 바꾸려고 시도 할 때 권한이 거부되었습니다.

제가 놓친 것이 있거나 오해 한 것이 있어야합니다. 디렉토리 작업은 일반적으로 파일 작업과 관련된다는 설명이 있습니다. 그것이 맞다면, 나는 어떤 작전이 관련되어 있는지 궁금해. 디렉토리가 파일 이름에서 inode 로의 매핑을 유지한다면 이름을 바꿀 때 파일 조작이 수반 될 이유가없는 것 같습니다.

예기치 않은 파일 작업이 관련된 경우 해당 작업을 거치지 않고 직접 디렉터리를 조작 할 수 있습니까?

답변

0

네가 맞다. 그물은 잘못된 것들로 가득 차있다. 특히 유닉스 파일 허가 규칙에 특히 그렇다. 일반적인 검색 엔진으로 찾은 첫 번째 링크는 모두 잘못되었습니다. 매우 흥미로운!

디렉토리에 어떤 파일 권한을 의미

X 당신이 사용할 수 있다는 뜻이 디렉토리에있는 파일에 "액세스"가. 읽기 권한이 있지만 액세스 권한이없는 경우 알고있는 파일로 작업 할 수는 있지만 볼 수는 없습니다.

mkdir one 
touch one/x.h 
chmod -r one 

ls one // fails! 
cat one/x.h // works! 

이며 쓰기 권한은 디렉토리 내용을 변경하는 데 사용됩니다. 따라서 dir에서 파일을 추가 및 제거하는 것은 해당 dir에 대한 쓰기 권한이있는 경우에만 가능합니다!

액세스 할 수없는 디렉토리 안에있는 파일을 읽거나 쓰거나 실행할 수 없으므로 항상 내부 파일에 대한 작업 권한이 있어야합니다.

조금 이상하게 들리지만 간단하게 구현됩니다.

관련 문제