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