¿Por qué no puedo eliminar este archivo como root?

20

Tengo un examen de directorio con 2 archivos. Necesito eliminar archivos pero se deniega el permiso. Incluso el rm -rfcomando no puede eliminar estos archivos. Me conecté como usuario root.

ingrese la descripción de la imagen aquí

Mestizo
fuente
13
(1) Publique el texto de la Terminal como texto si es posible. Lo ideal es copiarlo y pegarlo. Si no tiene forma de capturar el texto, excepto transcribirlo manualmente, hágalo, pero revele que lo está haciendo e incluya la imagen de captura de pantalla para que podamos verificar su escritura. (2) Cuando tenga una pregunta sobre permisos, por favor, siempre, hágalo ls -la, para que podamos ver los permisos en .(el directorio).
G-Man dice 'reinstalar a Mónica'

Respuestas:

39

Desde el usuario root, verifique los atributos de los archivos

# lsattr 

si observa i(inmutable) o a(solo anexar), elimine esos atributos:

# man chattr
# chattr -i [filename]
# chattr -a [filename]
Invocador
fuente
1
Wow, eso fue complicado. Gracias por publicar esta solución; Yo estaba en mi extremo de los ingenios. Estaba bastante seguro de que esto estaba relacionado de alguna manera con mi sincronización al unísono; se dejó en un estado 'desconocido' (debido a muchas razones), y esto significaba que esos directorios que no pude eliminar se configuraron (por unísono) para que solo se agreguen (esto es típico de unísono). ¡Pero no tenía idea de cómo ver / restablecer ese modo de solo agregar! Eras un salvavidas; Espero que el póster original también haya resuelto su problema.
Gwyneth Llewelyn
Este es un salvavidas.
Luka
16

La razón más común para rmquejarse de que no tiene permiso para eliminar un archivo es que los permisos en el directorio le prohíben eliminar el archivo. Para eliminar un archivo, necesita permiso de escritura en el directorio. Los permisos en el archivo son irrelevantes ( rmsin solicitudes -fde confirmación antes de eliminar un archivo de solo lectura, pero eso es solo una confirmación, no una limitación). En algunas variantes de Unix como OSX (pero no Linux), la ACL en un archivo puede evitar su eliminación; ls -laparecería @al final del campo de permiso si hubiera una entrada de ACL en el archivo.

El acceso como root omite los permisos, por lo que root puede eliminar archivos incluso en un directorio de solo lectura.

El resultado de ls -lmuestra .a al final de la columna de permisos. Esto indica que el archivo tiene un contexto de seguridad SELinux. A diferencia de los permisos básicos y ACL, el contexto de seguridad de SELinux en un archivo puede controlar quién puede eliminarlo. Además, la raíz no siempre puede pasar por alto SELinux (es posible tener un proceso ejecutándose como ID de usuario 0 pero con los pocos derechos que elija el diseñador de políticas de SELinux). Para ver qué le permite hacer el contexto SELinux, ejecute ls -lZ . exam_a.

Otra cosa que puede evitar que un archivo se elimine es si él o el directorio que lo contiene tiene el atributo Linux de solo agregar o inmutable . Ejecute lsattr -d . exam_apara ver los atributos de Linux. Si el atributo ao iestá activado, deberá eliminarlo ( chattr -a -i . exam_a) para eliminar el archivo; solo root puede hacer eso. Root no puede omitir estos atributos para eliminar un archivo, los atributos deben desactivarse primero.

Otra cosa que evita que se elimine un archivo es si el sistema de archivos está montado como de solo lectura, pero en ese caso obtendría un mensaje de error diferente.

Gilles 'SO- deja de ser malvado'
fuente