다른 곳에서 복사한 디렉토리를 삭제할 수 없습니다. centos 6

다른 곳에서 복사한 디렉토리를 삭제할 수 없습니다. centos 6

사용자 중 한 명이 실수로 명령을 사용하여 일부 시스템 디렉터리(예: /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$ 

관련 정보