Cómo utilizar el comando Chattr en Linux

El comando chattr (cambiar atributo) en Linux es una potente herramienta utilizada para modificar los atributos de los archivos en un sistema de archivos ext2, ext3 o ext4. Permite a los usuarios establecer ciertos atributos que controlan cómo se puede acceder a los archivos y modificarlos. Por ejemplo, la opción +i puede hacer que un archivo sea inmutable, lo que significa que no puede ser alterado, borrado o renombrado, ni siquiera por el usuario root, hasta que se elimine el atributo inmutable. Otros atributos son +a, que permite abrir un archivo sólo en modo append, y +c, que marca el archivo para su compresión. Este comando es especialmente útil para los administradores del sistema que necesitan aplicar controles de acceso estrictos y proteger los archivos críticos del sistema de cambios accidentales o malintencionados. El comando chattr debe utilizarse con precaución, ya que un uso inadecuado puede restringir el acceso a los archivos de formas no deseadas.

Requisitos previos

  • Un servidor con sistema operativo Linux.
  • Una contraseña de root configurada en el servidor.

Sintaxis básica

A continuación se muestra la sintaxis básica del comando chattr:

chattr [OPTIONS] [OPERATOR][ATTRIBUTES] FILE

A continuación se muestra una breve explicación de cada opción:

  • +: Se utiliza para añadir los atributos específicos al archivo.
  • -: Se utiliza para eliminar los atributos específicos del archivo.
  • =: Se utiliza para establecer los atributos especificados como los únicos atributos.
  • a: Sólo se puede abrir en modo anexar para escribir.
  • A: No se actualiza el registro atime.
  • c: Comprimirá automáticamente el archivo.
  • i: Protegerá el archivo de un borrado accidental.
  • S: Los cambios del archivo se escriben sincrónicamente en el disco.

Proteger un archivo de un borrado accidental

Asegurar los archivos importantes es muy importante para cualquier administrador del sistema. Puedes utilizar el comando chattr para asegurar tu archivo, de forma que ningún usuario pueda borrarlo, renombrarlo o modificarlo.

Para entenderlo mejor, crea un directorio llamado dir1 y un fichero llamado file1 con el siguiente comando:

mkdir dir1
touch file1

A continuación, imprime los atributos de file1 y dir1 con el siguiente comando:

ls -l

Salida:

drwxr-xr-x 2 root root 4096 May  3 11:56 dir1
-rw-r--r-- 1 root root    0 May  3 11:56 file1

A continuación, establece las banderas +i tanto en dir1 como en file1 para impedir que nadie borre un archivo.

chattr +i dir1
chattr +i file1

A continuación, verifica el atributo con el siguiente comando:

ls -l

Salida:

drwxr-xr-x 2 root root 4096 May  3 11:56 dir1
-rw-r--r-- 1 root root    0 May  3 11:56 file1

Ahora, intenta borrar el archivo y el directorio:

rm -rf file1 dir1

Salida:

rm: cannot remove ‘file1’: Operation not permitted
rm: cannot remove ‘dir1’: Operation not permitted

Ahora, intenta renombrar el archivo:

mv file1 file2

Salida:

mv: cannot move ‘file1’ to ‘file2’: Operation not permitted

Ahora, intenta cambiar el permiso del fichero:

chmod 777 file1

Salida:

chmod: changing permissions of ‘file1’: Operation not permitted

Cómo restablecer el atributo de los archivos

También puedes utilizar el comando chattr para restablecer el atributo del archivo que hemos establecido en el paso anterior. Para que cualquiera pueda modificar y borrar el archivo.

Puedes utilizar la bandera -i para eliminar el atributo del archivo y del directorio:

chattr -i file1 dir1

Ahora puedes verificar el estado del archivo y del directorio con el siguiente comando:

lsattr

Salida:

-------------e-- ./dir1
-------------e-- ./file1

Permitir Anexar Datos sin Modificar los Existentes en un Fichero

Si quieres permitir a todos los usuarios que sólo añadan los datos sin modificar o cambiar los datos existentes. Entonces, puedes utilizar la bandera +a en el archivo.

Vamos a crear un nuevo archivo con algún contenido:

echo "Hi How Are You" > newfile.txt

A continuación, establece el atributo +a en el archivo:

chattr +a newfile.txt

Ahora, intenta sustituir el contenido ya existente:

echo "I am replacing" > newfile.txt

Deberías obtener el siguiente error:

bash: newfile.txt: Operation not permitted

Ahora, intenta añadir nuevo contenido a un archivo existente:

echo "This is new content" >> newfile.txt

Ahora, verifica el contenido de un archivo:

cat newfile.txt

Salida:

Hi How Are You
This is new content

Proteger directorios recursivamente

Puedes utilizar la bandera -R con +i para proteger el directorio y los subdirectorios de forma recursiva.

Primero, crea un directorio y subdirectorios con el siguiente comando:

mkdir -p test/dir1/dir2
mkdir -p test/dir3/dir4
mkdir -p test/dir5/dir6

Ahora, protege el directorio de prueba y todos los subdirectorios con el siguiente comando:

chattr -R +i test

Ahora, intenta borrar el directorio de prueba con todos los subdirectorios:

rm -rf test/

Deberías obtener el siguiente error:

rm: cannot remove ‘test/dir1/dir2’: Permission denied
rm: cannot remove ‘test/dir5/dir6’: Permission denied
rm: cannot remove ‘test/dir3/dir4’: Permission denied

Ahora, restablece el atributo del directorio de prueba con el siguiente comando:

chattr -R -i test

Ya puedes borrar el directorio de prueba con todos los subdirectorios.

Conclusión

En la guía anterior, has aprendido a proteger archivos y directorios con el comando chattr. Espero que esto te ayude a proteger tus archivos de configuración importantes.

También te podría gustar...