Conceder permissões de usuário para todos os arquivos e pastas

9

Eu quero ter um usuário que tenha acesso a todos os arquivos e pastas do sistema. Isso é feito com o propósito de usar o RSYNC em uma máquina local para fazer backup de uma máquina remota.

No momento, estamos usando o usuário backups e, embora tenhamos adicionado esse usuário aos grupos, sudo e admin rsync ainda retornam mensagens como:

rsync: opendir "/location/to/folder" failed: Permission denied (13)

rsync: send_files failed to open "/location/to/file": Permission denied (13)

Qualquer ideia de como damos ao usuário backups permissão para acessar tudo (sem adicionar o usuário a todos os grupos) - o servidor remoto que estamos tentando fazer é um servidor de hospedagem dedicado onde cada conta tem seu próprio usuário sistema).

Obrigado por qualquer ajuda.

    
por Thomas Clayson 08.05.2012 / 11:48

3 respostas

6

A adição do usuário backups ao grupo de usuários sudo não fornece automaticamente acesso à conta a todos os arquivos no sistema. Ele concede ao usuário a permissão para executar o comando sudo .

Como você está usando autenticação de chave pública (presumivelmente sem uma frase secreta), eu abordaria isso com segurança e facilidade de implementação em mente. Usar ssh permite restringir o usuário a executar apenas comandos muito específicos. Nesse caso, você pode permitir que o usuário backups execute rsync com permissões de superusuário.

Você já executou a troca de chaves e a autenticação verificada foi bem-sucedida. No arquivo authorized_keys no host remoto do qual você está fazendo o backup do diretório /home , você pode adicionar uma diretiva command= à chave usada pelo usuário backups . Esta diretiva permitirá somente que o comando seja executado quando essa chave é usada para autenticação. Então, o primeiro campo da chave seria semelhante a este:

command="/path/to/sudo /path/to/rsync -az /home /local/folder" ssh-rsa AAAAB3NzaC1yblahblahblah

Você pode ir ainda mais longe e adicionar mais opções à chave, como from=myhost,no-pty,no-X11-forwarding .

Isso deve fornecer segurança decente e não exigir que você modifique as permissões do sistema de arquivos subjacente. Você provavelmente precisará jogar com o comando que você colocou no arquivo authorized_keys até que ele funcione como esperado; Pode demorar um pouco para envolver seu cérebro em torno dele. O comando especificado em authorized_keys basicamente substituirá as opções rsync que você passará do host de conexão.

Muita informação boa em man sshd . Você deseja ler especificamente a seção AUTHORIZED_KEYS FORMAT.

    
por 08.05.2012 / 13:46
2

Uma opção é executar um servidor rsync no sistema remoto.

Basicamente, crie um rsync.conf com uid=root e use rsync -az rsync://domain.com .

Veja link para um exemplo que alguém escreveu e Configurando o daemon rsync para algumas noções básicas de ativação de um servidor no Ubuntu.

Observe que você precisa considerar a segurança disso. Uma abordagem melhor é provavelmente fazer o sistema remoto avançar para o sistema local.

    
por 08.05.2012 / 13:01
1

Você poderia usar o ACL se o sistema de arquivos subjacente o suportar.

Você deve adicionar o backup de grupo na ACL de cada arquivo e diretório. Mas, para ser adicionado automaticamente ao arquivo e diretório recém-criado, você deve primeiro definir a ACL padrão para todos os diretórios existentes. Então, no servidor remoto:

sudo find /home -type d -print0 | xargs -0 setfacl -d -m group:backup:r-x

Então você deve ter permissão de rx para todos os diretórios existentes e ler os arquivos. Você pode fazer isso com 2 comandos (sem o -d desta vez)

sudo setfacl -R -m group:backup:r-- /home
sudo find /home -type d -print0 | xargs -0 setfacl -m group:backup:r-x

Isso lhe dará permissão extra para ler os arquivos para o backup do grupo sem alterar o usuário e o grupo existentes que possuem cada arquivo.

Nota: para acelerar o achado | Comando xargs, você pode adicionar a seguinte opção ao comando xargs: -P n com n o número do processo paralelo. Você pode configurá-lo para o número de cpu que você tem na sua máquina + 1.

    
por 08.05.2012 / 13:18