SFTP: Chroot в домашнюю папку
В openssh есть возможность ограничить доступ пользователя в подсистеме sftp. Т.е. задать ему ChrootDirectory, как в proftpd. Например в домашнюю папку (ибо нефиг лазить за её пределами). Рассмотрим, как это можно реализовать. Для начала, создадим группу sftpusers. Ограничения будут действовать только на пользователей из этой группы (мы ведь не хотим ограничивать пользователя root?): 1 addgroup --system sftpusers Далее заменим подсистему sftp в /etc/ssh/sshd_config: 1 2 -Subsystem sftp /usr/lib/openssh/sftp-server +Subsystem sftp internal-sftp Ну и наконец запишем ограничения в тот же файл: 1 2 3 4 Match Group sftpusers ChrootDirectory %h ForceCommand internal-sftp AllowTcpForwarding no Не забываем перечитать конфиг: 1 invoke-rc.d ssh reload Теперь разберемся с пользователями. При создании пользователя не надо указывать ему шелл, так как он все равно не сможет им воспользоваться (см. ForceCommand internal-sftp). Поэтому указываем в качестве шелла /bin/false. Домашняя папка (точнее папка, которую мы указали в ChrootDirectory) обязательно должна иметь владельцем пользователя root. Иначе будем получать ошибку: 1 fatal: bad ownership or modes for chroot directory "/home/%username%" А вот группу-владельца chroot-папки можно задать любую. Но главное условие - chroot-директория должна быть доступна на запись только для пользователя root и никого больше. В противном случае получим вышеприведенную ошибку. ...