사용자에게 [중복]에 쓸 권한이 없는 파일을 삭제하는 논리

사용자에게 [중복]에 쓸 권한이 없는 파일을 삭제하는 논리

쓰기 권한 없이 홈 디렉토리에 파일을 생성하는 경우:

$ umask 777; touch testfile
$ ls -ln testfile
---------- 1 1000 1000 0 2014-03-21 16:52 testfile
$

..그러면 파일을 쉽게 삭제할 수 있습니다.

$ rm -fv testfile
removed `testfile'
$ 

쓰기 권한이 없는 디렉터리에 쓰기 권한 없이 파일을 생성하면 해당 파일을 삭제할 수 없습니다.

$ ls -lnd /var/
drwxr-xr-x 14 0 0 4096 2014-03-21 17:04 /var/
$ ls -ln /var/testfile
---------- 1 1000 1000 0 2014-03-21 17:04 /var/testfile
$ rm -vf /var/testfile 
rm: cannot remove `/var/testfile': Permission denied
$ 

쓰기 권한이 상위 디렉토리에서 상속된다는 것이 맞습니까? 읽기 및 실행 권한도 마찬가지입니까?

답변1

아니요, 권한은 이런 방식으로 상속되지 않습니다. 이유는 약간 다릅니다. 파일을 삭제하는 것은 파일에 쓰는 것으로 간주되지 않고 디렉터리에 쓰는 것으로 간주됩니다! 그렇기 때문에 파일에 대한 권한이 없어도 파일을 삭제할 수 있습니다.콘텐츠.

전체 파일을 삭제하는 것은 파일을 편집하는 것과 근본적으로 다른 것으로 간주됩니다. 디렉토리 쓰기 권한이 없는 파일에 대해 할 수 있는 최선의 방법은 내용을 비우는 것입니다. 그러나 디렉토리 항목을 삭제할 수는 없습니다.

답변2

파일 삭제 기능은 파일에 대한 실제 권한과 아무 관련이 없습니다. 이 파일이 포함된 디렉터리의 권한입니다.

$ whoami
saml

$ ll -d adir/
drwxrwxr-x. 2 samtest samtest 60 Mar 21 14:35 adir/

$ rm adir/afile 
rm: remove write-protected regular empty file ‘adir/afile’? y
rm: cannot remove ‘adir/afile’: Permission denied

그러나 사용자 samladir.

$ sudo chmod o+w adir/

이제 해당 사용자가 삭제를 시도하면 다음이 적용됩니다 afile.

$ rm adir/afile 
rm: remove write-protected regular empty file ‘adir/afile’? y

$ ll adir/
total 0

따라서 파일 읽기/쓰기/실행 기능은 해당 속성을 통해 파일 자체에 속한다는 점을 기억하십시오. 그러나 디렉터리에서 파일을 삭제하는 기능은 파일이 포함된 디렉터리의 권한에 의해 제어됩니다.

답변3

권한은 상속되지 않습니다. 디렉터리에 들어가면 파일은 모든 권한이나 소유권을 가질 수 있습니다. 예를 들어 두 폴더 깊이의 파일에 대한 전체 권한이 있지만 디렉터리에 들어갈 수 있는 권한은 없을 수 있습니다. 디렉터리에 대한 쓰기 권한은 파일 목록(파일 이동/삭제/생성)을 수정할 수 있지만 파일 내용을 수정하는 것은 다릅니다. 디렉터리에 대한 읽기 권한을 사용하면 파일 목록을 읽을 수 있습니다(run ls). 디렉터리에 대한 실행 권한은 해당 cd디렉터리에 들어갈 수 있다는 의미입니다.

예를 들어, 디렉터리에 대한 "wx" 권한이 있는 경우 파일을 생성하거나 삭제할 수 있고 그 안에 디렉터리를 입력할 수 있지만 해당 내용을 나열할 수는 없습니다(즉, bash의 탭 완성이 작동하지 않음을 의미). 그러나 하위 폴더의 권한이 허용하는 경우 하위 폴더의 내용을 나열할 수 있습니다.

예외는 고정 비트입니다. 고정 비트는 설정 시 비트가 설정된 디렉터리의 파일로 수행할 수 있는 작업을 제한합니다. (chmod 1???, 여기서 ???는 일반 권한(예: 755))이 설정된 경우 권한이 없는 사람은 파일을 삭제할 수 없습니다.소유자쓰기 권한이 있는 경우에도 파일 또는 포함 디렉터리에 대한 권한입니다. 이는 일부 목적에 유용합니다(예: /tmp/디렉토리는 종종 이런 방식으로 표시됩니다. 모든 사람이 디렉토리에 쓸 수 있지만 자신에게 속하지 않은 항목은 건드릴 수 없습니다).

답변4

디렉토리를 "디렉토리"라고 부르는 이유는 다음과 같습니다.정확히실제 디렉토리와 같습니다. 전화 주소록에서 누군가를 제거하려면 그 사람이 아닌 전화 주소록에만 액세스하면 됩니다. (이것은 "폴더"와 동일하지 않습니다. 폴더에서 문서를 삭제하려면 폴더와 문서 모두에 대한 접근 권한이 필요합니다.)

관련 정보