Permissões do sistema de arquivos: usuário que pode fazer backup de todos os arquivos

3

Estou configurando um trabalho de backup automatizado para alguns computadores na minha rede. Há um servidor que, diariamente, executa um comando rsync para fazer backup de cada um dos outros computadores. Eu gostaria que o usuário executasse a tarefa rsync para poder ler os diretórios pessoais de todos (incluindo arquivos confidenciais, como chaves SSH secretas criptografadas), mas não poder gravar em nenhum lugar do sistema (exceto /tmp ). Eu também gostaria de impedir que usuários normais leiam os diretórios pessoais uns dos outros, especialmente as partes sensíveis.

Meu primeiro pensamento foi criar um grupo que incluísse apenas o usuário de backup. Então eu teria os usuários chgrp de seus arquivos para o grupo de backup. Não sendo membros eles mesmos, eles não seriam capazes de ler os arquivos uns dos outros, mas o usuário de backup poderia ler tudo o que eles queriam fazer backup.

No entanto, os usuários não podem chgrp para um grupo do qual não fazem parte. Não posso adicioná-los ao grupo, pois isso permitiria que os usuários lessem os diretórios pessoais uns dos outros.

Eu tinha considerado dar ao usuário de backup uma entrada NOPASSWD no arquivo sudoers que permitia que ele apenas executasse o comando exato rsync que ele precisa como root, mas isso parece potencialmente desastroso se eu não configurá-lo up right (se houvesse uma maneira de fazer um symlink para /etc/sudoers e obter o comando rsync para usá-lo como destino, por exemplo).

    
por Huckle 06.03.2016 / 05:24

3 respostas

4

TL, DR: execute o backup como root. Não há nada de errado em autorizar o comando preciso rsync via sudo, desde que você revise cuidadosamente os parâmetros; o que estaria errado seria permitir que o chamador especifique parâmetros.

Se você quiser que o usuário de backup possa ler o arquivo, consulte Permitir que um usuário leia os diretórios pessoais de outros usuários A idéia é criar um bindfs vista do sistema de arquivos onde este usuário pode ler tudo.

Mas o nível do arquivo não é o melhor para resolver esse problema específico. O problema com backups feitos por rsync é que eles são inconsistentes: se um usuário alterar file1 então file2 enquanto o backup estiver em andamento, mas o backup atingir file2 antes de file1 , o backup conterá a versão antiga de file2 e a nova versão de file1 . Se file2 for a nova versão de file1 e file1 for removida, isso significa que esse arquivo não aparecerá no backup, o que é claramente ruim.

A solução para esse problema é criar um snapshot do sistema de arquivos e executar o backup a partir dele.

Dependendo da sua tecnologia de instantâneos, pode haver uma maneira de garantir que um usuário possa ler o instantâneo. Caso contrário, monte o instantâneo e use a solução baseada em sistemas de arquivos genéricos. E mesmo se houver, o rsync ainda é problemático, porque se você executá-lo como um usuário comum, ele não poderá fazer backup da propriedade. Portanto, se você estiver fazendo backup de vários diretórios de usuários, precisará para executar o backup como root.

    
por 06.03.2016 / 21:41
1

Outra maneira (um pouco complicada;)) seria fazer uma visualização somente leitura para a partição relacionada (se partições brutas, em seguida, kpartx -r , se lvm (preferido!) um instantâneo lvm, se btrfa / zfs / whatever builtin snapshot sua funcionalidade (também preferencial)) e dê ao usuário de backup direitos de leitura apenas para isso. Em seguida, prepare um minúsculo linux em um kvm que automaticamente faça o backup dessa partição (fornecida por um HDD virtual) para o destino (dada por, por exemplo, pastas compartilhadas p9 se estiver usando qemu / kvm).

    
por 06.03.2016 / 09:04
-2

Existe apenas um usuário, por exemplo, root , que pode ler qualquer arquivo no sistema. Esta é a razão pela qual qualquer software de backup comercial requer que a capacidade raiz seja executada. Há muitas maneiras diferentes de fazer isso, mas se você for usar o rsync, sugiro criar uma conta equivalente à raiz, com o shell configurado para algo como /sbin/nologin ou equivalente e fazer esse usuário executar os comandos rsync em um script , usando cron . Entrar em sudoers tornará a coisa mais complicada do que o necessário e abrirá um novo conjunto de problemas.

    
por 06.03.2016 / 05:31