为sftp帐户设置umask?

fil*_*ppo 7 unix ssh sftp

谁能告诉我如何umask为单个sftp用户设置?值得一提的是IBM AIX ......

添加umask 002到该用户.profile不起作用...(目标是该用户文件可供同一组的人访问).

我已经看到在某种程度上编辑sftpd配置,虽然我只想为一个用户设置它,所以我希望找到一些不需要root访问权限的东西.

谢谢!

F.

dom*_*ikz 22

对我来说很棒.但是,需要进行一些研究,因为您提供的是文档的摘录.在我的例子中,一个具体的例子是在/ etc/ssh/sshd_config的末尾放置两个连续的行

Match Group www-data
ForceCommand internal-sftp -u 2
Run Code Online (Sandbox Code Playgroud)

在我的情况下,我想要做的是如果组'www-data'中有人登录,则将umask设置为'002'(十进制2).

还有一个使用env的选项.变量SSH_ORIGINAL_COMMAND而不是'internal-sftp',但我没有时间去追求它.

  • 当你这样做时要小心.在上面的示例中,整个组'www-data'将无法通过控制台执行ssh.我得到错误`这个服务只允许sftp连接.连接茁壮成长.'. (2认同)

mav*_*vit 3

用户可以在客户端(每个连接)或服务器(每个公钥)上自行设置,无需 root 参与。

从客户端,我们可以使用以下选项覆盖用于处理 sftp 交互的远程命令-s

sftp -s 'umask 0777; env PATH=${PATH}:/usr/libexec/openssh:/usr/lib/ssh:/usr/sbin sftp-server' username@hostname
Run Code Online (Sandbox Code Playgroud)

(如果你的sftp-server未安装在上述位置之一,请将其也添加到路径中)。

从服务器上,我们可以在使用特定公钥建立连接时强制运行特定命令。这将为所有连接运行,而不仅仅是 SFTP 的连接,但我们可以检查$SSH_ORIGINAL_COMMAND环境变量来决定采取什么操作。添加类似以下内容authorized_keys可能足以满足您的需求:

command="umask 0777; if [[ -n $SSH_ORIGINAL_COMMAND ]]; then eval $SSH_ORIGINAL_COMMAND; else exec bash --login; fi" ssh-rsa AAAAB3NzaC1yc2EA...
Run Code Online (Sandbox Code Playgroud)

(替换您最喜欢的 shell 来处理任何交互式登录,并注意如果您使用,则tcsh必须修改它以适应该 shell 的语法)。