У меня есть SFTP-сервер (openssh / sftp-сервер), и я хотел бы установить umask 002 для пользователей, использующих этот сервис. Я попытался установить PAM (pam.d / common-session) и .profile для каждого пользователя, но не повезло.
С SSH логином все нормально, но когда я пытаюсь с SFTP (с gFTP), у меня установлен 022 umask.
Я уже пытался использовать оболочку для sftp-сервера, который меняет umask перед вызовом sftp-сервера, не повезло.
Любая помощь? Большое спасибо!
Subsystem sftp /bin/sh -c 'umask 0002; /usr/lib/openssh/sftp-server'
Я надеюсь, что это может сэкономить кому-то еще часы разочарования ...
Если вы используете 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-сервера:
источник
Цитировать это сообщение :
Bash использует
.profile
для интерактивного входа в систему оболочки. Я не думаю, чтоsftp
считается одним. Возможно, вы сможете установить umask,/etc/bash.bashrc
или,~/.bashrc
если приведенный выше совет не работает, или вам нужен более детальный контроль.источник
Обратитесь к этому вопросу, чтобы найти простое решение, которое не требует определенных версий openssh или пользовательских патчей.
источник