Não foi possível excluir o arquivo, mesmo quando executado como root


48

Estou no processo de migrar uma máquina do RHEL 4 para 5. Em vez de fazer uma atualização, criamos uma nova VM (ambas as máquinas estão em uma nuvem) e estou no processo de copiar dados entre as duas.

Me deparei com o seguinte arquivo, que preciso remover da nova máquina, mas não consigo, mesmo quando executando como root:

-rw-------  1 2003 2003  219 jan 11 14:22 .bash_history

Esse arquivo está em / home / USER /, onde USER é a conta do cara que construiu a máquina. Ele não tem uma conta na máquina antiga, então estou tentando remover a pasta pessoal para que a nova máquina corresponda à antiga, mas recebo o seguinte erro:

rm: ne peut enlever `.bash_history': Opération non permise

(traduzido do francês: não é possível remover XXX, operação não permitida)

Eu tentei usar o seguinte comando, mas isso não fez diferença:

chattr -i .bash_history

É a única opção para criar um usuário com o ID 2003 ou existe outra maneira de contornar isso?


Editar

Eu tentei usar rm -fe recebo o mesmo erro. Eu recebo o mesmo tipo de erro usando chmod 777primeiro.

Consegui chownacessar a pasta que contém o arquivo que estou tentando excluir, por isso é:

drwx------ 2 root root 1024 jan 24 15:58 USER

Edit2

A execução do lsattrcomando conforme sugerido por Angus deu a seguinte saída:

-----a------- USER/.bash_history
------------- USER/..
------------- USER/.

O arquivo é sinalizado como somente acréscimo - ao alterar esse sinalizador chattr -a .bash_history, foi possível excluir o arquivo.

Respostas:


55

Verifique as permissões do diretório . Para excluir um arquivo dentro dele, ele deve ser gravável por você

chmod ugo+w .

e não imutável ou apenas anexável:

chattr -i -a .

Verifique com ls -lae lsattr -a.


thanks .. Eu tive que executar isso em arquivos * nomeados que didnt se não limpa após yum erase ligamento no Centos 7 mínima
ONXX

Infelizmente, pois /vendor/laracasts/generators/.git/objects/pack/, quando corro chattr -i -a ., recebo chattr: Inappropriate ioctl for device while reading flags on .e não consigo rmo .idxarquivo desagradável que o Composer deixou para trás (porque "Operação não permitida").
Ryan

Ahhh, uma solução alternativa para mim foi sair do meu Laravel Homestead Vagrant VirtualBox de volta para o Windows 10 (ainda usando o Git Bash) e rmos arquivos de lá. Então composer updatefoi capaz de concluir.
Ryan

chattr -i -atrabalhou.
xji

Mesmo depois de usar o Linux por quase 10 anos, continuo aprendendo coisas novas. Nunca ouvi falar sobre o atributo imutável antes!
marlar

9

Eu tive um problema semelhante, mas havia tentado as permissões e o chattr anteriormente sem sucesso. Raiz no terminal. CD ao diretório.

No entanto, o que funcionou para mim foi verificar as permissões do diretório em que o arquivo problemático estava localizado - se estiver bem, continue com:

chmod ugo+w filename

isto falhou - então:

chattr -i -a filename 

que foi aceito - então

chmod ugo+w 

que foi aceito

rm filename

e se foi.

Fedora 25 na estação de trabalho hp.


'chmod ugo + w filename" fez totalmente o truque para mim
Alfishe

1

'sudo' pode executar o comando 'rm' usando o mesmo user.group

NOTA : não tenho certeza se isso também funcionará para IDs como você possui.

Exemplo:

ls /path/to/dir_being_deleted
  drwxrwxrwx 2 nfsnobody nfsnobody   4096 Mar  8 06:55 .
  drwxrwxrwx 7 nfsnobody nfsnobody   4096 Mar  8 06:57 ..
  -rwxrwxrwx 1 nfsnobody nfsnobody      0 Mar  8 06:55 filename.txt

sudo -u nfsnobody -g nfsnobody rm -rf /path/to/dir_being_deleted
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.