Backup de permisos: cómo hacerlo en Linux

Publicado por Diego Córdoba en

Hoy aprenderemos a hacer backup de permisos, o modo/mode, de archivos y directorios en un sistema de archivos bajo GNU/Linux.

¿Cuántas veces hemos hecho < chmod 0777 /ruta/dir -R > por error, y luego no recordamos qué permisos tenían dichos archivos originalmente?tux-acl backup de permisos

(0777 es un ejemplo, espero que NADIE haya hecho eso en un directorio dentro de /var/www :P).

En Linux disponemos de un sistema avanzado de gestión de privilegios, denominado ACL, o listas de control de acceso, por sus siglas en inglés. Si bien no vamos a entrar en detalle del manejo de ACL’s en este artículo (ya hablaremos en otra oportunidad al respecto), las herramientas de gestión de ACL’s nos dan algunas posibilidades extra.

Obteniendo los permisos de un archivo

Todos sabemos que con un simple «ls -l /etc/passwd» obtenemos los permisos, y alguna otra info, del archivo /etc/passwd del sistema. Ahora bien, extraigamos la información de acceso utilizando el comando getfacl de la siguiente forma:

diego@cryptos:~$ getfacl /etc/passwd
getfacl: Removing leading '/' from absolute path names
# file: etc/passwd
# owner: root
# group: root
user::rw-
group::r--
other::r--

Como vemos, tenemos la información de acceso, es decir, nombre del elemento del sistema de archivos, usuario dueño, y grupo al que pertenece, junto con sus permisos nativos dentro del sistema de archivos.

Y con todos los archivos de un directorio?

Simplemente utilizando la opción «-R», para obtener valores en forma recursiva, y además, podemos utilizar la redirección de salida de la línea de comandos para volcar la «base de datos de permisos/modos» en un archivo de texto:

Supongamos que necesitamos backupear los permisos de /var/www/html/misitio, podemos hacer simplemente:

getfacl -pR /var/www/html/misitio > misitio.acl

Restaurando el backup de permisos

Ahora, la hora de restaurar el backup de permisos. Hagamos la prueba, cometamos la locura de poner permisos 777 en /var/www/html/misitio:

sudo chmod 0777 /var/www/html/misitio

Y, antes de que el pánico nos inunde, restauramos los permisos de los archivos en este directorio. Para ello, nos dirigimos al directorio en el que habíamos colgado nuestro backup de acl, y luego:

sudo setfacl –restore=misitio.acl

Con esto, ya tendremos los permisos originales restaurados, uff 🙂

Nota 1: al ser «misitio» un directorio, tenemos que tener cuidado a la hora de utilizar el «autocompletado» de línea de comandos, puesto que si hacemos esto:

sudo chmod 0777 /var/www/html/misitio

Los archivos backupeados tendrán una cabecera similar a esta:

#file: var/www/html/misitio//archivos…

Nota 2: Si alguno notó el «-p» que utilicé en el getfacl, es una opción que no recorta «/» de la ruta absoluta de los archivos en la salida del comando, de modo que será posible restaurar los modos sin necesidad de estar «parados» en el directorio original desde el que se creó el backup.


Videoblog

Aquí una explicación en video en nuestro canal de youtube sobre cómo realizar este tipo de tareas!

Espero les sea de utilidad! Hasta la próxima!


Diego Córdoba

- Ingeniero en Informática - Mg. Teleinformática - Tesis pendiente - Docente universitario - Investigador