Я уже несколько дней осматривался, экспериментировал с конфигурациями и следовал руководствам по этому поводу.
У меня две группы: разработчик и sftp.
Пользователи внутри разработчик группа также является частью www-data и svn группы. Эти пользователи должны быть хромированный в их домашний каталог. Я бы хотел, чтобы у них был доступ к / var / www либо через символическую ссылку, либо как-то монтируя каталог для них.
Пользователи в группе sftp, не могу ssh, но должно быть разрешено sftp.
Задний план
Я попытался настроить sshd_config, чтобы разрешить доступ только sftp группе sftp, перезапустил ssh и он упал. К счастью, имея дело с sshd_config, я готовлю отказоустойчивую систему для восстановления конфигурации и перезапуска cron каждые 10 минут в этом случае. Тем не менее, я не мог найти альтернативу или заставить этот метод работать.
Редактировать !!
После просмотра ответов ниже, можно ли посоветовать альтернативу? Я запускаю Ubuntu - поэтому пользователь root заблокирован, и ssh_config
отвергает root логин. Также у sudoers есть 2 разрешенные группы в своей конфигурации, srv-admin и sudo (sudo не может убивать, перезагружать, обновлять и т. Д.).
Группа dev
разрешить пользователю доступ к 2 каталогам, /home/<user>
и /var/www
. Группа sftp
ТОЛЬКО для того, чтобы разрешить пользователю доступ по SFTP, не более того и БЕЗ SSH.
Похоже, я неправильно понимаю использование chroot в таком сценарии.
Вы не можете открыть каталог вне chroot-окружения через символическую ссылку (потому что путь просто не будет доступен). Вы жестяная банка открыть каталог через привязать крепление. Это позволяет вам монтировать одну часть вашей файловой системы на другую часть вашей файловой системы. Например:
mount --bind /var/www /home/someuser/www
В основном, chroot
среды сложны, если вы действительно не ограничиваете количество доступных инструментов. Вам нужно будет предоставить соответствующий набор двоичных файлов внутри в chroot
окружение, а также все необходимые разделяемые библиотеки. Обычно это заканчивается неудачей для интерактивной среды (например, с ssh
логин), если люди ожидают нормальной работы.
Вы должны быть в состоянии предоставить sftp
-только доступ к sftp
группа, использующая Match
блокировать в вашем sshd_config
вместе с ForceCommand
директива. Что-то вроде:
Match Group sftp
ForceCommand sftp-internal
Вы можете включить ChrootDirectory
вариант как часть вашего Match
блок. Следующие chroot
люди в свой домашний каталог:
ChrootDirectory %h
Обратите внимание на следующее из sshd_config
страница руководства:
ChrootDirectory должен содержать необходимые файлы и каталоги для поддержки сеанса пользователя. Для интерактивного сеанса требуется как минимум оболочка, обычно sh (1), и базовые узлы / dev, такие как null (4), zero (4), stdin (4), stdout (4), stderr (4), arandom. (4) и tty (4) устройства. Для сеансов передачи файлов с использованием «sftp» дополнительная настройка среды не требуется, если используется внутрипроцессный sftp-сервер, хотя сеансы, которые используют ведение журнала, требуют / dev / log внутри каталога chroot (см. Sftp-server (8) подробнее).
Помните, chroot предназначен для сред сборки, а не для обеспечения безопасности. Есть бесчисленное множество способов для злоумышленников, чтобы вырваться из хромированной среды.
Если вы хотите изолировать пользователей друг от друга, обычной модели разрешений в Linux должно быть достаточно, но вам нужно заблокировать саму среду. Всегда предполагайте, что злоумышленник вырвется из chroot и заблокируется оттуда.
Если вам нужна реальная изоляция, решение в стиле KVM / Xen, вероятно, то, что вам нужно, но если вы настаиваете на использовании chroot, то вам, вероятно, понадобится ядро с исправлением grsec, которое имеет некоторые основные меры безопасности это предотвратит наиболее распространенные техники взлома chroot.