Respuestas:
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]
La razón más común para rm
quejarse 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 ( rm
sin solicitudes -f
de 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 -l
aparecerí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 -l
muestra .
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_a
para ver los atributos de Linux. Si el atributo a
o i
está 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.
ls -la
, para que podamos ver los permisos en.
(el directorio).