Não é possível excluir diretórios copiados de outro lugar centos 6

Não é possível excluir diretórios copiados de outro lugar centos 6

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 ./libretorna 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 -rcopia modos de permissão por padrão. Portanto, se /libnão for gravável pelo proprietário, ./libtambé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$ 

informação relacionada