GNU/Linux >> Linux Esercitazione >  >> Linux

Problemi con il comando Rsync, le autorizzazioni del proprietario e del gruppo non cambiano

Soluzione 1:

La versione 3.1.0 di rsync ha introdotto il --usermap e --groupmap menzionato 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, il -o e -g le opzioni sono obbligatorie. La loro esclusione non consentirà di aggiornare il rispettivo attributo, ma non produrrà alcun errore.

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

Questo è menzionato indirettamente nella manpage, che afferma che il --chown option "è implementato usando --usermap e --groupmap internamente", e:

Per l'--usermap opzione per avere alcun effetto, il -o (--owner ) deve essere utilizzata (o implicita) e il ricevitore dovrà essere in esecuzione come superutente (vedere anche --fake-super opzione).

Per il --groupmap opzione per avere alcun effetto, il -g (--groups ) deve essere utilizzata (o implicita) e il destinatario dovrà disporre delle autorizzazioni per impostare tale gruppo.

Soluzione 2:

Sembra che funzioni correttamente. Usa --owner e --group preservare (non impostato) i nomi del proprietario e del gruppo... il che significa che non vuoi che vengano modificati dopo il trasferimento.

Se non si utilizzano queste opzioni, l'utente e il gruppo verranno modificati nell'utente chiamante sul lato ricevente. Se vuoi specificare un altro utente, dovrai aggiungere un chown comando 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

Soluzione 3:

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 www-data (ovvero PHP/Nginx). Se stai usando Mac come client, usa brew per eseguire l'aggiornamento all'ultima versione. E sul tuo server, scarica i sorgenti degli archivi, poi "crealo"!


Linux
  1. Come modificare autorizzazioni e proprietari tramite riga di comando

  2. Come copiare file e modificare la proprietà, le autorizzazioni allo stesso tempo

  3. Slash e il comando rsync

  4. Come posso ordinare ls per proprietario e gruppo?

  5. Un modo più rapido per cambiare proprietario/gruppo in modo ricorsivo?

Comando Chmod:come modificare le autorizzazioni dei file in Linux

Scopri l'uso del comando chgrp (Change Group) in Linux

Impara l'uso del comando chmod (Cambia modalità) in Linux

Impara l'uso del comando chgrp (Change Group) nel sistema Linux

Comprendere le autorizzazioni di base dei file e la proprietà in Linux

rsync e collegamenti simbolici