Desfazendo o chmod 777

4

Às vezes, em desespero, para testar se meu problema não é o problema de permissão que faço:

sudo chmod -R 777 mydir/

Na maioria dos casos isso não ajuda, e agora eu tenho dois problemas;)

Os arquivos dentro de mydir/ tinham permissões e proprietários diferentes, e agora preciso restaurá-los para o estado original.

Existe alguma maneira inteligente de restaurar recursivamente as permissões, exceto a criação de uma cópia de backup? Por exemplo,

command_to_save_the_permissions_somewhere mydir/
chmod -R 777 mydir/
command_to_restore_the_permissions_from_somewhere mydir/

BTW, alguma dica sobre problemas de permissão de depuração?

    
por takeshin 11.09.2010 / 11:59

1 resposta

4

Há uma maneira fácil de fazer backup e restaurar permissões e propriedades de uma árvore de diretórios usando as ferramentas ACL. Ele funciona mesmo se você não tiver ACLs ativadas no sistema de arquivos.

getfacl -R >saved-permissions
setfacl --restore=saved-permissions

A maioria dos problemas de permissão fará com que uma mensagem de erro "permissão negada" apareça em algum lugar, seja no console ou em algum arquivo de log.

Uma ferramenta poderosa para investigar problemas de acesso a arquivos é strace . Mostra as chamadas do sistema feitas por um processo. A saída pode ser difícil de entender, mas é relativamente fácil ver quais arquivos o programa está tentando acessar e por que ele pode ou não encontrar o que deseja. Exemplos de uso:

strace -s9999 -o myprogram.strace myprogram  # trace myprogram
strace -s9999 -fF ...                        # also trace subprocesses
strace -s9999 -p12345                        # connect to running process by PID
strace -s9999 -efile ...                     # only show filesystem calls
strace -eaccess,open,stat,lstat              # only show common file access calls
    
por 11.09.2010 / 12:52