Один из наших пользователей по ошибке скопировал некоторые системные каталоги (например, /lib) в свой домашний каталог, используя команду cp -r /lib .
, и теперь не может удалить эти каталоги. Команда rm -rf ./lib
возвращает список ошибок с надписью "Permission denied" (по одной для каждого файла, я думаю). Я уверен, что обе команды копирования и удаления используют одно и то же имя пользователя, и между ними не произошло никаких изменений прав доступа.
Я, вероятно, могу удалить эти каталоги, используя привилегии root, но я хотел бы знать, почему это происходит. Это ошибка 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$