sábado, 2 de julho de 2011

Backup das permissões de arquivos e pastas no Linux

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