web-dev-qa-db-fra.com

autorisations incorrectes après la copie sur scp

J'utilise Cygwin dans Windows 7 pour copier un répertoire sur une machine Ubuntu à l'aide de cette commande.

scp -rp -P 54322 /cygdrive/c/xampp/htdocs/. [email protected]:/home/user/somefolder/

Après avoir copié tous les fichiers, ils ont tous les droits "pas de lecture, pas d'écriture". Quelqu'un sait-il pourquoi?

Alternativement, si je copie /cygdrive/c/xampp/htdocs/ vers /cygdrive/c/Users/user puis utilise scp pour copier les fichiers. Les autorisations sont correctes.

---------- 1 user user 1273 Apr 21 16:32 about.html
---------- 1 user user 1707 Apr 21 16:33 contact.html
d--------- 2 user user 4096 Apr 21 04:14 images
---------- 1 user user 2259 Apr 21 22:27 index.html
---------- 1 user user 1252 Apr 21 16:33 projects.html
---------- 1 user user  823 Apr 22 22:03 style.css
drwx------ 6 user user 4096 Apr 21 02:11 xampp
5
Kelbizzle

J'ai eu quelques problèmes avec rsync/ssh et cygwin, voici comment j'ai réussi à résoudre:

  • Désactivez les ACL car ils ne peuvent pas être correctement mappés aux ACL de Linux
  • Vérifiez les options de montage avant de changer:

$ mount

D:/ProgramsVista/ICW/etc/terminfo on /usr/share/terminfo type ntfs (binary,noacl)
D:/ProgramsVista/ICW/bin on /usr/bin type ntfs (binary,noacl)                    
D:/ProgramsVista/ICW/lib on /usr/lib type ntfs (binary,auto)                     
D:/ProgramsVista/ICW on / type ntfs (binary,noacl)                               
C: on /cygdrive/c type ntfs (binary,posix=0,user,noumount,auto)                  
D: on /cygdrive/d type ntfs (binary,posix=0,user,noumount,auto)                  
E: on /cygdrive/e type iso9660 (binary,posix=0,user,noumount,auto)
  • Changer le réglage des ACL

cp /etc/fstab /etc/fstab.install

echo "none /cygdrive cygdrive binary,posix=0,user,noacl 0 0" >> /etc/fstab

  • Pour activer le nouveau paramètre, déconnectez-vous et reconnectez-vous

logoutssh Adminstrator@hostname

  • Vérifiez le nouveau paramètre pour "noacl":

$ mount

D:/ProgramsVista/ICW/etc/terminfo on /usr/share/terminfo type ntfs (binary,noacl)
D:/ProgramsVista/ICW/bin on /usr/bin type ntfs (binary,noacl)
D:/ProgramsVista/ICW/lib on /usr/lib type ntfs (binary,auto)
D:/ProgramsVista/ICW on / type ntfs (binary,noacl)
C: on /cygdrive/c type ntfs (binary,noacl,posix=0,user,noumount,auto)
D: on /cygdrive/d type ntfs (binary,noacl,posix=0,user,noumount,auto)
E: on /cygdrive/e type iso9660 (binary,noacl,posix=0,user,noumount,auto)

(désolé, il semble que le formatage soit correct ce matin.)

2
jippie

Puisque vous copiez depuis un lecteur NTFS (avec des autorisations semblables à celles de Windows), Cygwin "constitue" essentiellement un ensemble d'autorisations de type Unix. Lorsque vous copiez les fichiers sur un véritable système UNIX, ces autorisations deviennent pertinentes. Puisque vous utilisez l'option -p sur scp, vous conservez les autorisations "créées" par Cygwin. Le système récepteur n'a pas d'utilisateur avec cet UID ou, à tout le moins, votre compte d'utilisateur n'est pas celui avec cet UID. Vous n'avez donc pas l'autorisation de voir les autorisations.

Le moyen le plus simple de résoudre ce problème consiste à s'approprier les fichiers du côté de Linux.

chown $(whoami):$(whoami) ~/somefolder -R
chmod 750 -R ~/somefolder/

depuis le bureau linux, ce qui vous donnera des permissions rwx pour l'utilisateur, rx pour le groupe et aucun accès aux autres. Ou supprimez le -p de scp qui devrait utiliser l'UMASK de votre compte utilisateur pour générer de nouvelles autorisations du côté Unix.

1
Huckle

Utilisez un drapeau supplémentaire. De man scp:

 -p      Preserves modification times, access times, and modes from the original file.
0
jippie