У меня есть SFTP-сервер (openssh / sftp-server), и я хотел бы установить umask 002 для пользователей, использующих эту службу. Я попытался установить PAM (pam.d / common-session) и .profile для каждого пользователя, но не повезло.
С SSH-входом все в порядке, но когда я пытаюсь использовать SFTP (с gFTP), у меня устанавливается umask 022.
Я уже пробовал использовать оболочку для sftp-сервера, которая меняет маску перед вызовом sftp-сервера, не повезло.
Любая помощь? Большое спасибо!
Я думаю, начиная с OpenSSH 5.4p1, вы можете использовать параметр «-u», например:
Subsystem sftp /usr/lib/openssh/sftp-server -u 022
На странице руководства:
-u umask
Sets an explicit umask(2) to be applied to newly-created files
and directories, instead of the user's default mask.
Я надеюсь, что это поможет кому-то еще несколько часов разочарований ...
Если вы используете приложение SFTP с графическим интерфейсом, проверьте его настройки для установки разрешений на загрузку.
Я пробовал все вышеперечисленные решения, и оказалось, что приложение их просто переопределяло.
После многих часов попыток применить различные хаки и исправления я нашел правильное решение!
Есть патч для SSH, который позволяет вам выбрать umask, который вы хотите для SFTP. Вы можете скачать это здесь: http://sftpfilecontrol.sourceforge.net/
Для меня (OpenSSH_5.2p1 + sftpfilecontrol-v1.3, OpenSSL 0.9.8g 19 октября 2007 г.) он работает отлично!
В файле конфигурации ssh вы также можете использовать это, чтобы установить режим файла специально (переопределив любой chmod, который может попытаться установить клиент). Здесь я использую internal-sftp, но думаю, что то же самое и для sftp-server:
ForceCommand internal-sftp -u 0022
Цитировать это сообщение:
Я получил это нормально, добавив строку «umask 007» в /etc/init.d/ssh.
Баш использует .profile
для интерактивных оболочек входа. Я не думаю sftp
считается как один. Возможно, вы сможете установить маску в /etc/bash.bashrc
или ~/.bashrc
если приведенный выше совет не работает или вам нужен более точный контроль.
Ссылаться на этот вопрос чтобы найти простое решение, которое не требует определенных версий openssh или пользовательских патчей.