Ivan 发表于 2007-6-17 6:11:00
scp命令传输到目标主机的文件权限确实跟目标主机上的一个值有关,我们暂称此值为"类umask"值。从源主机传到目标主机(不加-p参数)的文件权限跟用户名、用户当前umask、文件目录属性等等没有关系,传到目标主机所有用户上的所有文件属性都由这个"类umask"值决定。我们机器上有个重启sshd进程的操作,这个"类umask"值和最近一次重启sshd进程的用户的umask值是相同的。就是说谁重启了sshd进程,"类umask"值就变为他的umask值。一般我们都是用普通用户su到root去重启ssh进程的,如果我们是"su -"到root重启了sshd进程,那么"类umask"值就变为root的umask值。如果是"su"到root重启了sshd进程,由于环境变量还没有改变,那么"类umask"值就变为那个普通用户的umask值。
"类umask"值是这样决定传输过去的文件权限的:"类umask"值和原文件的权限做异或运算(执行位应该也参与了运算),得到传输过去的文件权限。这个和新建时候目录777、文件666做异或稍有不同。