当我使用 cygwin 的 将文件从我的 Windows 机器复制到 Linux 机器时scp
,权限显示为000
。当我从 Linux 复制到 Linux 时不会发生这种情况,所以我认为这与我的 Windows 机器上的某些配置有关。但那个配置在哪里?
编辑:在 下bash
,umask
打印。无论我运行还是 ,0022
的行为都是相同的。scp
bash
CMD
答案1
以下是讨论该问题的其他一些页面。第一个是关于SCP,而第二个是与另一个程序有关的 000 个权限:
- https://askubuntu.com/questions/124944/incorrect-permissions-after-copying-over-scp
- https://stackoverflow.com/questions/5828037/cygwin-sets-file-permission-to-000
- http://cygwin.1069669.n5.nabble.com/vim-and-file-permissions-on-Windows-7-td61390.html
显然,这是 Cygwin 在具有 ACL 的 Windows 文件系统上模拟 Unix 类型文件权限时出现的问题。解决方案是修改 Cygwin 的/etc/fstab
文件,使 Cygwin 忽略 ACL。从以下文件之一复制:
cp /etc/fstab /etc/fstab.install
回显“无/cygdrive cygdrive 二进制,posix = 0,用户,noacl 0 0”>> / etc / fstab
要激活新设置,请注销并再次登录 logout ssh Adminstrator@hostname 然后停止并启动您的 cygwin 进程。
答案2
运行umask
以查看权限是否被屏蔽。设置的位越少,应设置的权限越多。 umask 022
是一种常见设置(禁用组和其他人的写入)。