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.

tux-acl backup de permisos

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

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

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 (nótese la «/» al final):

sudo getfacl -pR var/www/html/misitio/

Los archivos backupeados tendrán una cabecera similar a esta (nótese las dos barras «//» luego del directorio)

#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 la primer barra «/» 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, se crea el backup utilizando las rutas absolutas para los archivos.


Backup de permisos en el vlog

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!


¿Preguntas? ¿Comentarios?

Si tenés dudas, o querés dejarnos tus comentarios y consultas, sumate al grupo de Telegram de la comunidad JuncoTIC!
¡Te esperamos!


Diego Córdoba

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

3 comentarios

Javier · 25 abril, 2016 a las 13:07

muy bueno y muy útil!!

Pablo · 25 abril, 2016 a las 16:00

Excelente info Diego, gracias!

Diego Córdoba · 25 abril, 2016 a las 22:24

Gracias a ustedes!! Me alegro que les sirva! 🙂 🙂

Los comentarios están cerrados.