【问题标题】:umask for internal-sftp in Docker container用于 Docker 容器中的 internal-sftp 的 umask
【发布时间】: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


【解决方案1】:

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

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

换句话说,尽管有 umask,客户端可以通过发送显式命令来设置权限,从而将文件权限设置为它想要的任何内容。

【讨论】:

  • 还有没有办法禁用它?
猜你喜欢
  • 2020-07-29
  • 2022-11-27
  • 2011-04-22
  • 1970-01-01
  • 1970-01-01
  • 2014-05-13
  • 1970-01-01
  • 1970-01-01
  • 2019-02-13
相关资源
最近更新 更多