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