LINUX

Comando Chattr en Linux (Establecer bit inmutable)

Chattr (Cambiar atributo) es una utilidad de línea de comandos de Linux que se utiliza para cambiar los atributos del archivo. Puede configurar y desarmar ciertos atributos de un archivo en el sistema Linux para asegurar la eliminación o modificación accidental de archivos y carpetas importantes, aunque haya iniciado sesión como usuario root.

Entonces, usando el comando chattr, hace que el archivo sea inmutable. En otras palabras, significa que se usa para detener la eliminación accidental de archivos y directorios. No puede eliminar los archivos protegidos mediante el atributo chattr aunque tenga permiso completo sobre los archivos.

Esto es muy útil en archivos de sistema como archivos shadow y passwd que contienen toda la información del usuario y contraseñas. Estos atributos solo se pueden configurar en archivos y directorios ubicados en un sistema de archivos ext2, ext3 o ext4.

Sintaxis del comando chattr y uso

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

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

Atributos de archivo que podemos usar con el comando chattr:

  • a – el archivo solo se puede abrir en modo adjuntar para escritura.
  • A – el registro de hora del archivo no se modifica. Esto evita una cierta cantidad de E / S de disco para sistemas portátiles.
  • c – el archivo es comprimido automáticamente en el disco por el kernel. Una lectura de este archivo devuelve datos sin comprimir. Una escritura en este archivo comprime los datos antes de almacenarlos en el disco.
  • C – el archivo no estará sujeto a actualizaciones de copia en escritura. Esta marca solo se admite en sistemas de archivos que realizan copia en escritura. Si la bandera ‘C’ está configurada en un directorio, no tendrá ningún efecto en el directorio.
  • d – el archivo no es candidato para la copia de seguridad cuando se ejecuta el programa de volcado.
  • D – cuando se modifica un directorio, los cambios se escriben sincrónicamente en el disco; esto es equivalente a la opción de montaje ‘dirsync’ aplicada a un subconjunto de los archivos.
  • i – el archivo no se puede modificar, eliminar o renombrar, no se puede crear un enlace a este archivo y no se pueden escribir datos en el archivo. Solo el superusuario puede establecer o borrar este atributo.
  • j – el archivo tiene todos sus datos escritos en el diario ext3 o ext4 antes de escribirse en el archivo mismo,
  • s – si se elimina el archivo, sus bloques se ponen a cero y se vuelven a escribir en el disco.
  • S – si se modifica el archivo, los cambios se escriben sincrónicamente en el disco; esto es equivalente a la opción de montaje ‘sync’ aplicada a un subconjunto de los archivos.
  • t – el archivo no tendrá un fragmento de bloque parcial al final del archivo combinado con otros archivos
  • T – el directorio se considerará como la parte superior de las jerarquías de directorios a los efectos del asignador de bloques de Orlov.
  • u – hace que si se borra un archivo, se guarde su contenido. Esto permite al usuario solicitar su cancelación.

1) Cómo establecer el atributo de archivo (Establecer bit inmutable)

Para establecer un atributo de archivo usaremos el comando chattr con + operador seguido del nombre del atributo.

Veamos con ejemplos cómo establecer un atributo inmutable en un archivo. Solo el root o el usuario con privilegios de sudo pueden establecer y eliminar la bandera inmutable en un archivo.

Un archivo con un atributo inmutable:

  • No se puede modificar, eliminar, renombrar
  • Nadie, incluido el usuario root, puede crear un enlace físico o flexible.
  • No se pueden escribir datos en el archivo

Creemos un archivo vacío usando el comando táctil de la siguiente manera:

$ touch file1

Ahora veamos cómo listar los atributos del archivo usando lsattr mando:

$ lsattr 
-------------e-- ./nagios-cookbook-tutorial
-------------e-- ./chefdk_1.3.40-1_amd64.deb
-------------e-- ./file1

Agregue algo de contenido al archivo usando el comando echo:

$ echo "Test of i attribute" > file1 
$ cat file1 
Test of i attribute

Ahora podemos establecer un atributo inmutable usando +i en el archivo (archivo1).

$ sudo chattr +i file1
$ lsattr 
-------------e-- ./nagios-cookbook-tutorial
-------------e-- ./chefdk_1.3.40-1_amd64.deb
----i--------e-- ./file1

En los siguientes comandos intentaremos agregar, eliminar tanto usando el usuario normal como el usuario sudo (root):

$ echo "Try to edit after set i attribute" >> file1 
-bash: file1: Permission denied
$ sudo echo "Try to edit after set i attribute" >> file1 
-bash: file1: Permission denied
$ rm -f file1 
rm: cannot remove 'file1': Operation not permitted
$ sudo rm -f file1 
rm: cannot remove 'file1': Operation not permitted

Podemos observar que sobre todo no se permiten operaciones.

Nota: Puede proteger archivos importantes como /etc/passwd o /etc/shadow, los protege de una eliminación accidental o manipulación y también deshabilitará la creación de cuentas de usuario. Pero cuando intente crear un nuevo usuario del sistema, recibirá un mensaje de error que dice ‘no se puede abrir / etc / passwd’. Si intenta cambiar la contraseña, se le pedirá que ingrese una nueva contraseña, pero cuando inicie sesión la próxima vez, la nueva contraseña no parecerá válida, tendrá que usar la contraseña anterior para iniciar sesión.

2) Cómo eliminar atributos (desarmar) en archivos

Para eliminar cualquier atributo del archivo tenemos que usar - operador seguido del nombre del atributo.

En el siguiente ejemplo, anulemos el atributo inmutable del archivo (archivo1).

$ sudo chattr -i file1 
$ lsattr file1
-------------e-- ./file1

Ahora debería poder realizar todas las operaciones normales en el archivo.

3) Cómo proteger directorios con el atributo ‘i’

Para proteger el directorio, tenemos que establecer el atributo de forma recursiva (-R) usando + operador.

El siguiente comando establecerá el bit inmutable en el directorio (‘linóxido’) de forma recursiva:

$ sudo chattr -R +i linoxide/ 
$ lsattr -d linoxide
----i--------e-- linoxide/

Para desarmar, tienes uso - operador seguido de i atributo.

$ sudo chattr -R -i linoxide/

4) Adjuntar datos en el archivo sin cambiar los datos existentes

Es posible permitir que todos agreguen datos en un archivo sin cambiar o modificar los datos ya ingresados ​​con el a atributo.

Significa que solo puede agregar contenido en el archivo actual sin modificar los datos ya presentes.

Los siguientes ejemplos establecen un atributo adjunto al archivo (archivo2).

$ sudo chattr +a file2

6) Cómo enumerar los atributos de archivo

Para listar archivos o directorios con atributos actuales, tenemos que usar el comando lsattr. El siguiente comando enumerará los atributos de archivo para todos los archivos y carpetas en el directorio actual:

$ lsattr 
-------------e-- ./coreutils-8.22-18.el7.x86_64.rpm
-------------e-- ./pac
-------------e-- ./utils
-------------e-- ./linox

Puede verificar el atributo de archivo de un solo usando el siguiente comando:

$ lsattr coreutils-8.22-18.el7.x86_64.rpm 
-------------e-- coreutils-8.22-18.el7.x86_64.rpm

Para comprobar los atributos de un uso de directorio -d opción

$ lsattr -d test
-------------e-- test/

Conclusión

Ahora sabemos cómo podemos proteger nuestros archivos y carpetas usando el comando chattr en Linux. Espero que haya disfrutado leyendo este tutorial y deje sus sugerencias en la sección de comentarios a continuación. Para obtener más información, consulte hombre chattr.

Publicaciones relacionadas

Deja una respuesta

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

Botón volver arriba
Cerrar