Файлы, загруженные с помощью SFTP, не имеют правильных прав.

Файлы, загруженные с помощью SFTP, не имеют правильных прав.

У меня возникла странная проблема при попытке загрузить файлы на сервер с помощью 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, возможно.

Связанный контент