사용자 중 한 명이 실수로 일부 시스템 디렉터리(예: /lib)를 자신의 홈 디렉터리에 복사하는 명령을 사용했는데 cp -r /lib .
, 그 후 해당 디렉터리를 삭제할 수 없었습니다. 이 명령은 rm -rf ./lib
"권한이 거부되었습니다"(파일당 하나씩)라는 오류 목록을 반환합니다. 복사 및 삭제 명령에 동일한 사용자 이름이 사용되었으며 그 사이에 어떤 종류의 권한 변경도 발생하지 않았다고 확신합니다.
아마도 루트 권한으로 이 디렉토리를 삭제할 수도 있겠지만, 왜 이런 일이 발생하는지 알고 싶습니다. 이것은 우리가 사용하고 있는 Centos 6.8의 버그인가요? 아니면 사용자가 자신의 홈 디렉터리에 만든 디렉터리를 삭제할 수 없는 이유는 무엇입니까?
답변1
cp -r
기본 복사 권한 모드. 따라서 /lib
소유자가 쓸 수 없으면 ./lib
쓸 수도 없습니다. 쓰기 불가능한 디렉터리의 내용을 삭제하려는 시도는 해당 디렉터리의 소유자인 경우에도 거부됩니다. 수리 권한을 사용할 수 있습니다 chmod -R u+w ./lib
.
다음은 데모입니다:
barmar@dev:~/test.dir$ mkdir subdir
barmar@dev:~/test.dir$ touch subdir/foo
barmar@dev:~/test.dir$ chmod a-w subdir
barmar@dev:~/test.dir$ cp -r subdir newsubdir
barmar@dev:~/test.dir$ rm -rf newsubdir
rm: cannot remove `newsubdir/foo': Permission denied
barmar@dev:~/test.dir$ chmod a+w newsubdir
barmar@dev:~/test.dir$ rm -rf newsubdir
barmar@dev:~/test.dir$