GNU/Linux >> Tutoriels Linux >  >> Linux

Problèmes de commande Rsync, les autorisations du propriétaire et du groupe ne changent pas

Solution 1 :

La version 3.1.0 de rsync a introduit le --usermap et --groupmap évoqué par Thomas, mais aussi l'option confort --chown , ce qui convient à votre scénario.

--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.

Aussi, le -o et -g options sont requises. Les exclure échouera à mettre à jour leur attribut respectif, mais ne produira aucune erreur.

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

Ceci est mentionné indirectement dans la page de manuel, qui indique que le --chown l'option "est implémentée en utilisant --usermap et --groupmap en interne", et :

Pour le --usermap option pour avoir un effet, le -o (--owner ) doit être utilisée (ou implicite), et le récepteur devra être exécuté en tant que super-utilisateur (voir aussi le --fake-super option).

Pour le --groupmap option pour avoir un effet, le -g (--groups ) doit être utilisée (ou implicite), et le récepteur devra avoir les autorisations pour définir ce groupe.

Solution 2 :

Il semble que cela fonctionne correctement. Utilisez --owner et --group pour préserver (non défini) les noms du propriétaire et du groupe... ce qui signifie que vous ne voulez pas qu'ils changent après le transfert.

Si vous n'utilisez pas ces options, l'utilisateur et le groupe seront remplacés par l'utilisateur appelant du côté récepteur. Si vous souhaitez spécifier un autre utilisateur, vous devrez ajouter un chown commande à votre 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

Solution 3 :

La dernière version (au moins 3.1.1) de rsync vous permet de spécifier la "propriété à distance":

--usermap=tom:www-data

Change la propriété de tom en www-data (alias PHP/Nginx). Si vous utilisez Mac en tant que client, utilisez brew pour mettre à niveau vers la dernière version. Et sur votre serveur, téléchargez les sources d'archives, puis "faites-le" !


Linux
  1. Priorité de l'utilisateur et du propriétaire du groupe dans les autorisations de fichier ?

  2. Comment utiliser la commande chmod (changer de mode) sous Linux

  3. Changer de propriétaire et de groupe en C ?

  4. Les barres obliques et la commande rsync

  5. Comment puis-je trier les ls par propriétaire et groupe ?

Commande Chmod - Comment modifier les autorisations de fichiers sous Linux

Apprendre l'utilisation de la commande chgrp (changer de groupe) sous Linux

Apprendre l'utilisation de la commande chmod (changer de mode) sous Linux

Apprendre l'utilisation de la commande chgrp (changer de groupe) dans le système Linux

Comprendre les autorisations de fichiers de base et la propriété sous Linux

rsync et liens symboliques