Como fazer o rsync usar o sudo

Como fazer o rsync usar o sudo

Eu uso rsyncpara espelhar várias pastas em nosso servidor de failover. No entanto, alguns de nossos arquivos, como miniaturas ou índices de texto completo, são gerados por nossos aplicativos sob o usuário da web (denominado 'nobody') e têm permissões restritivas por padrão.

Além disso, estou fazendo isso por ssh, onde o acesso root está desabilitado, e gostaria de mantê-lo assim, se possível.

Existe alguma maneira razoável de dizer ao rsync para rodar como sudo? Ou devo tentar alterar as permissões do arquivo?

Responder1

você poderia:

  1. crie um novo grupo para dados que devem ser lidos (por rsync), adicione UIDs a esse grupo e/ou altere GIDs em arquivos e diretórios e defina as permissões apropriadas, que permitirão usar o rsync com esse nome de usuário
  2. obtenha a linha de comando exata executada no final do servidor ao usar rsync-over-ssh (dica, use -v várias vezes e lembre-se de retirar o '-v' da linha de comando obtida) e use a autenticação de chave pública SSH forçando isso específico comando (veja FORMATO DE ARQUIVO AUTHORIZED_KEYS em sshd(8))

Com o nº 2, você pode usar rsync sobre ssh para o usuário root e ainda estar seguro (consulte PermitRootLogin no-password em sshd_config(5)), ou melhor ainda, você pode combinar os dois para criar um usuário não privilegiado que só pode ser usado com essa linha de comando rsync específica.

EDIT: enviar dados de autenticação por ssh para obter root (por exemplo, ssh como usuário, sudo com senha de usuário) não é melhor do que fazer ssh diretamente para o usuário root (por meio de chave pública ou por meio de umbomsenha), IMHO.

Responder2

Você pode especificar o que executar como comando rsync remoto --rsync-path- por exemplo, algo assim:

rsync --rsync-path='sudo rsync' --blah --blah /src blah@dest:/dst

Responder3

Você também pode usardaemon rsync. Porém, tenha cuidado, a maneira como descrevi lá torna possível acessar o nome do módulo por qualquer pessoa na máquina que executa o daemon rsync.

Não investiguei isso muito profundamente, mas não consegui criar uma configuração segura baseada em chave pública (e, portanto, sem senha) dessa maneira. Mas pode haver.

informação relacionada