GNU/Linux >> Tutoriales Linux >  >> 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 establecer y desactivar 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 a través del 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 de usuario y contraseñas. Estos atributos solo se pueden establecer 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 de adición para escribir.
  • A - No se modifica el registro atime del archivo. Esto evita una cierta cantidad de E/S de disco para sistemas portátiles.
  • c - el kernel comprime automáticamente el archivo en el disco. 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. Este indicador solo se admite en sistemas de archivos que realizan copia en escritura. Si el indicador 'C' se establece 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 archivos.
  • i - el archivo no se puede modificar, eliminar o renombrar, no se puede crear ningún 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 'sincronizar' aplicada a un subconjunto de los archivos.
  • t - el archivo no tendrá un fragmento de bloque parcial al final del archivo fusionado 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 elimina un archivo, se guarde su contenido. Esto permite al usuario solicitar su eliminación

1) Cómo configurar 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 sudo pueden establecer y eliminar el indicador inmutable en un archivo.

Un archivo con un atributo inmutable:

  • No se puede modificar, eliminar ni renombrar
  • Nadie, incluido el usuario raíz, puede crear ningún enlace suave o fuerte.
  • No se pueden escribir datos en el archivo

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

$ touch file1

Ahora veamos cómo enumerar los atributos del archivo usando lsattr comando:

$ 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 (raíz):

$ 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 todas las operaciones no están permitidas.

Nota: Puede proteger archivos importantes como /etc/passwd o /etc/shadow , los protege de una eliminación o manipulación accidental y también deshabilitará la creación de cuentas de usuario. Pero cuando intente crear un nuevo usuario del sistema, obtendrá 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 (no establecidos) en archivos

Para eliminar cualquier atributo del archivo, debemos usar - operador seguido del nombre del atributo.

En el siguiente ejemplo, desactivemos 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 asegurar directorios con el atributo 'i'

Para asegurar el directorio, tenemos que establecer el atributo recursivamente (-R) usando + operador.

El siguiente comando establecerá el bit inmutable en el directorio ('linoxide') recursivamente:

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

Para desarmar, debe usar - operador seguido de i atributo.

$ sudo chattr -R -i linoxide/

4) Agregar 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 listar atributos de archivos

Para listar los atributos actuales de archivos o directorios, tenemos que usar el comando lsattr. El siguiente comando mostrará una lista de 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 uno solo usando el siguiente comando:

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

Para verificar los atributos de un directorio, use -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 hayan disfrutado leyendo este tutorial y dejen sus sugerencias en la sección de comentarios a continuación. Para obtener más información, consulte man chattr.


Linux
  1. Comando chattr en Linux con ejemplos

  2. Comando wc de linux

  3. Comando grep de Linux

  4. Ejemplos de comandos ln en Linux

  5. Ejemplos de comandos de archivo en Linux

Comando Gzip en Linux

Comando Desvincular en Linux (Eliminar archivo)

Comando Chmod en Linux (Permisos de archivo)

Comando Gunzip en Linux

Comando Stat en Linux

Comando Chattr en Linux (atributos de archivo)