Um de nossos usuários copiou por engano alguns diretórios do sistema (por exemplo, /lib) para seu diretório inicial, usando o comando cp -r /lib .
, e então ela não pode excluir esses diretórios. O comando rm -rf ./lib
retorna uma lista de erros dizendo "Permissão negada" (um para cada arquivo, eu acho). Tenho certeza de que os comandos copiar e excluir usam o mesmo nome de usuário e nenhuma alteração de permissão de qualquer tipo aconteceu entre eles.
Provavelmente posso excluir esses diretórios usando privilégios de root, mas gostaria de saber por que isso está acontecendo. Isso é um bug do Centos 6.8 que usamos? Ou por que um usuário não pode excluir os diretórios que criou em seu diretório inicial?
Responder1
cp -r
copia modos de permissão por padrão. Portanto, se /lib
não for gravável pelo proprietário, ./lib
também não será gravável. Tentar remover o conteúdo de um diretório não gravável obtém permissão negada, mesmo se você for o proprietário dele. Você pode corrigir as permissões com chmod -R u+w ./lib
.
Aqui está uma demonstração:
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$