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?


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).


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.


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

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.


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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.