У меня возникла странная проблема при попытке загрузить файлы на сервер с помощью SFTP.
Когда для обеспечения максимальной безопасности я использую пользователя с отключенной оболочкой («/bin/false») для загрузки файлов, я получаю режим 640 для загружаемых файлов, а это не то, что мне нужно (локальные файлы имеют режим 664).
Однако когда я включаю оболочку "/bin/bash" для того же пользователя, я получаю правильный режим, 664.
Я не совсем понимаю, что здесь происходит. Почему отключение оболочки меняет режим загружаемых файлов?
Моя конфигурация sshd:
Port 22
Protocol 2
AcceptEnv LANG LC_*
UsePAM yes
UseDNS no
Subsystem sftp internal-sftp
решение1
При отсутствии допустимой оболочки системная маска по умолчанию не применяется/не используется.
Что вы можете сделать, так это объединить пользователей в группу и принудительно задать несколько параметров через /etc/sshd_config
файл, включая umask -
Match Group uploadusers
ForceCommand internal-sftp -u 0002
эта -u 0002
опция устанавливает umask для программы/подсистемы internal-sftp и любых файлов, загружаемых через нее, ЕСЛИ пользователь является членом группы uploadusers
.
Лично я также chroot
разрешаю пользователям доступ только к своим каталогам — отметьте эту ChrootDirectory
опцию, так как она применяется к Match Group
директиве в sshd_config
файле.
решение2
Причина этого в том, что когда оболочка вмешивается, применяется UMASK. В вашем случае, скорее всего (для bash), применяется внутри /etc/bashrc (предполагается, что это какая-то современная версия Red Hat/Centos 7), расположение этих файлов может отличаться. Если ничего не используется, проверьте настройку UMASK в /etc/profile, возможно.