Backup de permisos: cómo hacerlo en Linux
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?
(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!
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.