В openssh есть возможность ограничить доступ пользователя в подсистеме sftp. Т.е. задать ему ChrootDirectory
, как в proftpd. Например в домашнюю папку (ибо нефиг лазить за её пределами). Рассмотрим, как это можно реализовать.
Для начала, создадим группу sftpusers
.
Ограничения будут действовать только на пользователей из этой группы (мы ведь не хотим ограничивать пользователя root?):
|
|
Далее заменим подсистему sftp в /etc/ssh/sshd_config
:
|
|
Ну и наконец запишем ограничения в тот же файл:
|
|
Не забываем перечитать конфиг:
|
|
Теперь разберемся с пользователями.
При создании пользователя не надо указывать ему шелл, так как он все равно не сможет им воспользоваться (см. ForceCommand internal-sftp
). Поэтому указываем в качестве шелла /bin/false
. Домашняя папка (точнее папка, которую мы указали в ChrootDirectory
) обязательно должна иметь владельцем пользователя root. Иначе будем получать ошибку:
|
|
А вот группу-владельца chroot-папки можно задать любую. Но главное условие - chroot-директория должна быть доступна на запись только для пользователя root и никого больше. В противном случае получим вышеприведенную ошибку.
Рассмотрим пример создания пользователя:
|
|
Если по каким-то причинам, подобные извращения с доступом к домашней папке недопустимы, имеет смысл поставить ограничение на один каталог выше, т.е. жестко прописать:
|
|
А внутри /home
разруливать доступ к папкам, используя обычные права доступа.