Utilizzo di rsync con sudo sul computer di destinazione


39

Avendo un problema che rsync non imposta UID e GID come previsto , la mia sensazione è che rsyncdovrebbe essere eseguito come rootsul computer di destinazione.

Non riesco ad accedere come roottramite SSH, poiché è disabilitato per motivi di sicurezza. L'utente sul computer di destinazione è in grado di utilizzare sudo.

È possibile utilizzare rsynccon sudo?

Risposte:


68

Sulla macchina di destinazione

  1. Scopri il percorso per rsync:which rsync
  2. Modifica il /etc/sudoersfile: sudo visudo(vedi anche: devo usare visudo? )
  3. Aggiungi la linea <username> ALL=NOPASSWD:<path to rsync>, dove username è il nome di accesso dell'utente che rsync utilizzerà per accedere. Quell'utente deve essere in grado di usaresudo

Quindi, sulla macchina di origine, specificare che sudo rsyncdeve essere utilizzato:

rsync ... --rsync-path="sudo rsync" ...

Se lo si utilizza senza la NOPASSWDmacchina di destinazione, verrà visualizzato il messaggio

sudo: nessun tty presente e nessun programma askpass specificato


Qual è la modifica a questo che consentirebbe a qualsiasi utente di un gruppo specifico di farlo? Invece di <username> esiste una versione <groupname>?
Brian

3
Grazie, uso solo pki, quindi l'ho usato-e="ssh -i $PRIVATE_KEY_PATH" --rsync-path="sudo rsync"
AL

1
Ovviamente <nomeutente> ora può leggere / scrivere tutto come root usando rsync, localmente e in remoto, quindi la parte relativa al non poter accedere come root a causa di problemi di sicurezza è un po 'discutibile ... perché essenzialmente lo stai facendo ora .
hmn

1
Stai ancora ricevendo l'errore "not tty present ..." dopo aver seguito queste istruzioni? Ero. Assicurandomi che la riga a cui ho aggiunto /etc/sudoersarrivi alla fine del file (o dopo le regole di gruppo che potrebbero influire sullo stesso utente) ho risolto il problema per me.
CPBL

1
Sto usando questa soluzione ma vorrei migliorare la sicurezza limitando gli argomenti che l'utente può passare a rsync sul server di destinazione. In genere limiterei gli arg con cui si può usare <username> ALL=NOPASSWD:<path to rsync> <args>ma non so come sarebbero gli arg quando vengono chiamati in remoto in questo modo. Qualche idea?
Pete Cornell,

3

Puoi fare in modo che il sudo remoto ti chieda la password tramite X-windows. Ecco un modo per farlo:

  1. Assicurati che ssh-askpasssia installato sull'host remoto (e che stai usando X-windows, ovviamente)
  2. Assicurati che questo sia in /etc/sudo.conf:
# Path to askpass helper program
Path askpass /usr/bin/ssh-askpass
  1. Aggiungi queste opzioni a rsync: -e "ssh -X" --rsync-path="sudo -A rsync"

    • ssh -X inoltrerà le informazioni e la porta di X-windows alla sessione remota
    • sudo -A farà sudo usare ssh-askpass per chiederti la password

Funziona su Ubuntu 18; crea /etc/sudo.conf (se non esiste già) sulla destinazione m / c
Snidhi Sofpro

0

La mia soluzione è utilizzare --rsync-path="sudo rsync", se si richiede la password è possibile utilizzare la soluzione alternativa in questo modo:

rsync -avz --stats --rsync-path="echo <SUDOPASS> | sudo -Sv && sudo rsync"  user@192.168.1.2:/ .

Ma questo non è sicuro per inserire una password nella riga di comando.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.