Использование sftp ChrootDirectory и предоставление другим пользователям права на запись в тот же каталог

995
himdel

Мне нужно разрешить недоверенному пользователю 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

1 ответ на вопрос

0
Kenster

Вы можете установить домашний каталог пользователя в качестве его папки chroot, как описано в учебнике, на который вы ссылались. Затем смонтируйте /srv/www/в подкаталоге домашнего каталога пользователя:

mkdir /home/jdoe/srv-www mount --bind /srv/www /home/jdoe/srv-www 

После соединения с sftp ему придется перейти в подкаталог, чтобы получить доступ к содержимому /srv/www/. Вы можете заблокировать разрешения для домашнего каталога пользователя и других файлов, если хотите.

Может быть, я не совсем понял, но пользователь должен иметь доступ только к подкаталогу сети, а не ко всему ... например. `/ home / jdoe / srv-www / downloads` .. и одновременно * другие * пользователи также должны иметь доступ к этому каталогу. himdel 10 лет назад 0

Похожие вопросы