Muchas veces, una máquina Linux es utilizada por diferentes usuarios. Entonces, hay posibilidades de que estos usuarios accedan a un conjunto común de archivos. Esto abre la puerta a problemas como la eliminación accidental o la edición de archivos importantes, algo que usted, como administrador, definitivamente no desearía que sucediera.
Afortunadamente, existe un comando llamado chattr - que está desarrollado para ayudarte específicamente en este tipo de escenarios. En este tutorial, discutiremos esta herramienta usando algunos ejemplos fáciles de entender. Pero antes de hacerlo, vale la pena mencionar que todos los ejemplos aquí se han probado en Ubuntu 18.04 LTS y Debian 10.
El comando chattr de Linux
Básicamente, el comando chattr se usa para cambiar los atributos de los archivos en un sistema de archivos de Linux. La siguiente es su sintaxis:
chattr [ -RVf ] [ -v version ] [ mode ] files...
Y esto es lo que dice la página del manual al respecto:
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.
Los siguientes son algunos ejemplos de preguntas y respuestas que le darán una buena idea de cómo funciona el comando chattr.
P1. ¿Cómo usar el comando chattr?
Suponga que desea hacer un archivo de solo lectura. Así que todo lo que tiene que hacer es 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 fue exitosa en el archivo una vez que se convirtió en solo lectura usando chattr.
Nota :Como ya habrás observado, necesitas tener privilegios de root para usar el comando chattr.
P2. ¿Cómo eliminar la restricción de solo lectura impuesta por chattr?
Esto es simple:todo lo que tiene que hacer es usar la opción -i en lugar de +i. Por ejemplo:
chattr -i prueba.txt
Entonces puede ver que el factor de solo lectura se eliminó con la opción -i.
Q3. ¿Cómo otorgar permiso de solo agregar a un archivo?
A veces, es posible que no desee una restricción completa en un archivo. Lo que quiero decir es que es posible que desee proporcionar a los usuarios acceso de solo anexar a un archivo, de modo que se pueda agregar nueva información, pero la información existente no se puede eliminar ni editar. Esto también es posible usando chattr a través de la opción +a.
chattr +a test.txt
Entonces puede ver que podríamos agregar al archivo ahora, pero no pudimos editar la información existente en el archivo ni eliminar el archivo. Para revertir este comportamiento, simplemente use la opción -a.
chattr -a test.txt
P4. ¿Cómo aplicar una restricción usando chattr a todos los archivos en un directorio?
Esto se puede hacer usando la bandera -R, que le permite cambiar recursivamente los atributos de los directorios y sus contenidos. Por ejemplo, si desea hacer que todos los archivos estén dentro de test-dir directorio como de solo lectura, use el comando chattr de la siguiente manera:
chattr -R +i ./test-dir/
La siguiente captura de pantalla muestra que la restricción de solo lectura se aplicó con éxito a todos los archivos dentro del directorio.
P5. ¿Cómo verificar los atributos de chattr aplicados en los archivos?
Hasta ahora, para verificar si un atributo chattr se aplicó con éxito, intentamos realizar operaciones como editar el archivo o eliminarlo. Pero hay un comando separado que le 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 el resultado de lsattr, lo que sugiere claramente que el atributo 'i' se aplicó a todos los archivos del directorio.
Solo para reconfirmar, aquí está el resultado después de usar la opción -i.
Como puede ver en la captura de pantalla anterior, el atributo de solo lectura se eliminó de todos los archivos.
Conclusión
Probablemente estará de acuerdo en que chattr es una herramienta de línea de comandos que debe conocer si es un administrador del sistema o administra usuarios en una máquina Linux en general. El uso efectivo del comando puede ahorrarle muchas molestias. Este artículo debería ser suficiente para comenzar con el comando. Una vez que haya practicado los ejemplos que hemos discutido aquí, diríjase a la página de manual de la herramienta para obtener más información al respecto.