Linux: no se puede eliminar el archivo propio con permisos 777

29

Tengo un par de archivos que no puedo eliminar con el rf -Rfcomando. Soy el propietario de esos archivos y el grupo asignado a esos archivos también es un grupo en el que está mi usuario. Lo que es aún más extraño es que puedo editar su contenido y puedo cambiar los permisos para ellos, pero no puedo moverme o borra los.

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

¿Alguien puede decirme qué está pasando?

RaYell
fuente
55
En general, considere usar rm -rf DIRECTORY_NAME y no "*". Te salvará de esa vez en la que pensarás que estás en el directorio / some / where / safe pero estás en / home
Sardathrion - Reinstate Monica el
En realidad lo intenté, solo fueron esos 3 archivos que no pude eliminar, así que simplifiqué un poco el procedimiento para el propósito de esta publicación.
RaYell
No olvide el comando lsattr y chattr ...

Respuestas:

61

Para eliminar un archivo, necesita permiso de escritura en el directorio que contiene este archivo.

Aquí los permisos son dr-xr-xr-x 3 rayell pg1083760 4096 2010-10-10 10:00 .Para que nadie (excepto root) pueda eliminar archivos dentro de este directorio. El propietario debe usar chmodprimero.

-
1. Hay muy buenas razones para eso. Al 'eliminar' un archivo con rm, de hecho está intentando desvincularlo del directorio (las copias enlazadas no se eliminarán).

Stéphane Gimenez
fuente
1

Tuve el mismo problema, y chmodsolo no funcionó. Primero tuve que cambiar el propietario (usuario y grupo) de los archivos que quería eliminar.

sudo chown -hR root:admin dir_to_delete

Explicación:

  • sudo: asegúrese de tener los derechos adecuados
  • chown: Comando de Linux para cambiar el propietario de un archivo
  • -hR: cambia el propietario del directorio y todos los subdirectorios. Lo encontré aquí .
  • root: nombre del nuevo usuario
  • admin: nombre del nuevo grupo

Ya había cambiado los modificadores a 777; No sé si eso fue necesario o no.

atracción física
fuente
Los permisos de los archivos dentro del directorio son irrelevantes, solo los permisos de escritura en el directorio son importantes. Probablemente antes chownno había sido propietario del directorio ni miembro del grupo propietario del directorio.
sgnsajgon
1

Otra posible pregunta es atributo

lsattr file

Este comando le mostrará el atributo del archivo y un archivo con el atributo 'i' no se puede modificar (y eliminar)

así que verifique el atributo de su archivo y elimine el atributo 'i' si se ha establecido el atributo

chattr -i file
LJP-TW
fuente
2
La pregunta muestra que son los permisos de directorio los que no permiten la escritura. No hay necesidad de ver más allá.
Toby Speight
0

La razón es que el directorio padre tiene chmod 705o algo así. Puede chmodel directorio principal con el siguiente comando:

chmod -R 777 directory_name

Después de esto, puede eliminar ese directorio y los archivos que contiene.

Equipo Tomagen
fuente
44
Por favor, no tolere que todos puedan escribir directorios . Ese no es un buen consejo.
Toby Speight
+1 - De acuerdo, no sigas este consejo, es increíble, cómo esto está enyesado en Internet ... La cantidad de inseguridad, causada por las personas que defienden esto es increíble ...
André Figueira