有人能告诉我如何为单个umask
用户设置sftp
吗?值得一提的是IBM .
将umask 002
添加到用户的.profile
中不起作用.(目标是使来自同一组的人可以访问该用户文件)。
我已经看到了一些编辑sftpd吐露的方法,虽然我只想为一个用户设置它,所以我希望找到一些不需要根访问的东西。
谢谢!
f.
发布于 2013-03-01 19:10:14
用户可以在没有根用户参与的情况下自行设置,无论是来自客户端(每个连接)还是服务器(每个公钥)。
从客户端,我们可以使用-s
选项覆盖用于处理sftp交互的远程命令:
sftp -s 'umask 0777; env PATH=${PATH}:/usr/libexec/openssh:/usr/lib/ssh:/usr/sbin sftp-server' username@hostname
(如果您的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...
(替换您最喜欢的shell来处理任何交互式登录,并注意如果您使用tcsh
,您将不得不修改它以适应该shell的语法)。
发布于 2013-06-19 10:12:05
对我来说效果很好。但是,需要进行一些研究,因为您提供的是文档的摘录。在我的例子中,一个具体的例子是在/etc/ssh/sshd_config的末尾放置两个连续行
Match Group www-data
ForceCommand internal-sftp -u 2
在我的例子中,我想要做的是,如果组中的'www-data‘登录到'002’(小数点中的2),则将umask设置为‘002’(小数中的2)。
还有一个选项可以使用env。变量SSH_ORIGINAL_COMMAND而不是“内部sftp”,但是我没有时间去追求它。
发布于 2011-05-17 04:30:01
我不知道AIX,但是您应该能够在OpenSSH中做到这一点,尽管它需要根权限。您需要为sftp的服务器组件编写一个包装器脚本。包装器需要有选择地为用户更改umask
,然后为sftp服务器更改exec
。对于选择用户,我倾向于:
id --user
如果要创建像/usr/local/sbin/sftp-wrapper
这样的脚本,则可以从以下位置更改/etc/ssh/sshd_config
中的sftp子系统的配置:
Subsystem sftp /usr/libexec/openssh/sftp-server
至:
Subsystem sftp /usr/local/sbin/sftp-wrapper
除了编写包装器脚本之外,每个步骤都需要根权限。
注释:我相信当您通过sftp连接时,sftp服务器是由root启动的。因此,默认的umask来源于root的umask。我不相信有一种方法可以从用户的配置中对特定用户进行更改。如果要为所有用户更改sftp umask,可以对sftp子系统配置进行更简单的修改:
Subsystem sftp /bin/bash -c ‘umask 002; /usr/libexec/openssh/sftp-server’
https://stackoverflow.com/questions/3889377
复制相似问题