【发布时间】:2016-08-02 07:00:19
【问题描述】:
我有一个相当简单的 sftp Docker 容器,其中有以下 /etc/ssh/sshd_config,其灵感来自 Internet 上许多不同的来源 - 没有声称它是完美的,但是嘿,它有点工作。
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,因此也为登录它的用户设置了掩码。不用说,我可怜的用户一直在创建具有权限 644/755 而不是预期的 664/775 的文件。
我错过了什么?我的容器是否缺少某种功能?还有别的吗?
【问题讨论】:
-
umask通常也在启动脚本(~/.bashrc等)或 PAM 中设置:pam_umask。它有可能被其中一些方法覆盖。 -
不应调用启动脚本,因为这些是
nologin帐户。我会调查 PAM,感谢您的提醒。
标签: docker sftp openssh sshd umask