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

0

Um de nossos usuários copiou por engano alguns diretórios do sistema (por exemplo, / lib) para o diretório inicial dela, usando o comando cp -r /lib . , e 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 copy e delete usam o mesmo nome de usuário, e nenhuma alteração de permissão aconteceu entre eles.

Eu provavelmente posso excluir esses diretórios usando o privilégio 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 pessoal?

    
por Luke 01.11.2016 / 20:54

1 resposta

2

cp -r copia os modos de permissão por padrão. Portanto, se /lib não foi 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$ 
    
por 01.11.2016 / 21:06