# Atributos extendidos en los ficheros de Linux Podemos clasificar los atributos extendidos en los de sistema que son los que proporcionan cualidades al archivo y los de usuario que permiten ampliar la información del archivo. También es aplicable a los directorios. ***Atributos extendidos de sistema*** Los sistemas de archivos *ext2/3/4* permiten asignar a los ficheros unos atributos que modifican las cualidades o el comportamiento de los mismos. No son permisos, pero alguno de ellos realiza una función similar al limitar el poder modificar o eliminar su información. Estos atributos sólo son modificables por el administrador. Para poder ver los atributos usaremos el comando **lsattr**: Los atributos más comunes son: - **a:** sólo *append* (sólo se pueden agregar datos, no modificar los existentes). - **A:** no *atime* (no se mantiene la fecha y hora de acceso). - **d:** no *dump* (se ignora al momento de hacer backups con el programa dump). - **D:** el directorio se sincroniza a disco en cada escritura. - **i:** inmutable (no se puede modificar, sólo renombrar o eliminar). - **S:** el archivo se sincroniza a disco en cada escritura. - **e:** extent, Indica que el archivo está utilizando extents para mapear los bloques en disco. Para modificar un atributo se utiliza el comando **chattr** conjuntamente con *“+\[atributo\]”* o *“-\[atributo\]*” para añadirlo o eliminarlo. Por ejemplo si queremos que no se pueda borrar o modificar el archivo prueba.txt: ```shell chattr +i prueba.txt ``` ***Atributos extendidos de usuario*** Estos atributos no tienen ninguna influencia en los permisos de ficheros, añaden pares de clave-valor a los ficheros. Para poder utilizarlos es necesario haber instalado el paquete *attr* y que el sistema de ficheros haya sido montado con la opción *user\_xattr*. Para añadir o quitar atributos usaremos el comando **attr** con las siguientes opciones: - **-ql**: Lista todos los atributos - **-qs**: Añade/Modifica atributos - **-qg**: Muestra el valor de un atributo - **-qr:** Elimina atributos Por ejemplo añadamos el atributo *“autor”* al archivo *fichero1.txt:* ```shell attr -qs autor -V “Etaboada” fichero1.txt ``` ***Preservar los atributos extendidos*** Debemos tener en cuenta que alguna de las operaciones que se realizan con los ficheros pueden eliminar los atributos extendidos, para evitarlo hay que agregar opciones especificas al comando:
cp | –preserve=mode,ownership,timestamps,xattr |
mv | Los preserva por defecto a excepción de que el destino no permita atributos extendidos |
tar | –xattrs (para creación y extracción) |
bsdtar | -p (para extracción) |
rsync | –xattrs |