Я использую Cygwin в Windows 7, чтобы скопировать каталог на машину с Ubuntu с помощью этой команды.
scp -rp -P 54322 /cygdrive/c/xampp/htdocs/. user@10.136.10.1:/home/user/somefolder/
После копирования всех файлов все они имеют разрешения «нет чтения, нет записи». Кто-нибудь знает почему?
В качестве альтернативы, если я скопирую /cygdrive/c/xampp/htdocs/
в /cygdrive/c/Users/user
, а затем использую scp для копирования файлов. Права доступа правильные.
---------- 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
У меня были некоторые проблемы с rsync / ssh и cygwin, вот как мне удалось решить:
$ 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)
cp /etc/fstab /etc/fstab.install
echo "none /cygdrive cygdrive binary,posix=0,user,noacl 0 0" >> /etc/fstab
logout
ssh Adminstrator@hostname
$ 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)
(извините, не получается правильно отформатировать это утро.)
Используйте дополнительный флаг. Из man scp
:
-p Preserves modification times, access times, and modes from the original file.
Поскольку вы копируете с диска NTFS (с разрешениями, подобными Windows), Cygwin, по сути, «составляет» набор разрешений, подобных UNIX. Когда вы копируете файлы в настоящую Unix-систему, эти разрешения становятся актуальными. Так как вы используете опцию -p
на scp, вы сохраняете разрешения, которые «создал» Cygwin. В принимающей системе либо нет пользователя с таким UID, либо, по крайней мере, ваша учетная запись пользователя отличается от учетной записи с таким UID, поэтому у вас нет разрешения даже просматривать разрешения.
Самый простой способ исправить это - взять на себя ответственность за файлы на стороне Linux.
chown $(whoami):$(whoami) ~/somefolder -R
chmod 750 -R ~/somefolder/
с рабочего стола linux, который даст вам права доступа rwx для пользователя, rx для группы и не будет иметь доступа к другим. Или удалите -p
из scp, который должен использовать UMASK вашей учетной записи пользователя для создания новых разрешений на стороне Unix