2012-06-21 13 views
13

Capisco preservare le autorizzazioni per rsync. Tuttavia nel mio caso il mio computer locale non ha l'utente che i file necessitano di sotto per il webserver. Quindi quando rsync ho bisogno che il proprietario e il gruppo siano apache sul server web, ma sii il mio nome utente sul mio computer locale. Eventuali suggerimenti?Come modificare il proprietario per un rsync

Volevo chiarire per spiegare esattamente cosa ho bisogno di fare.

mio personal computer: chiamato 'casa' con l'account utente 'Michael' di server My Web: chiamato 'server' con l'account utente 'a distanza' e l'account utente 'apache'

Situazione attuale: Mio sito è su 'casa' con il proprietario 'michael' e su 'server' con il proprietario 'apache'. 'casa' deve usare l'utente 'michael' e 'server' deve usare l'utente 'apache'

Attività: rsync il mio sito web su 'casa' su 'server' ma ho tutti i proprietari dei file ' apache 'e il gruppo' apache '

Problema: rsync avrà le autorizzazioni, il proprietario e il gruppo; tuttavia, ho bisogno che tutti i file siano proprietari di Apache. So che non presumo che il proprietario metterà il proprietario dell'utente su "server" ma dal momento che quell'utente è "remoto", allora lo usa invece di "apache". Non riesco a rsync con l'utente 'apache' (che sarebbe bello), ma un rischio per la sicurezza che non sono disposto ad aprire.

La mia unica idea su come risolvere: dopo ogni rsync manualmente chown -R e chgrp -R, ma è un sistema enorme e questo richiede molto tempo, soprattutto perché questo è in fase di produzione.

Qualcuno sa come fare?

comando corrente che uso per rsync: "ssh -p22" rsync --progress -rltpDzC --force --delete -e ./ [email protected]:/website

+0

È erano un po 'vaghi su esattamente come stai trasferendo i file - su ssh, sto assumendo? Stai facendo ssh-on al server web e, in tal caso, quale utente? Potresti fornire il comando mentre lo stai eseguendo ora? – Adam

+0

Ho aggiornato la mia domanda per una spiegazione più approfondita. Sì, sto usando ssh to rsync su un server web remoto. –

risposta

11

ci sono hack si potrebbe mettere insieme sulla macchina ricevente per ottenere il diritto di proprietà - eseguire 'chmod -R apache/website' su cron sarebbe un'opzione efficace ma piuttosto kludgey - ma invece, raccomanderei in modo sicuro permettendo rsync-over- ssh-as-apache.

Faresti creare una coppia di chiavi SSH dedicato per questo:

ssh-keygen -f ~/.ssh/apache-rsync 

e poi prendere ~/.ssh/apache-rsync.pub verso il server web, in cui ci si mette in ~ apache/.ssh/authorized_keys e con attenzione specificano il comando consentito, qualcosa come così, tutto su una riga:

command="rsync --server -vlogDtprCz --delete . /website",from="IP.ADDR.OF.SENDER",no-port-forwarding,no-X11-forwarding,no-pty ssh-rsa AAABKEYPUBTEXTsVX9NjIK59wJ+fjDgTQtGwhATsfidQbO6u77dbAjTUmWCZjKAQ/fEFWZGSlqcO2yXXXXXXXXXXVd9DSS1tjE6vAQaRdnMXBggtn4M9rnePD2qlR5QOAUUwhyFPhm6U4VFhRoa3wLvoqCVtCV0cuirB6I45On96OPijOwvAuz3KIE3+W9offomzHsljUMXXXXXXXXXXMoYLywMG/GPrZ8supIDYk57waTQWymUyRohoQqFGMzuDNbq+U0JSRlvLFoVUZ5Piz+gKJwwiFwwAW2iNag/c4Mrb/BVDQAyEQ== [email protected] 

e poi il comando rsync sul computer "casa" sarebbe qualcosa di simile

01.235.
rsync -av --delete -e 'ssh -i ~/.ssh/apache-rsync [email protected]' ./ /website 

Ci sono altri modi per skinare questo gatto, ma questo è il più chiaro e comporta il minor numero di soluzioni alternative, secondo me. Impedisce di ottenere un guscio come Apache, che è il più grande problema di sicurezza, naturalmente. Se sei davvero deadset contro il permettere ssh come apache, ci sono altri modi ... ma è così che l'ho fatto.

Riferimenti qui: http://ramblings.narrabilis.com/using-rsync-with-ssh, http://www.sakana.fr/blog/2008/05/07/securing-automated-rsync-over-ssh/

+0

Grazie. Non sapevo che la sicurezza ssh può essere specifica per determinati comandi. –

7

Ultima versione (almeno 3.1.1) di rsync permette di specificare la "proprietà a distanza":

--usermap=tom:www-data 

Modifiche tom proprietà al www-data (aka PHP/Nginx). Se si utilizza Mac come client, utilizzare brew per eseguire l'aggiornamento all'ultima versione. E sul tuo server, scarica i sorgenti di archivio, quindi "crea"!

+0

Grazie! Lo controllerò. –

28

Se si ha accesso a v.3.1.0 rsync o successiva, utilizzare l'opzione --chown:

rsync -og --chown=apache:apache [src] [dst] 

Più informazioni in una risposta da una domanda simile qui: ServerFault: Rsync command issues, owner and group permissions doesn´t change

+0

Impossibile unire cross-site, David: grazie per il collegamento incrociato. – Shog9

+1

sembra che sia client ** che server ** dovrebbero essere in esecuzione 3.1.0+ per usare '--chown'. – Jacket

+0

grazie! aggiornato rsync con homebrew sulla mia macchina locale e questo ha funzionato come un fascino – OregonTrail

Problemi correlati