我知道这个问题已经讨论过了,但是通过阅读帖子我无法弄清楚答案,因为有些人说“是umask可以工作”,而另一些人说“ OpenSSH put命令始终保留权限”
只是为了精确起见:
- 我在RHEL 6.2上使用OpenSSH 5.9
- 我已经使用
internal-sftp
子系统配置了chroot式SFTP服务器,并使用-u 0002
了umask - 我精确地说我不使用
-p
or-P
选项
一方面,我读过:有很多方法可以为SFTP传输定义umask:
- 选项
-u
的internal-sftp
(或sftp-server
)中,由于5.4的OpenSSH - 创建一个包装器
sftp-server
(我们在其中明确设置了umask-这不适用于chroot环境btw) - 在
pam.d/sshd
文件中添加特定的配置
另一方面,我读到:
OpenSSH SFTP客户端和服务器会传输权限(作为扩展名),并在本地使用权限创建远程文件。AFAICT,无法禁用此行为。
所以我做了以下测试:
在我的客户端上,我创建了具有权限600和700的文件MYFILE
和目录MYDIR
。
然后用sftp
命令:
mkdir => the new directory has permissions following the umask (OK)
put MYFILE => MYFILE has same permissions as on client (KO)
put -r MYDIR => MYDIR has same permissions as on client (KO)
如果在客户端更改了MYFILE
和的权限MYDIR
,然后再次上载,则会在服务器端获得新的权限。
我也尝试过该pam.d
解决方案,但没有改变。
所以现在我很困惑:
从我的测试和阅读的内容中,我会说OpenSSH始终保留权限。但是由于有很多帖子说可以定义umask,所以我可以想象我在测试配置中做错了什么。
我希望能得到一些经验丰富的反馈。
谢谢。