我尝试在 chrooted 环境中覆盖 SFTP 连接上的 umask 设置。我无法使用不同于 internal-ftp 的子系统。
在 OpenSSH_5.3p1(Debian-3ubuntu4,OpenSSL 0.9.8k 2009 年 3 月 25 日)中,可以直接从命令进行 umask 设置。
您如何设置?
我的 sshd 配置是:
Match User myuser
ChrootDirectory /mnt/jail/myuser/
AllowTCPForwarding no
X11Forwarding no
#ForceCommand /usr/lib/openssh/sftp-server -l DEBUG3
#ForceCommand /bin/sh -c 'umask 002; /usr/lib/openssh/sftp-server'
ForceCommand internal-sftp -u 002
无论如何,它不起作用。
答案1
如果您不想要补丁解决方案,这里还有另一种解决方法:
在 sshd_config 中:
# Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp /usr/local/bin/sftpwrapper
# And the Match Group, ChrootDirectory, etc... declarations
在 /usr/local/bin/sftpwrapper 中 (chmod 755, chown root:root)
#!/bin/bash --
umask 0002
exec /usr/lib/openssh/sftp-server
chrooted 组中的用户仍然可以使用 /bin/false 作为 shell。
答案2
您可能需要查看一个补丁,它SftpUmask
为 添加了选项sshd_config
。
http://sftpfilecontrol.sourceforge.net/
您还可以使用 pam_umask此主题。 在/etc/pam.d/sshd
:
session optional pam_umask.so umask=0002