permissões incorretas após copiar sobre scp

5

Estou usando o cygwin no windows 7 para copiar um diretório para uma máquina ubuntu usando este comando.

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

Após copiar todos os arquivos, todos eles têm permissões "sem leitura, sem gravação". Alguém sabe por quê?

Como alternativa, copio /cygdrive/c/xampp/htdocs/ para /cygdrive/c/Users/user e, em seguida, uso scp para copiar os arquivos. As permissões estão corretas.

---------- 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
    
por Kelbizzle 25.04.2012 / 05:53

3 respostas

2

Eu tive alguns problemas com o rsync / ssh e o cygwin, e assim consegui resolver:

  • Desabilite as ACLs, pois elas não podem ser adequadamente mapeadas para o ACL do Linux
  • Verifique as opções de montagem antes de alterar:

$ 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)
  • Alterar configuração para o ACL

cp /etc/fstab /etc/fstab.install

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

  • Para ativar a nova configuração, efetue logout e login novamente

logout ssh Adminstrator@hostname

  • Verifique a nova configuração para "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)

(desculpe, não parece que a formatação está correta esta manhã.)

    
por jippie 27.04.2012 / 09:12
1

Como você está copiando a partir de uma unidade NTFS (com permissões semelhantes às do Windows), o Cygwin está essencialmente "inventando" um conjunto de permissões semelhantes a unix. Conforme você copia os arquivos para um sistema real baseado em unix, essas permissões se tornam relevantes. Como você está usando a opção -p no scp, está mantendo as permissões que o Cygwin "inventou". O sistema de recebimento não tem um usuário com esse UID ou, no mínimo, sua conta de usuário não é aquela com esse UID, portanto, você não tem permissão para ver as permissões.

A maneira mais fácil de corrigir isso é apropriar-se dos arquivos no lado do linux.

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

da área de trabalho do linux, que fornecerá permissões de rwx ao usuário, rx para o grupo e nenhum acesso a outras pessoas. Ou elimine o -p do scp que deve usar o UMASK da sua conta de usuário para gerar novas permissões no lado do unix

    
por Huckle 26.04.2012 / 23:29
0

Use um sinalizador adicional. De man scp :

 -p      Preserves modification times, access times, and modes from the original file.
    
por jippie 25.04.2012 / 09:07