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.