如何让 sftp 尊重我的 umask 设置

如何让 sftp 尊重我的 umask 设置

我试图让 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则可以设置本地权限。

相关内容