我试图让 sftp 给我一个 umask 002,但它的行为一直像 umask 是 022。我该如何让它做到这一点?
红帽7.4
/etc/ssh/sshd_config 有以下行:
Subsystem sftp internal-sftp -u 002
我也尝试过
Subsystem sftp internal-sftp -u 0002
每次对 sshd_config 进行更改后,我都会发出以下命令:
sudo systemctl restart sshd.service
然后在一个单独的窗口中登录 sftp。
一旦我将文件上传到 sftp,shell 会话中的“ls -Fla”就会返回:
drwxrwsr-x. 2 [myID] [myGroup] 32 Dec 28 17:37 ./
drwxrwxr-x. 4 [siteID] [siteGroup] 50 Dec 26 18:44 ../
-rw-r--r--. 1 [myID] [myGroup] 9173334 Dec 28 17:37 [myUploadedFile]
(最后一行有 r-- 作为组权限)
我期望的地方:
drwxrwsr-x. 2 [myID] [myGroup] 32 Dec 28 17:37 ./
drwxrwxr-x. 4 [siteID] [siteGroup] 50 Dec 26 18:44 ../
-rw-rw-r--. 1 [myID] [myGroup] 9173334 Dec 28 17:37 [myUploadedFile]
(最后一行以 rw- 作为组权限)
我也尝试过
Subsystem sftp internal-sftp -u ug=rwx
但这会导致 sftp 关闭连接。至少它确认我正在更新正确的配置文件。
答案1
请注意,umask
仅值减少权限,从不添加它们。
因此,如果您的本地文件的权限为 0644 (-rw-r--r--),则 umask 将不会添加组写入标志。 umask将删除“其他写入”;因此,如果您的本地文件是 0666,那么远程文件将是 0664。
如果您想确保远程文件具有组写入,那么您可能需要该-m 664
标志。
答案2
在您的 sshd 配置文件中,尝试在您的组上设置“ForceCommand”
Match Group {GROUP_NAME}
ForceCommand internal-sftp -u 0002
重新启动 sshd 进程以使新设置生效
答案3
根据您的 sftp 使用模式,从客户端更改行为可能是一种可行的方法。
如果您能够修改要“放置”的文件的权限(或者它们已经是所需的),则可以将 -p 参数与 一起使用put
,这将复制权限和文件修改时间(scp
也可以与 一起使用)。假设您的本地文件具有您想要的权限,则以下内容应该有效:
put -p <filename>
或者,如果您正在接收文件,lumask
则可以设置本地权限。