Есть ли способ, чтобы все файлы, созданные конкретным пользователем в sftp, имели определенные группы и права доступа к файлам? Данный пользователь, конечно, будет членом группы, но это не его основная группа. Другими словами, есть ли у sftp способ автоматически дублировать эффекты umask и newgrp?
permissions
file-management
user-accounts
sftp
user24844
источник
источник
Ответы:
В (Open) SSH есть такая вещь, как подсистема : это программа, которая запускается, когда вы запрашиваете что-то отличное от интерактивной оболочки. Технически это просто исполняемый файл на удаленном хосте, который будет
exec
записанsshd
потомком после вашей аутентификации и вызова setuid.Вы можете найти стандартное определение подсистемы
sftp
в вашей конфигурации SSH:Так как это простой исполняемый файл, а не SUID или какой-либо другой, вы можете написать сценарий оболочки, который изменит любые необходимые вам атрибуты, а затем просто запустить оригинальный обработчик подсистемы.
Поместите следующий скрипт в
/usr/lib/openssh
папку, например,sftp-fperm-server
(это не требуется, просто чтобы хранить вещи в одном месте):Затем добавьте строку в конце
/etc/ssh/sshd_config
:И затем перезапустите
sshd
(это не убивает сессии при перезапуске) и запуститеsftp
с-s sftp-fperm
опцией. Вуаля! файлы получают новый указанный umask.Если вы не хотите указывать эту опцию каждый раз, просто измените определение стандартной подсистемы. Интерактивные сеансы не будут затронуты этим, поэтому нет шансов что-то сломать.
Если вы хотите использовать
newgrp
команду, все будет немного сложнее.newgrp
всегда запускает новую интерактивную оболочку, тупо не позволяя передавать ей какие-либо параметры, поэтому вы не можете использовать ее какumask
в предыдущем примере. Но вы можете заменить последнюю строку в скрипте на:На самом деле вызов
newgrp
для некоторой группы, к которой я принадлежу, отправляет запрос пароля, поэтому я не смог проверить это решение (я имею в виду толькоnewgrp
одно), но оно работает, когда я передаю его/bin/id
на свой ноутбук (без SSH), поэтому, если вы началиnewgrp
работать для пользователя никаких проблем возникнуть не должно.источник
Чтобы добавить к тому, что говорит whitequark, вы можете построить решение в том же духе, но использовать команду sg вместо newgrp, которая является своего рода su для групп. Посмотрите это как "man sg" в любой системе Linux, по крайней мере.
источник
chmod g+s directory
Предоставит право собственности группе пользователей для всех каталогов и файлов, созданных в будущем.
источник
Я бы предположил, что это зависит от сервера. Проверьте конфигурацию сервера на наличие возможных вариантов конфигурации.
источник