Использование sftp ChrootDirectory и предоставление другим пользователям прав на запись в тот же каталог
Мне нужно разрешить недоверенному пользователю SFTP-доступ к определенному каталогу в корневом каталоге его веб-сервера. Я не хочу, чтобы он имел доступ к другим частям системы (включая остальную часть сети), поэтому я подумал об использовании OpenSSH ChrootDirective
, По сути, что-то вроде подхода, описанного здесь.
Тем не менее, кажется, что нет никакого способа сделать это, одновременно позволяя веб-серверу (или сценарию git deploy) писать в этот каталог, потому что, как только я это делаю, я получаю fatal: bad ownership or modes for chroot directory component "/srv/www/"
ошибка.
Я думал о создании каталога в другом месте и mount --bind
Это ограничение применимо к каталогу chrooted, а не только к его родителям, поэтому у меня снова возникает та же проблема.
Я понимаю, что это вопрос безопасности, но это не очень важно, поскольку:
- другим пользователям доверяют (ну, относительно, и они все равно не могут добавлять файлы suid)
- у ненадежного пользователя есть только SFTP-доступ, но не SSH, поэтому он не должен ничего запускать в любом случае
Итак, что я упустил? Есть ли какие-то вменяемые выходы из этого беспорядка? (Без перехода на FTP или установки incron/rsync между двумя каталогами желательно.)
1 ответ
Вы можете установить домашний каталог пользователя в качестве его папки chroot, как описано в учебнике, на который вы ссылаетесь. Затем смонтировать /srv/www/
в подкаталоге домашнего каталога пользователя:
mkdir /home/jdoe/srv-www
mount --bind /srv/www /home/jdoe/srv-www
После соединения с sftp, ему придется перейти в подкаталог, чтобы получить доступ к содержимому /srv/www/
, Вы можете заблокировать разрешения на домашний каталог пользователя и другие файлы там, если хотите.