Comment définir / conserver les autorisations de répertoire?

0

J'utilise CwRsync pour me connecter depuis ma machine de développement Windows à un serveur Web Linux:

rsync -avuz -e ./ssh --exclude=".svn" /cygdrive/c/xampp/htdocs/project123/ [email protected]:/home/user123/public_html

Ceci synchronise bien et rapidement le répertoire de mes projets de développement avec le serveur.

Mais après cela, toutes les propriétés du répertoire ne sont réinitialisées que pour l'utilisateur local user123. Le site Web n'est donc plus disponible. Je dois réinitialiser manuellement ces propriétés.

Pourquoi cela se produit-il et comment l'éviter?

PS venant d'un environnement Windows, j'ai vraiment du mal à comprendre rsync. J'ai copié la commande ci-dessus à partir de quelques exemples ... juste besoin de faire fonctionner cette petite chose aussi ...

Dylan
la source
1
Quel utilisateur exécute la commande rsync? De la page de manuel de rsync:-o, --owner preserve owner (super-user only)
Mikael Kjær

Réponses:

1

Cela dépend de ce que vous entendez par "propriétés".

  • Autorisations? L' option -p( --perms) devrait les préserver. Il est automatiquement activé lors de l'utilisation -a, cependant, si des autorisations sont perdues, cela pourrait être causé par CwRsync lui-même.

    Assurez-vous (à l'aide de lset de Cygwin chmod) que les autorisations locales sont correctes. Sinon, essayez l' --no-permsoption.

  • La possession? Sur les systèmes Unix, les utilisateurs ne sont pas autorisés à changer de propriétaire de fichier. Si vous vous connectez en tant que user123et créez un fichier, il appartiendra à user123, point à point. Des restrictions similaires existent pour les groupes - vous pouvez modifier le groupe d'un fichier, mais uniquement si vous faites vous-même partie de ce groupe.

  • Autre chose?

Grawity
la source
Je voulais parler des autorisations (dans mon logiciel FTP, cela s'appelle des propriétés, alors je pensais que c'était le mot :). Il semble que les autorisations Groupe et Monde soient définies sur 0 par rsync. Que voulez-vous dire avec les autorisations locales? La source est une machine Windows ... Je vais d'abord essayer vos astuces.
Dylan
1
@Dylan: Windows dispose également d'autorisations de fichier (appelées ACL), plus complexes que celles d'Unix. Lors de l'utilisation de CwRsync, la couche Cygwin tente de traduire les ACL Windows en autorisations Unix, qui sont ensuite copiées par rsync sur le serveur distant. Jouez avec icaclsWindows, essayez peut-être icacls C:\xampp\htdocs\project123 /grant everyone:(oi)(ci)(rx).
Grawity