GNU/Linux >> Tutoriales Linux >  >> Linux

Ejemplos de comandos chattr para cambiar los atributos de los archivos (hacer que los archivos sean inmutables)

Los archivos también pueden tener atributos que se expresan de otra manera que los permisos que hemos visto hasta ahora. Un ejemplo de esto es hacer que un archivo sea inmutable (una palabra elegante que significa que no se puede cambiar). Un archivo inmutable aún tiene propiedad normal y permisos de grupo y RWX, pero no permitirá que el usuario lo cambie, incluso si contiene el permiso de escritura. Otra característica de esto es que el archivo no se puede renombrar.

En esta publicación, vamos a discutir cómo usar el comando chattr para cambiar los atributos de los archivos en Linux y hacer que los archivos importantes sean inmutables. chattr significa Cambiar atributo. El comando chattr es una herramienta muy útil en Linux y se utiliza para cambiar los atributos de los archivos. Inmutable significa que una vez que configuro el atributo para algún archivo usando el comando chattr, entonces no podrá mover el archivo, eliminar el archivo, crear un enlace del archivo o editar el archivo, incluso si tiene acceso completo a ese archivo. el usuario raíz tampoco puede hacer ningún cambio en ese archivo hasta que se aplique el atributo. puede usar el comando chattr para configurar y desactivar los atributos del archivo. el usuario raíz solo tiene acceso para configurar o desactivar atributos de archivos y directorios usando el comando chattr.

Entonces, echemos un vistazo a algunos ejemplos del comando chattr para cambiar los atributos del archivo:

Establecer el atributo "i" en un archivo

Supongamos que tengo un archivo llamado geek.txt al que todos pueden acceder, lo que significa que cualquier usuario puede venir y eliminar, mover o editar ese archivo. Consulte el resultado a continuación.

# ls -l geek.txt 
-rwxrwxrwx. 1 root root 0 Apr 24 03:59 geek.txt     # Everyone has full access to "geek.txt"
# rm geek.txt    # I am able to delete the file
rm: remove regular empty file `geek.txt'? y

Ahora configuremos el Atributo en el archivo geek.txt usando el comando chattr. Para establecer el atributo, debemos usar el signo "+" y para desactivar el atributo, debemos usar el signo "-".

# chattr +i geek.txt       # Setting Attribute to a file

Donde,
yo – Significa Inmutable.

También puede usar -V opción para verificar la salida detallada al configurar el atributo a un archivo.

# chattr -V +i geek.txt     # Setting attribute to a file with -V
chattr 1.41.12 (17-May-2010)
Flags of geek.txt set as ----i--------e-

Así que le asignamos un atributo al archivo geek.txt. para confirmar lo mismo, puede usar el comando lsattr. Consulte el resultado de muestra a continuación. Verá una i (resaltada en color rojo) en la sección de permisos del archivo.

# lsattr geek.txt    # confirm if attribute set or not
----i--------e- geek.txt

Ahora intentemos eliminar, eliminar, mover y cambiar el permiso del archivo y estoy seguro de que no puede hacer nada de eso.

1. Eliminar el archivo:

# rm geek.txt        # Removing the File
rm: remove regular empty file `geek.txt'? y
rm: cannot remove `geek.txt': Operation not permitted
# You can also try to remove the file forcefully.
# rm -rf geek.txt  # Removing the file forcefully
rm: cannot remove `geek.txt': Operation not permitted

2. Mueva el archivo:

# mv geek.txt test.txt        # Move the file
mv: cannot move `geek.txt' to `test.txt': Operation not permitted

3. Edite el archivo:

# cat >> geek.txt 
bash: geek.txt: Permission denied

4. Cambiar permiso del archivo:

# chmod 755 geek.txt 
chmod: changing permissions of `geek.txt': Operation not permitted

Como puede ver en todos los ejemplos anteriores, no podemos hacer ningún cambio en ese archivo.

Eliminar el atributo -i (inmutable) de los archivos

Para eliminar el atributo "i", use el siguiente comando.

# chattr -i geek.txt    # Unset "i" attribute

Después de eliminar el atributo, verá que la sección de permisos quedará en blanco.

# lsattr geek.txt     
--------------- geek.txt

Hacer un directorio inmutable usando chattr

Ahora intentemos asegurar un directorio cambiando su atributo recursivamente usando el comando chattr. Aquí tengo un directorio llamado datos y todos tienen acceso completo a ese directorio de forma recursiva. Consulte el resultado de muestra a continuación.

# mkdir data
# chmod -R 777 data/
# ls -l
total 4
drwxrwxrwx. 2 root root 4096 Apr 24 04:25 data

Ahora establezca el atributo a ese directorio.

# chattr +i data/
# lsattr 
----i--------e- ./data

También puede establecer el atributo de forma recursiva usando la opción -R con chattr.

# chattr -R +i data/

Después de configurar el atributo en el directorio, ahora intente eliminar, mover o crear un archivo, estoy seguro de que no se le permitirá hacer nada de eso. Consulte el resultado de muestra a continuación.

# rmdir data/        # Deleting the Directory
rmdir: failed to remove `data/': Operation not permitted
# rm -rf data/        # Deletiing the Directory Forcefully
rm: cannot remove `data': Operation not permitted
# mv data/ mydata       # Moving the Directory
mv: cannot move `data/' to `mydata': Operation not permitted
# cd data/
# cat > test.txt       # Creating a File in the directory
bash: test.txt: Permission denied

¿Dónde podemos hacer uso del comando chattr?

Tomemos un ejemplo:como administrador de Linux, obviamente, no desea que nadie acceda a sus archivos de configuración, realice cambios en ningún archivo, elimine ningún archivo de configuración o haga un mal uso de él. Es su responsabilidad asegurarlo y mantenerlo a salvo de las manos equivocadas que no tienen la autorización para acceder a él. Podemos asegurar todas nuestras cosas de configuración usando el comando chattr.

En Linux, todos los archivos de configuración se almacenan en el directorio /etc. Si establecemos el atributo en el directorio /etc, entonces no podrá acceder a ninguna de sus configuraciones. Así que hagámoslo.

# chattr +i /etc/     # Setting attribute to /etc directory

Ahora intentemos hacer algunas tareas:

Ejemplos:1 Crear un grupo

# groupadd g5
groupadd: cannot lock /etc/group; try again later.

Ejemplo:2 Establecer contraseña para cualquier usuario

# passwd michelle
Changing password for user michelle.
New password: 
Retype new password: 
passwd: Authentication token manipulation error

Ejemplo:3 Crear un nuevo usuario

# useradd thegeekdiary
useradd: cannot lock /etc/passwd; try again later.

Como puede ver arriba, no podemos realizar algunas tareas como crear un nuevo usuario, establecer una contraseña para cualquier usuario, crear un nuevo grupo. no podemos hacer todas estas tareas porque cuando creamos un nuevo usuario o establecemos una contraseña para cualquier usuario, actualiza el archivo /etc/passwd y el archivo /etc/shadow, lo cual no es posible aquí ya que configuramos el atributo para el directorio /etc completo.

Nota :Aquí configuro los atributos para completar el directorio /etc solo para explicarlo como un ejemplo. Pero puede establecer atributos de archivo según sus necesidades, por ejemplo, si solo desea controlar la administración de usuarios y grupos, entonces no necesita establecer atributos para el directorio /etc completo, puede configurar solo para /etc/passwd y /etc/shadow y para los grupos establezca el atributo para /etc/group. Si desea controlar la tabla del sistema de archivos, establezca el atributo para /etc/fstab y así sucesivamente.

Ahora tomemos otro ejemplo y desmontemos un sistema de archivos. Consulte el resultado de muestra a continuación.

Ejemplo:4 Desmontar un sistema de archivos

# umount /media/       # Unmounting a File System
can't create lock file /etc/mtab~2762: Permission denied (use -n flag to override)

Tampoco podemos desmontar un sistema de archivos. Para realizar todas las tareas anteriores, tenemos que desactivar los atributos que hemos aplicado para el directorio /etc.

Desactivar atributo usando el comando chattr

Podemos desactivar el atributo usando el comando chattr con la opción -i.

# chattr -Vi /etc/         # Removing Attributes from directory
chattr 1.41.12 (17-May-2010)
Flags of /etc/ set as ----------I--e-

Permitir agregar un archivo usando el comando chattr

Puede permitir que un archivo agregue datos usando el comando chattr con la opción +a. Al aplicar este atributo, solo se le permite escribir datos en ese archivo y no se le permite eliminarlo ni moverlo.

Aquí estoy permitiendo a los usuarios agregar datos en el archivo geekdiary.txt.

# chattr +a thegeekdiary.txt         # Setting +a Attribute

Para verificar el atributo aplicado, use el siguiente comando. Notarás una sección de permiso.

# lsattr thegeekdiary.txt 
-----a-------e- thegeekdiary.txt

Como puede ver a continuación, podemos ver el contenido del archivo.

# cat thegeekdiary.txt 
Welcome to thegeekdiary.com

Ahora intentemos agregar algunos datos en el archivo.

# cat >> thegeekdiary.txt      # Writing some data
Here you will get Linux Tutorials

# Ahora confirme lo mismo usando el comando cat

# cat thegeekdiary.txt 
Welcome to thegeekdiary.com
Here you will get Linux Tutorials

Entonces podemos agregar datos con éxito en thegeekdiary.txt. Ahora intentemos eliminar el archivo.

# rm thegeekdiary.txt        # Deleting the File
rm: remove regular file `thegeekdiary.txt'? y
rm: cannot remove `thegeekdiary.txt': Operation not permitted
# rm -rf thegeekdiary.txt        # Deleting the File Forcefully
rm: cannot remove `thegeekdiary.txt': Operation not permitted

Para obtener más información sobre el comando chattr, puede usar los siguientes comandos en su sistema Linux.

# man chattr
# man lsattr

Eche un vistazo a algunas opciones útiles del comando chattr:

  • +yo – Un archivo con el atributo +i no se puede eliminar, mover, renombrar. en resumen, no se puede modificar.
  • -yo – Esta opción permite eliminar el atributo i del archivo.
  • -V – Para ver la salida Verbose
  • -a – El uso de este atributo solo permitirá agregar datos en un archivo y no se puede eliminar ni mover.


Linux
  1. Comando Chattr en Linux (establecer bit inmutable)

  2. 5 ejemplos de comandos Wget para descargar archivos en Linux.

  3. 11 ejemplos de comandos diff3 de Linux (comparar 3 archivos línea por línea)

  4. 7 ejemplos de comandos de parches para aplicar archivos de parches de diferencias en Linux

  5. Ejemplos de comandos de archivo en Linux

Comando Chattr en Linux (atributos de archivo)

Comando lsof en Linux (10 ejemplos)

Comando táctil en Linux (5 ejemplos)

Comando WC de Linux con ejemplos

Comando Stat:mostrar atributos de archivos y directorios

Comando make de Linux con ejemplos