Recentemente precisei fazer backup das permissões de arquivos e pastas no Linux, pois precisava para caso ocorresse alguma coisa errada nas permissões que eu estava mexendo. Então encontrei dois comandos para resolver isso, um para fazer o backup e outro para restaurar. O legal é que ele preserva tudo, tanto as permissões quanto o dono e o grupo, dessa forma é possível fazer um backup completo deles em um simples arquivo texto e restaurá-los depois.
O comando responsável para o backup é o getfacl e podemos utilizar a seguinte sintaxe:
getfacl -Rp /home/rodrigo/Desktop > /home/rodrigo/permissoes_desktop.txt
A opção -R (maiúsculo) é para fazer backup das permissões recursivamente, ou seja, nas pastas e subpastas. O -p (minúsculo) é para preservar o caminho absoluto, caso contrário ele não colocará a barra inicial ( / ). Nesse caso estamos direcionando para um arquivo.
O arquivo gerado é um arquivo de texto normal, pode até ser utilizado para consultas com um simples cat ou vim. Como exemplo, vou exibir apenas o início do arquivo.
head -n 13 /home/rodrigo/permissoes_desktop.txt
# file: /home/rodrigo/
# owner: rodrigo
# group: rodrigo
user::rwx
group::---
other::---
# file: /home/rodrigo//.bash_logout
# owner: rodrigo
# group: rodrigo
user::rw-
group::r--
other::r--
Para fazer a restauração das permissões, o comando é o setfacl e tem essa estrutura:
setfacl --restore=/home/rodrigo/permissoes_desktop.txt -R
O -R (maiúsculo) faz o mesmo que o do comando anterior, só que no caso trata-se de restauração recursiva. O --restore=/home/rodrigo/permissoes_desktop.txt indica o caminho do arquivo que foi criado e que contém as informações de permissão.
O comando não retorna nenhuma resposta de sucesso, ou seja, se aparentemente nada acontecer, então a restauração funcionou.
Caso queira, pode verificar com o comando ls e ele mostrará as permissões e os donos do arquivo:
ls -l /home/rodrigo/Desktop