Permesso di rsync negato il backup di una directory remota alla mia macchina locale

Ho l'errore menzionato nel titolo.

Ho trovato questa domanda simile: Esegui rsync con l'authorization di root sulla macchina remota . Questo non risponde alla mia domanda.

Sono l'amministratore del server remoto e voglio utilizzare rsync per eseguire il backup dei file nella mia casella locale. Ecco il mio command rsync:

 $ rsync -avz [email protected]:/var/www/ /backups/Sites/MySite/ 

Funziona soprattutto. L'accesso avviene tramite un keypair. Non posso e non posso usare una password (EDIT: per accedere tramite SSH). Solo alcuni file non verranno trasferiti a causa di autorizzazioni. Non voglio modificare tali autorizzazioni.

Ecco l'errore:

 receiving file list ... done rsync: send_files failed to open "/var/www/webapp/securestuff/install.php": Permission denied (13) 

Non voglio modificare le autorizzazioni di quel file. Esso (e altri come esso) non deve essere leggibile (ad exception della radice).

Questo deve essere eseguito in un lavoro cron e preferisco una semplice soluzione a una row utilizzando solo il command rsync. La prossima scelta sarebbe uno script di shell che posso call dal lavoro cron. In nessun caso potrò accedere manualmente alla macchina remota e diventare radice (perché dormirò quando questo funziona.

Come posso utilizzare rsync per ripristinarlo fino alla mia casella locale?

Non è ansible eseguire il backup di un file che non è ansible leggere in altro modo, quindi le autorizzazioni dovranno essere modificate o sovrascritte per root .

Le opzioni in dettaglio:

  • Sovrascrivere le autorizzazioni direttamente da rsync'ing come [email protected] . (

  • … o configurando sudo sul server per consentire l'esecuzione senza password di rsync sul lato server lato.

     me ALL=(root) NOPASSWD: /usr/bin/rsync --server --sender -vlogDtprze.iLsf . /var/www/ 

    e

     rsync --rsh="ssh [email protected] sudo" -avz /var/www/ /backups/... 
  • Creare un account "sito-backup" dedicato sul server. Modificare le autorizzazioni dei file per renderli leggibili all'account "sito-backup"; è ansible utilizzare ACL e setfacl per questo. Non utilizzare questo account per niente altro.

     rsync -avz [email protected]:/var/www/ /backups/sites/mysite/ 
  • Scrivere uno script sul server che scaricherebbe / var / www / in un tarball crittografato. Di nuovo, questo può essere fatto come root (via crontab) o configurando sudo di non richiedere una password per lo script. Per esempio:

     #!/bin/sh tar c /var/www/ | gpg -e -r [email protected] 

    Il backup sarebbe stato fatto tirando each volta il tarball, che potrebbe risultare inefficiente con siti di grandi size:

     ssh [email protected] "sudo /usr/sbin/dump-website" > /backups/sites/mysite.tar.gpg 

    Il requisito della password verrà rimosso modificando i sudoer :

     me ALL=(root) NOPASSWD: /usr/sbin/dump-website 

Nell'host remoto è ansible eseguire il demone rsync con

radice uid

nel file /etc/rsyncd.conf .

Ciò consentirà al demone di utilizzare la capacità CAP_DAC_OVERRIDE e di leggere il file system locale senza modificare le autorizzazioni / properties;.

Se hai bisogno solo di eseguire un backup, è una buona pratica per impostare la modalità rsync per la lettura solo:

sola lettura = true

Se i file sono leggibili solo da root è necessario disporre dell'accesso root per eseguire il backup del file leggendolo dal file system. rsync sta leggendo i file dal file system non dal dispositivo crudo.

Ad exception dei backup di dump , dd e simili che copiano la partizione piuttosto che i file, i programmi di backup leggere i file dal file system. I programmi di utilità di backup non riescono a leggere e salvare file per i quali le autorizzazioni dell'ID utente utilizzate per eseguirle impediscono l'accesso. Questo è il caso in cui si sta eseguendo.

Nella maggior parte dei casi è necessario affidarsi abbastanza al software di backup per consentirgli di leggere tutti i tuoi dati. Ciò significa anche che devi avere fiducia nel mezzo di backup con tutti i tuoi dati. In alcuni casi è ansible escludere alcuni file dal backup e utilizzare un metodo alternativo per il backup dei loro contenuti.

EDIT: Mentre archiviate i dati (copiando tutte le autorizzazioni), è necessario accedere a entrambi i server. Se lo fai come backup, si consiglia di esaminare una soluzione come BackupPC che utilizza rsync per leggere i file ma memorizza i file nel proprio tree di directory.