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

Как поставить желаемую маску с SFTP?

У меня есть 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 или пользовательских патчей.