Tutorial de comandos chattr de Linux para principiantes (5 ejemplos)

Muchas veces, una máquina Linux es utilizada por diferentes usuarios. Por tanto, hay posibilidades de que estos usuarios accedan a un conjunto común de archivos. Esto abre la puerta a problemas como el borrado o la edición accidental de archivos importantes, algo que tú -como administrador- definitivamente no querrías que ocurriera.

Afortunadamente, existe un comando -llamado chattr- que se ha desarrollado para ayudarte específicamente en este tipo de escenarios. En este tutorial, hablaremos de esta herramienta utilizando algunos ejemplos fáciles de entender. Pero antes de hacerlo, vale la pena mencionar que todos los ejemplos aquí han sido probados en Ubuntu 18.04 LTS y Debian 10.

El comando chattr de Linux

Básicamente, el comando chattr se utiliza para cambiar los atributos de los archivos en un sistema de archivos Linux. A continuación se muestra su sintaxis:

chattr [ -RVf ] [ -v version ] [ mode ] files...

Y esto es lo que dice la página man sobre él:

       chattr changes the file attributes on a Linux file system.

       The format of a symbolic mode is +-=[aAcCdDeijsStTu].

       The  operator  '+'  causes  the  selected attributes to be added to the
       existing attributes of the files; '-' causes them to  be  removed;  and
       '=' causes them to be the only attributes that the files have.

       The  letters  'aAcCdDeijsStTu' select the new attributes for the files:
       append only (a), no atime updates (A), compressed (c), no copy on write
       (C), no dump (d), synchronous directory updates (D), extent format (e),
       immutable (i), data journalling (j), secure deletion  (s),  synchronous
       updates  (S),  no tail-merging (t), top of directory hierarchy (T), and
       undeletable (u).

       The following attributes are read-only, and may be listed by  lsattr(1)
       but  not  modified  by  chattr:  compression  error (E), huge file (h),
       indexed directory (I), inline data (N), compression raw access (X), and
       compressed dirty file (Z).

       Not  all  flags  are supported or utilized by all filesystems; refer to
       filesystem-specific man pages such as btrfs(5), ext4(5), and xfs(5) for
       more filesystem-specific details.

A continuación se presentan algunos ejemplos al estilo de las preguntas y respuestas que deberían darte una buena idea de cómo funciona el comando chattr.

Q1. ¿Cómo utilizar el comando chattr?

Supón que quieres hacer que un archivo sea de sólo lectura. Para ello, sólo tienes que ejecutar el comando chattr con la opción +i y el nombre del archivo como entrada.

Por ejemplo:

chattr +i test.txt

La siguiente captura de pantalla muestra que ninguna otra operación tuvo éxito en el archivo una vez que se convirtió en de sólo lectura utilizando chattr.

Cómo utilizar el comando chattr

Nota: Como ya habrás observado, necesitas tener privilegios de root para utilizar el comando chattr.

Q2. ¿Cómo eliminar la restricción de sólo lectura impuesta por chattr?

Es muy sencillo: lo único que tienes que hacer es utilizar la opción -i en lugar de +i. Por ejemplo

chattr -i prueba.txt

Cómo eliminar la restricción de sólo lectura impuesta por chattr

Así puedes ver que el factor de sólo lectura se ha eliminado con la opción -i.

Q3. ¿Cómo dar permiso de sólo lectura a un archivo?

A veces, puede que no quieras una restricción completa sobre un archivo. Lo que quiero decir es que tal vez quieras proporcionar a los usuarios acceso de sólo lectura a un archivo, de modo que se pueda añadir nueva información, pero no se pueda borrar o editar la existente. Esto también es posible utilizando chattr a través de la opción +a.

chattr +a test.txt

Cómo proporcionar un permiso de solo apéndice a un archivo

Por lo tanto, puedes ver que ahora podemos añadir información al archivo, pero no podemos editar la información existente en el archivo, así como borrarlo. Para invertir este comportamiento, basta con utilizar la opción -a.

chattr -a test.txt

Q4. ¿Cómo aplicar una restricción mediante chattr a todos los archivos de un directorio?

Esto se puede hacer utilizando la bandera -R, que te permite cambiar recursivamente los atributos de los directorios y su contenido. Por ejemplo, si quieres hacer que todos los archivos del directorio test-dir sean de sólo lectura, utiliza el comando chattr de la siguiente manera:

chattr -R +i ./test-dir/

La siguiente captura de pantalla muestra que la restricción de sólo lectura se ha aplicado con éxito a todos los archivos del directorio.

Cómo aplicar una restricción mediante chattr a todos los archivos de un directorio

Q5. ¿Cómo comprobar los atributos chattr aplicados a los archivos?

Hasta ahora, para comprobar si un atributo chattr se aplicó con éxito, probamos a realizar operaciones como editar el archivo o borrarlo. Pero existe un comando independiente que te permite ver fácilmente si los atributos se aplicaron o no. El comando en cuestión es lsattr.

lsattr [FILENAME]

Por ejemplo, la siguiente captura de pantalla muestra la salida de lsattr que sugiere claramente que el atributo «i» se aplicó a todos los archivos del directorio.

Cómo comprobar los atributos chattr aplicados a los archivos

Para confirmarlo de nuevo, aquí está la salida después de utilizar la opción -i.

salida después de utilizar la opción -i

Como puedes ver en la captura de pantalla anterior, el atributo de sólo lectura se eliminó de todos los archivos.

Conclusión

Seguramente estarás de acuerdo en que chattr es una herramienta de línea de comandos que debes conocer si eres administrador del sistema, o gestionas usuarios en una máquina Linux en general. Utilizar eficazmente el comando puede ahorrarte muchos problemas. Este artículo debería ser suficiente para que empieces a utilizar el comando. Una vez que hayas practicado los ejemplos que hemos tratado aquí, dirígete a lapágina man de la herramientapara aprender más sobre ella.

También te podría gustar...