Introducción
En Linux, ciertos atributos de archivos y directorios solo se pueden consultar o modificar con comandos específicos. Estos atributos permiten restringir las operaciones con archivos, como impedir la eliminación o modificación, incluso por parte del usuario root. Esta funcionalidad es especialmente útil para proteger archivos y directorios críticos.
En esta guía, trataremos dos comandos esenciales:
chattr: se usa para establecer o quitar atributos de archivo.lsattr: se usa para ver los atributos de archivo.
Estos comandos se usan habitualmente en sistemas de archivos ext2, ext3 y ext4 y son herramientas fundamentales para los administradores de sistemas.
¿Qué es el comando chattr ?
El comando chattr te permite cambiar los atributos de archivo en un sistema de archivos Linux. Usa modos simbólicos para añadir, quitar o establecer atributos específicos. Estos atributos pueden controlar cómo se comportan los archivos, por ejemplo, haciéndolos inmutables o de solo adición.
Características principales de chattr:
- Proteger archivos contra eliminaciones o modificaciones accidentales.
- Restringir las operaciones con archivos, incluso para usuarios root.
- Permitir una gestión de archivos y una seguridad avanzadas.
Documentación oficial de chattr
Para más detalles, consulta la documentación oficial de chattr :
Linux Man Pages – chattr
¿Qué es el comando lsattr ?
El comando lsattr muestra los atributos de archivos y directorios en un sistema de archivos ext2, ext3 o ext4 . Es especialmente útil para solucionar problemas cuando encuentras problemas de acceso a archivos.
Características principales de lsattr:
- Ver los atributos de archivo en un formato fácil de leer.
- Solucionar problemas de acceso y modificación causados por los atributos de archivo.
Documentación oficial de lsattr
Para más detalles, consulta la documentación oficial de lsattr :
Linux Man Pages – lsattr
Sintaxis de los comandos
chattr Sintaxis del comando
chattr [ -RVf ] [ -v version ] [ -p project ] [ + | - | = [attributes] ] files...
Explicación:
-R: cambiar recursivamente los atributos de los directorios y su contenido.-V: mostrar la salida detallada y la versión del programa.-f: suprimir la mayoría de los mensajes de error.-v version: establecer el número de versión/generación del archivo.-p project: establecer el número de proyecto del archivo.+: añadir los atributos especificados.-: quitar los atributos especificados.=: establecer los atributos exactamente como se especifica.attributes: una combinación de indicadores de atributo (por ejemplo,i,a, etc.).files...: archivos o directorios de destino.
Ejemplos:
- Añadir el atributo inmutable:
chattr +i filename - Quitar el atributo de solo adición:
chattr -a filename - Establecer los atributos exactamente (por ejemplo, inmutable y de solo adición):
chattr =ia filename
lsattr Sintaxis del comando
lsattr [ -RVadlpv ] [ files... ]
Explicación:
-R: listar recursivamente los atributos de los directorios y su contenido.-V: mostrar la versión del programa.-a: listar todos los archivos, incluidos los archivos ocultos (los que empiezan por.).-d: listar los directorios como archivos normales, en lugar de listar su contenido.-l: imprimir las opciones con nombres largos en lugar de abreviaturas de una sola letra.-p: listar el número de proyecto del archivo.-v: listar el número de versión/generación del archivo.files...: archivos o directorios de destino.
Ejemplos:
- Mostrar los atributos de un archivo:
lsattr filename - Mostrar los atributos de todos los archivos de un directorio:
lsattr /path/to/directory
Atributos de archivo comunes y sus indicadores
La siguiente tabla resume los atributos de archivo más comunes y sus significados:
| Atributo | Indicador | Descripción |
|---|---|---|
| Solo adición | a | El archivo solo se puede abrir en modo de adición para escritura. |
| Inmutable | i | El archivo no se puede modificar, eliminar ni renombrar. |
| Sin atime | A | La hora de acceso al archivo (atime no se actualiza para reducir la E/S de disco. |
| Sin volcado | d | El archivo se excluye de las copias de seguridad realizadas con el programa dump . |
| Registro de datos | j | Los datos del archivo se escriben en el diario antes de escribirse en el propio archivo. |
| Actualizaciones síncronas | S | Las actualizaciones del archivo se escriben de forma síncrona en el disco. |
| Imborrable | u | Cuando se elimina el archivo, sus datos se guardan para una posible recuperación. |
Para ver la lista completa de atributos, consulta la página de manual de chattr :
Linux Man Pages – chattr
Solución de problemas con chattr y lsattr
Problema: no se puede modificar ni eliminar un archivo
Si encuentras un error como este:
E212: Can't open file for writing
Sigue estos pasos:
- Comprobar los permisos del archivo
Verifica los permisos del archivo con:ls -l filename - Comprobar los atributos del archivo
Usa el comandolsattrpara comprobar si hay atributos que puedan restringir las modificaciones:lsattr filename - Quitar los atributos restrictivos
Si el archivo tiene el atributoi(inmutable) oa(solo adición), quítalo con el comandochattr:chattr -i filename chattr -a filename - Verificar los cambios
Vuelve a ejecutar el comandolsattrpara confirmar que los atributos se han eliminado:lsattr filename
Ejemplo práctico: a Atributo
Escenario:
No puedes modificar ni renombrar el archivo /etc/ssh/known_hosts.
Pasos para resolverlo:
- Comprueba los atributos del archivo:
lsattr /etc/ssh/known_hosts - Si el atributo
aestá establecido, quítalo:chattr -a /etc/ssh/known_hosts - Verifica que el atributo se ha eliminado:
lsattr /etc/ssh/known_hosts - Ahora deberías poder guardar o renombrar el archivo.
Conclusión
El comando chattr y lsattr son herramientas inestimables para gestionar los atributos de archivo en Linux. Proporcionan una capa adicional de protección para archivos y directorios críticos, lo que los hace esenciales para los administradores de sistemas. Tanto si proteges archivos de configuración como si solucionas problemas de acceso a archivos, dominar estos comandos mejorará tu experiencia con Linux.