I problemi di comando Rsync, le autorizzazioni del proprietario e del gruppo non cambiano


28

Sto cercando di impostare il proprietario e il gruppo tramite rsynce non sembra funzionare.

Questo è il comando:

sudo rsync -rlptDvz --owner=cmsseren --group=cmsseren /home/serena/public_html/ -e ssh root@ip:/home/cmsseren/public_html2/

I file si sincronizzano correttamente ma non sembrano cambiare il proprietario e il gruppo.

Risposte:


14

Sembra che funzioni correttamente. Utilizzare --ownere --groupper conservare (non impostare) i nomi del proprietario e del gruppo ... il che significa che non si desidera che cambino dopo il trasferimento.

Se non si utilizzano queste opzioni, l'utente e il gruppo verranno cambiati in invocazione dell'utente alla fine della ricezione. Se vuoi specificare qualche altro utente, dovrai aggiungere un chowncomando al tuo script.

-o, --owner
    This option causes rsync to set the owner of the destination file to be 
    the same as  the source file, but only if the receiving rsync is being run 
    as the super-user (see also the --super and --fake-super options). Without 
    this option, the owner of new and/or transferred files are set to the invoking 
    user on the receiving side...

-g, --group
    This option causes rsync to set the group of the destination file to be the same as 
    the source file. If the receiving program is not running as the super-user (or if
    --no-super was specified), only groups that the invoking user on the receiving side
    is a member of will be preserved. Without this option, the group is set to the default
    group of the invoking user on the receiving side...

man rsync


1
Quindi, come posso chown utente e gruppo in remoto? Via SSH? Potresti dirmi come? Ho accesso root per entrambi i server. Non voglio usare i tasti ssh, ma dimmi tutte le opzioni che conosci, lo apprezzerò. Grazie per la rapida risposta
Arnoldo Bazaldua il

Il comando sarebbe simile al seguente: ssh root@ip 'chown -R cmsseren:cmsseren /home/serena/public_html2/*'
user3150166

L'ho provato, ma non ha funzionato, i proprietari e gli utenti sono uguali. Dopo aver
eseguito

Funziona ora, problemi di firewall. Ora devo solo automatizzare l'immissione della password per ssh e rsync
Arnoldo Bazaldua,

Pubblicherò questo in altra domanda, grazie per il vostro aiuto
Arnoldo Bazaldua,

61

La versione 3.1.0 di rsync ha introdotto --usermape --groupmapmenzionato da Thomas, ma anche l'opzione di convenienza --chown, che funziona bene per il tuo scenario.

--chown=USER:GROUP
    This option forces all files to be owned by USER with group GROUP.
    This  is  a  simpler  interface  than  using  --usermap  and  --groupmap directly,
    but  it  is implemented using those options internally, so you cannot mix them.
    If either the USER or GROUP is empty, no mapping for the omitted user/group will
    occur.  If GROUP is empty, the trailing colon may be omitted, but if USER is
    empty, a leading colon must  be supplied.

    If you specify "--chown=foo:bar, this is exactly the same as specifying
    "--usermap=*:foo --groupmap=*:bar", only easier.

Inoltre, sono richieste le opzioni -oe -g. Escludendoli non verrà aggiornato il rispettivo attributo, ma non verrà prodotto alcun errore.

rsync -og --chown=cmsseren:cmsseren [src] [dest]

Questo è menzionato indirettamente nella manpage , in cui si afferma che l' --chownopzione "è implementata usando --usermape --groupmapinternamente", e:

Affinché l' --usermapopzione abbia effetto, l' opzione -o( --owner) deve essere utilizzata (o implicita) e il ricevitore dovrà essere in esecuzione come superutente (vedere anche l' --fake-superopzione).

Affinché l' --groupmapopzione abbia effetto, l' opzione -g( --groups) deve essere utilizzata (o implicita) e il destinatario dovrà disporre delle autorizzazioni per impostare quel gruppo.


5
Perché sono richiesti -og? Mi sembra illogico ma è richiesto anche sul mio sistema.
Yai0Phah,

4
@FrankScience D'accordo, sembra illogico. La stessa domanda è stata posta nella mailing list di rsync . "Suggerirei che i documenti per --chownfarebbero bene a menzionarlo --owner( --super) e --groupsono necessari" .
TachyonVortex,

5

L'ultima versione (almeno 3.1.1) di rsync consente di specificare la "proprietà remota":

--usermap=tom:www-data

Cambia la proprietà di Tom in dati www (aka PHP / Nginx). Se si utilizza Mac come client, utilizzare brew per eseguire l'aggiornamento all'ultima versione. E sul tuo server, scarica le fonti degli archivi, quindi "crealo"!


0

Un'altra soluzione potrebbe essere quella di cambiare l'utente remoto che stabilisce la rsyncconnessione utilizzando --rsync-path. Ho pubblicato una spiegazione completa qui:

/unix//a/546296/116861

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.