rsync como outro usuário

rsync como outro usuário

quando executo o comando follow como usuário normal, tudo funciona corretamente:

fabio@myclient:~$ rsync -rv myserver:~/backup /home/fabio/backup/

Funciona sem nenhuma interação do usuário, mas preciso rodar em um script executado como root então tentei:

root@myclient:~# sudo -u fabio rsync -rv myserver:~/backup /home/fabio/backup/

e também tentei:

root@myclient:~# su - fabio -c "rsync -rv myserver:~/backup /home/fabio/backup"

ambos funcionam, mas me pergunte uma "frase secreta para chave", posso evitá-la?

Responder1

A "senha da chave" provavelmente vem do SSH not rsyncou sudo, que solicita a senha para desbloquear sua chave SSH privada.

Como eu realmente não recomendo que você use uma chave sem senha, considere as circunstâncias sob as quais o script é executado como root. O script sempre é executado como root algum tempo depois do login? Você concorda em inserir sua senha uma vez depois de fazer login?

Se for esse o caso, recomendo usar algo comokeychainpara garantir que o agente ssh iniciado como seu usuário seja usado pelo script enquanto está sendo executado como root. Você pode configurar isso para que você só precise inserir a senha uma vez, algum tempo após o login, e quaisquer invocações futuras não exijam interação.

Se este não for o caso, se o script precisar ser executado de forma autônoma, sem qualquer autenticação interativa sua, considere gerar um par de chaves especificamente para o script de backup e, em seguida, restringir o que ele pode fazer, seja autenticando-o como outro usuário no controle remoto. end (ou seja, não fabio, mas, por exemplo, fabio-backup), ou restringi-lo com o command=argumento em seu .authorized_keysarquivo na extremidade remota (embora isso seja um pouco mais complicado, pois requer olhar para a SSH_ORIGINAL_COMMANDvariável de ambiente; vejachaves_autorizadas(5)para detalhes)

Responder2

Sua chave privada ssh é protegida por senha. Quando você o executa manualmente como usuário (logado), ele usa o agente ssh onde você armazenou o keystore da senha uma vez.

No entanto, quando executado de forma autônoma, isso não acontece - afinal, o usuário pode nem estar logado (e, portanto, seu keystore indisponível). Para que funcione sempre, você precisa remover a senha da sua chave privada ssh ( ssh-keygen -pquando estiver logado como usuário fabio- basta pressionar enter para obter a nova senha e ela deverá ser removida).

Nota de segurança secundária: quando a chave privada não é protegida por senha, qualquer pessoa que obtiver acesso à fabioconta também poderá fazer ssh para outros hosts permitindo essa chave, sem primeiro precisar detectar a senha do usuário)

informação relacionada