Búsqueda de sitios web

5 comandos 'chattr' para hacer archivos importantes INMUTABLES (inmutables) en Linux


chattr (Cambiar atributo) es una utilidad de línea de comandos de Linux que se utiliza para configurar/desarmar ciertos atributos de un archivo en el sistema Linux para asegurar la eliminación o modificación accidental de archivos y carpetas importantes, incluso si está conectado. como usuario root.

En los sistemas de archivos nativos de Linux, es decir, ext2, ext3, ext4, btrfs, etc., se admiten todos los indicadores, aunque no todos los indicadores admitirán todos los FS no nativos. No se puede eliminar ni modificar un archivo/carpeta una vez que se configuran los atributos con el comando chattr, aunque se tengan permisos completos sobre él.

Esto es muy útil para establecer atributos en archivos del sistema como passwd y archivos ocultos que contienen la información del usuario.

Sintaxis de chattr
chattr [operator] [flags] [filename]
Atributos y banderas

A continuación se muestra la lista de atributos comunes y banderas asociadas que se pueden configurar/desarmar usando el comando chattr.

  1. Si se accede a un archivo con el atributo 'A' establecido, su registro de tiempo no se actualiza.
  2. Si un archivo se modifica con el conjunto de atributos 'S', los cambios se actualizan sincrónicamente en el disco.
  3. Un archivo está configurado con el atributo 'a' y solo se puede abrir en modo agregar para escribir.
  4. Un archivo está configurado con el atributo 'i', no se puede modificar (inmutable). Significa que no se puede cambiar el nombre, no se crean enlaces simbólicos, no se ejecuta, no se puede escribir, solo el superusuario puede desactivar el atributo.
  5. Se establece un archivo con el atributo 'j', toda su información se actualiza en el diario ext3 antes de actualizarse en el archivo mismo.
  6. Un archivo se configura con el atributo 't', sin fusión de cola.
  7. Un archivo con el atributo 'd' ya no será candidato para copia de seguridad cuando se ejecute el proceso de volcado.
  8. Cuando se elimina un archivo que tiene el atributo 'u', sus datos se guardan. Esto permite al usuario solicitar su eliminación.
Operador
  1. +: Agrega el atributo al atributo existente de los archivos.
  2. : Elimina el atributo del atributo existente de los archivos.
  3. =: Mantiene los atributos existentes que tienen los archivos.

Aquí, vamos a demostrar algunos de los ejemplos del comando chattr para configurar/desarmar atributos de un archivo y carpetas.

1. Cómo agregar atributos a los archivos para evitar su eliminación

Para fines de demostración, hemos utilizado la carpeta demo y el archivo important_file.conf respectivamente. Antes de configurar atributos, asegúrese de verificar que los archivos existentes tengan atributos configurados usando el comando 'ls -l'. ¿Viste los resultados? Actualmente no hay ningún atributo establecido.

[root@tecmint tecmint]# ls -l
total 0
drwxr-xr-x. 2 root root 6 Aug 31 18:02 demo
-rwxrwxrwx. 1 root root 0 Aug 31 17:42 important_file.conf

Para configurar el atributo, usamos el signo + y para desarmarlo usamos el signo con el comando chattr. Entonces, establezcamos un bit inmutable en los archivos con indicadores +i para evitar que alguien elimine un archivo, incluso un usuario root no tiene permiso para eliminarlo.

[root@tecmint tecmint]# chattr +i demo/
[root@tecmint tecmint]# chattr +i important_file.conf

Nota: El bit inmutable +i solo puede ser configurado por un usuario superusuario (es decir, root) o un usuario con privilegios sudo puede configurarlo .

Después de configurar el bit inmutable, verifiquemos el atributo con el comando 'lsattr'.

[root@tecmint tecmint]# lsattr
----i----------- ./demo
----i----------- ./important_file.conf

Ahora, intenté eliminar a la fuerza, cambiar el nombre o cambiar los permisos, pero no se permite y dice "Operación no permitida".

[root@tecmint tecmint]# rm -rf demo/
rm: cannot remove âdemo/â: Operation not permitted
[root@tecmint tecmint]# mv demo/ demo_alter
mv: cannot move âdemo/â to âdemo_alterâ: Operation not permitted
[root@tecmint tecmint]# chmod 755 important_file.conf
chmod: changing permissions of âimportant_file.confâ: Operation not permitted

2. Cómo desarmar el atributo en Archivos

En el ejemplo anterior, hemos visto cómo establecer un atributo para proteger y evitar que los archivos se eliminen accidentalmente. Aquí, en este ejemplo, veremos cómo restablecer (desarmar atributo) los permisos y permitir que los archivos se puedan cambiar o modificar usando < fuerte>-yo flag.

[root@tecmint tecmint]# chattr -i demo/ important_file.conf

Después de restablecer los permisos, verifique el estado inmutable de los archivos usando el comando 'lsattr'.

[root@tecmint tecmint]# lsattr
---------------- ./demo
---------------- ./important_file.conf

En los resultados anteriores verá que se eliminó el indicador '-i', lo que significa que puede eliminar de forma segura todos los archivos y carpetas que residen en la carpeta tecmint.

[root@tecmint tecmint]# rm -rf *

[root@tecmint tecmint]# ls -l
total 0

3. Cómo proteger los archivos /etc/passwd y /etc/shadow

Establecer un atributo inmutable en los archivos /etc/passwd o /etc/shadow los protege contra una eliminación accidental o manipulación y también deshabilitará la creación de cuentas de usuario.

[root@tecmint tecmint]# chattr +i /etc/passwd
[root@tecmint tecmint]# chattr +i /etc/shadow

Ahora intente crear un nuevo usuario del sistema, recibirá un mensaje de error que dice 'no se puede abrir /etc/passwd'.

[root@tecmint tecmint]# useradd tecmint
useradd: cannot open /etc/passwd

De esta manera, puede establecer permisos inmutables en sus archivos importantes o archivos de configuración del sistema para evitar su eliminación.

4. Agregar datos sin modificar los datos existentes en un archivo

Supongamos que solo desea permitir que todos agreguen datos en un archivo sin cambiar o modificar los datos ya ingresados, puede usar el atributo 'a' de la siguiente manera.

[root@tecmint tecmint]# chattr +a example.txt

[root@tecmint tecmint]# lsattr example.txt
-----a---------- example.txt

Después de configurar el modo de agregar, el archivo se puede abrir para escribir datos solo en el modo de agregar. Puede desarmar el atributo de agregar de la siguiente manera.

[root@tecmint tecmint]# chattr -a example.txt

Ahora intente reemplazar el contenido ya existente en un archivo ejemplo.txt, obtendrá un error que dice "Operación no permitida".

[root@tecmint tecmint]# echo "replace contain on file." > example.txt
-bash: example.txt: Operation not permitted

Ahora intente agregar contenido nuevo en un archivo existente ejemplo.txt y verifíquelo.

[root@tecmint tecmint]# echo "replace contain on file." >> example.txt
[root@tecmint tecmint]# cat example.txt
Here is the example to test 'a' attribute mean append only.
replace contain on file.

5. Cómo proteger directorios

Para proteger todo el directorio y sus archivos, usamos el interruptor '-R' (recursivamente) con el indicador '+i' junto con la ruta completa de la carpeta.

[root@tecmint tecmint]# chattr -R +i myfolder

Después de configurar el atributo recursivamente, intente eliminar la carpeta y sus archivos.

[root@tecmint tecmint]# rm -rf myfolder/
rm: cannot remove 'myfolder/': Operation not permitted

Para anular el permiso, utilizamos el mismo interruptor '-R' (recursivamente) con el indicador '-i' junto con la ruta completa de la carpeta.

[root@tecmint tecmint]# chattr -R -i myfolder

¡Eso es todo! Para saber más sobre los atributos, indicadores y opciones del comando chattr, utilice las páginas de manual.