Разрешить загрузку / скачивание файла ssh/sftp, но запретить изменение существующих файлов
У меня есть машина Linux Mint, которая обеспечивает своего рода дамп файла, который предоставляется через nginx.
Моя проблема в том, что один пользователь (upload_usr) должен иметь возможность помещать новые файлы / каталоги в одну конкретную папку, но ему нельзя позволять заменять или изменять любые существующие файлы.
Это должно работать так:
- положить.txt -> хорошо
- положить a.txt -> запретить
- cat a.txt -> хорошо
- положить b.txt -> хорошо
- rm a.txt -> disallow
Важно то, что другой пользователь, не являющийся пользователем root, должен иметь возможность r/w в этом каталоге.
Какой самый простой способ добиться этого?
1 ответ
(Предполагая openssh с sftp-сервером.)
Если вы разрешите SSH, то это практически невозможно. Однако, если вы разрешите только SFTP:
должен иметь возможность размещать новые файлы / каталоги в одной определенной папке
использование ChrootDirectory
Для других требований -P blacklisted_requests
а также -u umask
должно быть достаточно. (Вы можете увидеть типы запросов, запустив /usr/lib/openssh/sftp-server -Q requests
.)
положить.txt -> хорошо
разрешать write
(разрешено по умолчанию)
положить a.txt -> запретить
Запустите sftp-сервер с -u 0222
и запретить и setstat
fsetstat
,
cat a.txt -> хорошо
разрешать read
(разрешено по умолчанию)
положить b.txt -> хорошо
разрешать write
(разрешено по умолчанию)
rm a.txt -> disallow
запрещать remove
(а также rmdir
?)
TLDR Ограничить пользователей с ChrootDirectory
и беги sftp-server
с -u 0222 -P remove,rmdir,setstat,fsetstat