Тюрьма SFTP и сохранение владельца файла / Владелец файла на папку
Я хочу настроить защищенную SFTP-учетную запись для подпапки домашней папки другого пользователя, но хочу, чтобы владелец всего в этой подпапке оставался прежним, включая новые файлы и папки, загруженные и созданные пользователем sftp, при этом предоставляя доступ к файлы и папки этой подпапки, как если бы пользователь SFTP был родительским пользователем.
rawny bawb-sftp / home / rawny <- rawny владеет этим / home / rawny / sftp <- rawny также владеет этим, но bawb-sftp может загружать в него, редактировать файлы и т. д.
bawb-sftp загружает файл /home/rawny/sftp/lol.txt rawny должен по-прежнему владеть этим файлом, как если бы он сделал это в первую очередь, хотя bawb-sftp был тем, кто его загрузил.
По сути, я предполагаю, что я прошу sftp-тюрьму, которая действует как крайне ограниченный проход / марионетка для другого пользователя?
1 ответ
Предполагая Linux, использование группы является одним из способов пойти сюда. Создайте группу, содержащую оба rawny
а также bawb-sftp
и использовать chgrp thatgroup /home/rawny/sftp
(если начать с пустого каталога, в противном случае добавьте -R для рекурсии).
Затем установите в каталоге биты suid и sgid и предоставьте доступ пользователю и группе rwx: chmod 677? /home/rawny/sftp
(замените? на то, что вы хотите, чтобы доступ к миру был. Общие варианты выбора - 5 (rx) 1 (x) и 0, в зависимости от того, хотите ли вы, чтобы кто-то еще имел к нему доступ или нет.) Если папка не пуста, не используйте -R, вам нужно применять биты suid/sgid/x к каждой папке отдельно.
Биты suid / sgid, когда они используются в каталогах в Linux, заставляют вновь созданные файлы и подкаталоги автоматически принадлежать / группироваться так же, как каталог (подкаталоги также будут suid/sgid), поэтому все файлы, созданные в /home/rawny/sftp
будет принадлежать rawny
И в thatgroup
так bawb-sftp
может получить к ним доступ. Обратите внимание, что umask
может потребоваться изменение для создания файлов с разрешениями на групповую запись ( см. здесь, но используйте с umask 00? где? = 2 6 или 7, совпадающий с выбором ранее)