Назад | Перейти на главную страницу

Файлы, загруженные с использованием 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

Из-за отсутствия допустимой оболочки 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.