Hoy os voy a contar una anécdota que seguro que os resulta familiar a los que trabajáis como administradores de sistemas. ¿Os ha pasado alguna vez que, por un despiste o un error, habéis borrado los permisos de un sistema Linux y os habéis quedado sin poder acceder a nada? Pues a mí me pasó hace poco y os voy a explicar cómo lo solucioné.
Resulta que estaba haciendo un traspaso de datos en un servidor Debian 10 y, sin querer, ejecuté el comando chmod se ejecuto sobre el raiz, que básicamente le quita todos los permisos a todos los archivos y directorios del sistema. Un desastre, vamos. Me quedé sin poder hacer nada, ni siquiera iniciar sesión como root. Tuvimos que iniciar en modo rescue montar la particion y otorgar permisos nuevamente pero como recuperamos esa estructura de directorios.
Menos mal que tenía otro servidor con el mismo sistema operativo y la misma configuración, y se me ocurrió una forma de restaurar los permisos desde una shell usando el comando getfacl.
El comando getfacl sirve para obtener los permisos de acceso de los archivos y directorios en formato ACL (Access Control List), que es una forma más detallada y flexible de asignar permisos que el tradicional sistema de usuario, grupo y otros. Con la opción -R, el comando recorre recursivamente todo el sistema de archivos y genera un fichero con la información de los permisos de cada elemento.
Lo que hice fue ejecutar el comando getfacl -R / en el servidor bueno y redirigir la salida a un fichero llamado permisos.acl.
getfacl -R . >permissions.facl
Luego, usando ssh, copié ese fichero al servidor malo, donde lo guardé en el directorio /. Después, inicié el servidor malo ejecuté el comando setfacl –restore=/permisos.acl -R /, que restaura los permisos de los archivos y directorios según el fichero generado por getfacl.
Y así fue como conseguí recuperar el acceso al servidor y solucionar el problema. Espero que os haya gustado esta historia y que os sirva de ayuda si alguna vez os pasa algo parecido. Recordad siempre hacer copias de seguridad y tener cuidado con lo que hacéis en la línea de comandos. Hasta la próxima.
os dejo la fuente que siempre se agradece
https://unix.stackexchange.com/questions/189104/back-up-and-restore-file-permissions