полномочия файла и владение группы с помощью sftp

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

5
задан 09.03.2013, 17:20

3 ответа

Я предположил бы, что это - конкретный сервер. Проверьте конфигурацию сервера на потенциальные параметры конфигурации.

0
ответ дан 07.12.2019, 17:21

Существует такая вещь как подсистема в (Открытом) SSH: это - программа, которая получает lauched, когда Вы запрашиваете что-то другое, чем интерактивная оболочка. Технически это - просто исполняемый файл на удаленном хосте, который является exec'd sshd ребенок после аутентификации Вас и вызова setuid.

Можно определить местоположение стандартного определения подсистемы для sftp в Вашей конфигурации SSH:

Subsystem sftp /usr/lib/openssh/sftp-server

Поскольку это - просто простой исполняемый файл, не SUID один или особенный любым другим способом, можно записать сценарий оболочки, который изменит любые атрибуты, Вы нуждаетесь и затем просто запускаете исходный обработчик подсистем.

Поместите следующий сценарий в /usr/lib/openssh папка как, например. sftp-fperm-server (это не требуется, только для хранения вещей в одном месте):

#!/bin/sh
umask 026
exec /usr/lib/openssh/sftp-server

Затем добавьте строку в конце /etc/ssh/sshd_config:

Subsystem sftp-fperm /usr/lib/openssh/sftp-fperm-server

И затем перезапуск sshd (это не уничтожает сессии на перезапуске), и запуск sftp с a -s sftp-fperm опция. Вуаля! файлы добираются, новое указало umask.

Если Вы не хотите указывать, что опция каждый раз, просто измените стандартное определение подсистемы. Интерактивные сессии не будут затронуты им, таким образом, не будет никаких возможностей повреждения чего-то.

Если Вы хотите использовать newgrp команда, вещи будут немного более хитрыми. newgrp всегда запускает новую интерактивную оболочку, в то время как глупо не делают разрешения передать любые параметры ему, таким образом, Вы не можете использовать его в качестве umask в предыдущем примере. Но можно заменить последнюю строку в сценарии с:

SHELL=/usr/lib/openssh/sftp-server newgrp git

На самом деле вызов newgrp для некоторой группы я принадлежу, испускает запрос пароля, таким образом, я не мог проверить это решение (я имею в виду только newgrp один), но это работает, когда я передаю /bin/id на моем ноутбуке (без SSH), поэтому если Вы добрались newgrp не работая на пользователя никакие проблемы не должны возникать.

5
ответ дан 07.12.2019, 17:21

Для добавления к тому, что говорит whitequark Вы могли создать решение вдоль тех строк, но использовать "sg" - управляют вместо newgrp, который является своего рода "su" для групп. Ищите его как "человек sg" в любой системе Linux, по крайней мере.

2
ответ дан 07.12.2019, 17:21

Теги

Похожие вопросы