2016-04-11 4 views
-1

У меня довольно простой контейнер для док-контейнера sftp, в котором у меня есть следующие /etc/ssh/sshd_config, вдохновленные множеством разных источников в Интернете - нет претензий, что это прекрасно, но эй, это вроде работы ,umask для внутреннего-sftp в контейнере Docker

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.

Что мне не хватает? Есть ли возможность, что мой контейнер отсутствует? Есть что-то еще?

+0

'umask' обычно устанавливается также в сценариях запуска (' ~/.bashrc' и т. Д.) Или в PAM: 'pam_umask'. Возможно, это может быть перезаписано некоторыми из этих средств. – Jakuje

+0

Сценарии запуска не должны вызываться, так как это учетные записи nologin. Я посмотрю в PAM, спасибо за головы. – Morpheu5

ответ

0

OpenSSH реализует SFTP version 3, описанный в draft-ietf-secsh-filexfer-02.txt. Версия 3 протокола SFTP включает в себя command для того, чтобы клиент установил file attributes для файлов на сервере. Атрибуты файлов, которые могут быть установлены, включают разрешения файла.

umask применяется только при создании файла (или каталога и т. Д.). Процесс может вызвать chmod(), чтобы изменить атрибуты файла, и эти вызовы: не с учетом umask.

Другими словами, несмотря на umask, клиент может устанавливать разрешения на файлы на все, что захочет, отправив явную команду для установки разрешений.

+0

И нет способа отключить его? – Morpheu5

Смежные вопросы