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

Разрешить загрузку / загрузку файлов ssh / sftp, но запретить изменение существующих файлов

У меня есть машина с монетным двором Linux, которая предоставляет своего рода дамп файла, который предоставляется через nginx.

Моя проблема в том, что один пользователь (upload_usr) должен иметь возможность размещать новые файлы / каталоги внутри одной конкретной папки, но ему не должно быть разрешено заменять или изменять любой существующий файл.

Это должно работать так:

Важно то, что другой пользователь, не являющийся пользователем root, должен иметь возможность читать / писать в этом каталоге.

Каким будет самый простой способ добиться этого?

(Предполагая, что openssh с sftp-сервером.)

Если вы разрешите SSH, это будет практически невозможно. Однако, если вы разрешаете только SFTP:

должен иметь возможность размещать новые файлы / каталоги внутри одной конкретной папки

Использовать ChrootDirectory

Для других требований -P blacklisted_requests и -u umask должно быть достаточно. (Вы можете увидеть типы запросов, запустив /usr/lib/openssh/sftp-server -Q requests.)

положить a.txt -> нормально

позволять write (разрешено по умолчанию)

положить a.txt -> запретить

Запустите sftp-сервер с -u 0222 и запретить и setstat fsetstat.

cat a.txt -> нормально

позволять read (разрешено по умолчанию)

поставить b.txt -> нормально

позволять write (разрешено по умолчанию)

rm a.txt -> запретить

запретить removermdir?)

TL; DR Ограничьте пользователей с ChrootDirectory и беги sftp-server с участием -u 0222 -P remove,rmdir,setstat,fsetstat