Установить umask для учетной записи sftp? - PullRequest
6 голосов
/ 08 октября 2010

Может кто-нибудь сказать мне, как установить umask для одного sftp пользователя? Стоит отметить, что IBM AIX ...

Добавление umask 002 к этому пользователю .profile не сработало ... (цель состоит в том, чтобы файлы этого пользователя были доступны для людей из той же группы).

Я как-то видел, как редактировать конфиги sftpd, хотя я хочу установить его только для одного пользователя, поэтому я ожидал найти что-то, что не нуждается в root-доступе.

спасибо!

е.

Ответы [ 5 ]

22 голосов
/ 19 июня 2013

Отлично сработало для меня. Тем не менее, нужно немного исследований, потому что вы предоставили выдержку из документов. Конкретным примером в моем случае будет поставить две последовательные строки в конце / etc / ssh / sshd_config

Match Group www-data
ForceCommand internal-sftp -u 2

В моем случае я хотел установить umask на «002» (2 в десятичной системе), если кто-то из группы «www-data» входит в систему.

Существует также возможность использовать env. переменная SSH_ORIGINAL_COMMAND вместо 'internal-sftp', но у меня не было времени заняться этим.

3 голосов
/ 01 марта 2013

Пользователь может настроить это самостоятельно без участия root, либо с клиента (для каждого подключения), либо с сервера (для открытого ключа).

С клиента мы можем переопределить удаленную командуиспользуется для обработки взаимодействия sftp с помощью опции -s:

sftp -s 'umask 0777; env PATH=${PATH}:/usr/libexec/openssh:/usr/lib/ssh:/usr/sbin sftp-server' username@hostname

(Если ваш sftp-server не установлен ни в одном из мест, указанных выше, добавьте это также в путь).

С сервера мы можем принудительно запускать определенную команду всякий раз, когда устанавливается соединение с использованием определенного открытого ключа.Это запустится для всех соединений, не только для SFTP, но мы можем проверить переменную окружения $SSH_ORIGINAL_COMMAND, чтобы решить, какие действия предпринять.Добавление что-то вроде следующего к authorized_keys, вероятно, достаточно для ваших нужд:

command="umask 0777; if [[ -n $SSH_ORIGINAL_COMMAND ]]; then eval $SSH_ORIGINAL_COMMAND; else exec bash --login; fi" ssh-rsa AAAAB3NzaC1yc2EA...

(замена любой вашей любимой оболочки для обработки любых интерактивных входов в систему, и отметьте, что если вы используете tcsh,необходимо изменить это в соответствии с синтаксисом этой оболочки).

3 голосов
/ 17 мая 2011

Я не знаю об AIX, но вы должны быть в состоянии сделать это с OpenSSH, хотя для этого потребуются права root. Вам нужно будет написать скрипт-обертку для серверного компонента sftp. Оболочка должна будет выборочно изменить umask для пользователя, а затем exec sftp-сервер. Для выбора пользователя я неравнодушен к:

id --user

Если бы вы создали такой скрипт как /usr/local/sbin/sftp-wrapper, вы бы изменили конфигурацию подсистемы sftp в /etc/ssh/sshd_config с:

Subsystem   sftp    /usr/libexec/openssh/sftp-server

до:

Subsystem   sftp    /usr/local/sbin/sftp-wrapper

Помимо написания скрипта-обёртки, для каждого шага требуются права суперпользователя.

Комментарий: я полагаю, что сервер sftp запускается пользователем root при подключении через sftp. Таким образом, umask по умолчанию происходит от umask root. Я не верю, что есть способ изменить это для конкретного пользователя из конфигурации этого пользователя. Если вы хотите изменить umask sftp для всех пользователей, вы можете сделать более простое изменение конфигурации подсистемы sftp:

Subsystem   sftp    /bin/bash -c ‘umask 002; /usr/libexec/openssh/sftp-server’
1 голос
/ 05 февраля 2013

Маска 111 в октале даст 73 в десятичном виде, что мы будем использовать в этом примере.

#vi /etc/ssh/sshd_config

Добавьте следующие две строки в конец файла, чтобы настроить sftp umask для группы пользователей.

Match Group  <group name>
ForceCommand  internal-sftp  -u 73

Или добавьте следующие две строки в конце файла, чтобы настроить smasp umask для одного пользователя.

Match User   <user name>
ForceCommand  internal-sftp -u 73

Перезапустите демон sshd.

#stopsrc -s sshd

#startsrc -s sshd

это поможет: Аамод Чандра

0 голосов
/ 22 января 2016

Я не знаю, почему ниже строки не работают для меня:

* Группа совпадений

ForceCommand  internal-sftp  -u 73

Наконец, добавьте '-u 0002' для Подсистемы, которая отлично работает на SUSE 11.3:

*Subsystem sftp /usr/lib64/ssh/sftp-server **-u 0002***

и теперь указанный пользователь может войти только с открытым ключом:

Match User nappcpr, Group iwcopy

    PasswordAuthentication no

    PubkeyAuthentication yes

    **KbdInteractiveAuthentication no**
...