Can’t edit a file, even as root : lsattr, chattr. Los atributos.

Pues resulta que intento editar un fichero de mi usuario del sistema operativo, y me dice que el fichero es de “sólo lectura”:
E45: ‘readonly’ option is set (add ! to override).

Y digo, bueno, son los permisos de usuario. Pero por qué, si tengo permisos de lectura, escritura y ejecución:

-rw-r–r– 1 user user 0 Oct 11 14:16 hola

Ok, voy a logarme como root. Y tampoco, mismo error:
E45: ‘readonly’ option is set (add ! to override).

Ahora, ¿qué hago? Son los atributos de los ficheros, no los permisos.

Concretamente el atributo i, que se maneja con los comandos siguientes:

El primer comando, lsattr permite listar los atributos asignados a los ficheros de un sistema de ficheros Linux, mientras que chattr permite modificar dichos atributos. El uso de lsattr no tiene demasiado misterio, ya que únicamente nos servirá para listar atributos, ejemplo:

$ lsattr -a
------------- ./..
------------- ./.bash_history
------------- ./.
------------- ./prueba.txt
------------- ./.bashrc
------------- ./.bash_profile
------------- ./.ssh
------------- ./.bash_logout

En este caso, no hay atributos asignados a los ficheros de la carpeta en la que ejecutamos lsattr. Para comenzar a asignar atributos haremos uso del comando chattr. A continuación vamos a ver mediante ejemplos algunas de las posibilidades que nos ofrece, las letras que pasamos como parámetro simbolizan los atributos a modificar y el (+) o el (-) si lo añadimos o quitamos. Como parámetros opcionales a chattr podemos pasar que el cambio de atributos sea recursivo (R), verbose (V) y suprimir la salida de errores (f).

Asignar el atributo ‘A’ para que cuando se acceda al fichero no se modifique el registro atime. De este modo no quedarán registrada la fecha del último acceso al fichero:

# chattr +A prueba.txt
# lsattr prueba.txt
-------A----- prueba.txt

Asignar el atributo ‘c’ para que el fichero se comprima automáticamente en el disco por el kernel. Cuando se lea el fichero se servirá descomprimido:

# chattr +c prueba.txt
# lsattr prueba.txt
--------c---- prueba.txt

Asignamos el atributo ‘i’ para que el fichero no pueda ser modificado, borrado o renombrado:

# chattr +i prueba.txt
# lsattr prueba.txt
----i-------- prueba.txt

Para quitarlo:

# chattr -i prueba.txt


 

Asignamos el atributo ‘u’ para que cuando el fichero se borre, sus datos permanezcan guardados y permitan al usuario su recuperación:

# chattr +u prueba.txt
# lsattr prueba.txt
-u----------- prueba.txt

Y así podríamos seguir con una gran cantidad de distintos atributos. Como siempre, podéis revisarlos en la página man de chattr. Por supuesto, los atributos se pueden asignar a la vez:

# chattr +uiAc prueba.txt
# lsattr prueba.txt
 -u--i--Ac---- prueba.txt

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *