rsync Autorizzazione negata durante il backup di una directory remota sul mio computer locale


11

Ricevo l'errore menzionato nel titolo.

Ho trovato questa domanda simile: Esegui rsync con il permesso di root sul computer remoto . Questo non risponde alla mia domanda.

Sono l'amministratore del server remoto e desidero utilizzarlo rsyncper eseguire il backup dei file nella mia casella locale. Ecco il mio comando rsync:

$ rsync -avz me@myserver.com:/var/www/ /backups/Sites/MySite/

Funziona principalmente. Il login avviene tramite una coppia di chiavi. Non utilizzo e non posso usare una password (EDIT: per accedere tramite SSH). Solo pochi file non verranno trasferiti a causa delle autorizzazioni. Non voglio cambiare quelle autorizzazioni.

Ecco l'errore:

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

Io non voglio cambiare i permessi su quel file. Non dovrebbe essere leggibile (e piace ad altri) (tranne che per root).

Questo deve essere eseguito in un processo cron e preferisco una semplice soluzione a una riga usando solo il comando rsync. La prossima scelta sarebbe uno script di shell che posso chiamare dal cron job. In nessun caso posso accedere manualmente al computer remoto e diventare root (perché dormirò quando verrà eseguito.

Come posso usare rsync per eseguire il backup nella mia casella locale?


puoi per favore mostrarci qualcosa come ssh me@myserver.com "cat /var/www/webapp/securestuff/install.php"> localfile?
Florenz Kley

@Florenz Kley: non capisco il tuo commento
MountainX

mostrami che puoi leggere il file e ti mostro un comando rsync che funziona :-). L'opzione n. 2 di Grawity è probabilmente la soluzione migliore.
Florenz Kley

@Florenz Kley: ssh me@myserver.com "echo mypassword | sudo -S cat /var/www/webapp/securestuff/install.php"> localfile
MountainX

Ho capito rsync: send_files failed to open "/cygdrive/...": Permission denied (13). Quindi il mio computer di origine era cygwin di Windows. Situazione leggermente diversa, ma per i posteri, la mia soluzione era fare clic con il pulsante destro del mouse su cmd.exe ed eseguire come amministratore .
Bob Stein,

Risposte:


8

Non è possibile eseguire il backup di un file che non è possibile leggere diversamente, quindi le autorizzazioni dovranno essere modificate o sostituite dalla radice .

Le tue opzioni in modo più dettagliato:

  • Sostituisci le autorizzazioni rsync'ing come root@myserver.comdirettamente. (

  • ... o configurando sudo sul server per consentire l'esecuzione senza password del rsynccomponente lato server.

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

    e

    rsync --rsh="ssh me@myserver.com sudo" -avz /var/www/ /backups/...
    
  • Creare un account "backup sito Web" dedicato sul server. Modificare le autorizzazioni dei file per renderle leggibili all'account "backup del sito Web"; puoi usare ACL e setfaclper quello. Non utilizzare questo account per nient'altro.

    rsync -avz website-backup@myserver.com:/var/www/ /backups/sites/mysite/
    
  • Scrivi uno script sul server che scarichi / var / www / in un tarball crittografato. Ancora una volta, questo può essere fatto come root (tramite crontab) o configurando sudo per non richiedere una password per quello script. Per esempio:

    #!/bin/sh
    tar c /var/www/ | gpg -e -r mountainx@example.com
    

    Il backup verrebbe eseguito tirando l'intero tarball ogni volta, il che potrebbe essere inefficiente con siti di grandi dimensioni:

    ssh me@myserver.com "sudo /usr/sbin/dump-website" > /backups/sites/mysite.tar.gpg
    

    Il requisito della password verrebbe rimosso modificando i sudoer :

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

Grazie. Buoni suggerimenti. O uno probabilmente funzionerà per me. Sto anche considerando di utilizzare la soluzione su superuser.com/questions/270911/… se riesco a capire i suoi potenziali effetti collaterali.
MountainX

A proposito, intendevo una delle ultime 2 scelte. L'accesso come root tramite SSH non è consentito sul server.
MountainX

@MountainX: ho separato "rsync via sudo" come scelta separata. Potrebbe anche funzionare.
user1686

Grazie! "rsync via sudo" sarebbe la mia scelta preferita. Proverò il tuo suggerimento. Sembra che debba implementarlo usando visudo su Ubuntu sul server. Non ho fatto molto casino con visudo, ma mi hai dato abbastanza per iniziare. Grazie ancora.
MountainX

5

Nell'host remoto è possibile eseguire il demone rsync con

uid root

nel /etc/rsyncd.conffile.

Ciò consentirà al demone di utilizzare la CAP_DAC_OVERRIDEfunzionalità e leggere il file system locale senza modificare autorizzazioni / proprietà.

Se hai solo bisogno di fare un backup, è buona norma impostare rsync in modalità di sola lettura:

sola lettura = vero


0

Se i file sono leggibili solo da rootte, devi avere rootaccesso al backup del file leggendolo dal file system. rsyncsta leggendo i file dal file system e non dal dispositivo raw.

Con l'eccezione di dump, dde backup simili che copiare la partizione piuttosto che i programmi di file, backup di leggere i file dal file system. Le utilità di backup non riescono a leggere e eseguire il backup dei file per i quali le autorizzazioni dell'ID utente utilizzato per eseguirli impediscono l'accesso. Questo è il caso in cui ti imbatti.

Nella maggior parte dei casi devi fidarti abbastanza del tuo software di backup da permettergli di leggere tutti i tuoi dati. Questo significa anche che devi fidarti del tuo supporto di backup con tutti i tuoi dati. In alcuni casi potresti voler escludere alcuni file dal backup e utilizzare un metodo alternativo per eseguire il backup dei loro contenuti.

MODIFICA: durante l'archiviazione dei dati (copia di tutte le autorizzazioni) sarà necessario l'accesso root su entrambi i server. Se lo stai facendo come backup, potresti voler cercare una soluzione come BackupPC che utilizza rsync per leggere i file, ma li archivia nella propria struttura di directory.


Esistono modi per fornire l'accesso root a rsync. Semplicemente non li conosco. Quello che sto chiedendo è come dare l'accesso root rsync per il backup di questi file. Forse ho bisogno di rivisitare la risposta a "Esegui rsync con il permesso di root sul computer remoto" e vedere se riesco a capirlo ...
MountainX
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.