用于Docker容器中的internal-sftp的umask

时间:2016-04-11 22:07:58

标签: docker sftp openssh sshd umask

我有一个相当简单的sftp Docker容器,其中我有以下/etc/ssh/sshd_config,受到互联网上许多不同来源的启发 - 没有声称它是完美的,但是嘿,它有点工作

Port 22
Protocol 2

HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key

SyslogFacility AUTHPRIV

PermitRootLogin no

PubkeyAuthentication no
AuthorizedKeysFile .ssh/authorized_keys

PasswordAuthentication yes

ChallengeResponseAuthentication yes

UsePrivilegeSeparation sandbox

AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE
AcceptEnv XMODIFIERS

Subsystem sftp internal-sftp -u 0002

Match Group sftponly
      ChrootDirectory %h
      ForceCommand internal-sftp
      AllowTcpForwarding no
      X11Forwarding no

强调Subsystem线到最后。我的理解是-u选项为进程设置了umask,因此为登录它的用户设置了umask。毋庸置疑,我的糟糕用户不断创建具有权限644/755而非预期664/775的文件。

我错过了什么?是否有能力使我的容器丢失?还有别的吗?

1 个答案:

答案 0 :(得分:0)

OpenSSH实现SFTP version 3,描述于 draft-ietf-secsh-filexfer-02.txt。 SFTP协议的第3版包括command,客户端可以为服务器上的文件设置file attributes。可以设置的文件属性包括文件的权限。

仅在创建文件(或目录等)时应用umask。进程可以调用chmod()来更改文件属性,这些调用受umask约束。

换句话说,尽管使用了umask,客户端仍可以通过发送显式命令来设置权限,从而将文件权限设置为所需的文件。