Linux - não é possível remover o arquivo de propriedade com permissões 777


29

Eu tenho alguns arquivos que não consigo remover usando o rf -Rfcomando Eu sou o proprietário desse arquivo e o grupo atribuído a esses arquivos também é um grupo em que meu usuário está. O mais estranho é que eu posso editar o conteúdo deles e alterar as permissões para eles, mas não consigo mover ou exclua-os.

ls -al
total 12
dr-xr-xr-x 3 rayell pg1083760 4096 2010-10-10 10:00 .
drwxr-xr-x 3 rayell pg1083760 4096 2011-09-02 04:33 ..
-rwxrwxrwx 1 rayell pg1083760    0 2011-09-02 06:38 default.settings.php
drwxrwxrwx 2 rayell pg1083760 4096 2011-09-02 04:33 files
-rwxrwxrwx 1 rayell pg1083760    0 2011-09-02 06:38 settings.php


rm -Rf *
rm: cannot remove `default.settings.php': Permission denied
rm: cannot remove directory `files': Permission denied
rm: cannot remove `settings.php': Permission denied

Alguém pode me dizer o que está acontecendo?


5
Em geral, considere usar rm -rf DIRECTORY_NAME e não "*". Ele vai salvá-lo de que uma vez quando você vai pensar a si mesmo no diretório / some / onde / safe, mas são sim em / home
Sardathrion - Reintegrar Monica

Na verdade, eu tentei isso, eram apenas esses 3 arquivos que não consegui remover, então simplifiquei um pouco o procedimento para o objetivo deste post.
RaYell

Não se esqueça do lsattr e comando chattr ...

Respostas:


61

Para remover um arquivo, você precisa de permissão de gravação no diretório que contém este arquivo.

Aqui as permissões são: dr-xr-xr-x 3 rayell pg1083760 4096 2010-10-10 10:00 .Portanto, ninguém (além de root) pode remover arquivos dentro deste diretório. O proprietário deve usar chmodprimeiro.

-
1. Há boas razões bonitas para isso. Ao 'remover' um arquivo rm, você está realmente tentando desvinculá- lo do diretório (as cópias vinculadas não serão excluídas).


1

Eu tive o mesmo problema, e chmodsozinho não fez o truque. Primeiro tive que alterar o proprietário (usuário e grupo) dos arquivos que queria remover.

sudo chown -hR root:admin dir_to_delete

Explicação:

  • sudo: verifique se você possui os direitos adequados
  • chown: Comando Linux para alterar o proprietário de um arquivo
  • -hR: altera o proprietário do diretório e de todos os subdiretórios. Encontrei aqui .
  • root: nome do novo usuário
  • admin: nome do novo grupo

Eu já havia mudado os modificadores para 777; Não sei se isso foi necessário ou não.


Permissões de arquivos no diretório são irrelevantes, apenas a permissão de gravação no próprio diretório é importante. Provavelmente antes de chownvocê não ter sido o proprietário do diretório nem membro do grupo proprietário do diretório.
sgnsajgon

1

Outra questão possível é atributo

lsattr file

Este comando mostra o atributo do arquivo e um arquivo com o atributo 'i' não pode ser modificado (e excluído)

portanto, verifique o atributo do seu arquivo e remova o atributo 'i' se o atributo estiver definido

chattr -i file

2
A pergunta mostra que são as permissões de diretório que não permitem a gravação. Não há necessidade de procurar mais.
Toby Speight

0

O motivo é que o diretório pai possui chmod 705ou algo parecido. Você pode chmodo diretório pai usando o seguinte comando:

chmod -R 777 directory_name

Depois disso, você pode remover esse diretório e os arquivos que ele contém.


4
Por favor, não permita que os diretórios sejam graváveis ​​por todos . Isso não é um bom conselho.
Toby Speight

+1 - Concordo, não seguir este conselho, é incrível, como isso é rebocada por toda a internet ... A quantidade de insegurança, causada por pessoas que defendem isto é incrível ...
André Figueira
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.