Chrooted SFTP (SSH FTP)
Сервер sshd (OpenSSH) позволяет осуществлять доступ по протоколу SFTP. «OpenSSH» по умолчанию даёт пользователю доступ ко всей файловой системе, тоесть к корню. Но можно chroot-нуть пользователя в его домашнюю директорию. Тоесть юзер будет заперт в своей домашней директории.
Начиная с версии 4.8, «OpenSSH» поддерживает chroot (http://openssh.org/txt/release-4.8) и теперь не нужны патчи.
Подготовка
Право входа в систему по протоколу SFTP будут иметь юзеры имеющие системные учётные записи. В примере Я буду использовать имя юзера Arthur с домашней директорией в /home/Arthur. Юзер Arthur входит в группу users.
Если необходимый юзер ещё не существует, то создадим:
adduser Arthur
Создадим группу:
groupadd users
Добавим юзера Arthur в группу users:
useradd -G users Arthur
Установка OpenSSH
Если OpenSSH ещё не установлен:
apt-get install ssh openssh-server
Включение chrooted SFTP
Для включения SFTP откроем файл настройки OpenSSH сервера:
nano /etc/ssh/sshd_config
и убедимся в том, что имеется одна из этих строк:
Subsystem sftp /usr/lib/openssh/sftp-server
или:
Subsystem sftp internal-sftp
Затем добавим следующий блок в конец файла (для каждого юзера которого хотим chroot-ить необходим отдельный блок):
Match User Arthur
ChrootDirectory /home
AllowTCPForwarding no
X11Forwarding no
ForceCommand /usr/lib/openssh/sftp-server
Примечание:
ChrootDirectory- владельцем этого каталога должен бытьrootи у других юзеров не должно быть прав на запись. ПоэтомуChrootDirectoryделается на каталог выше, где у юзеров нет прав на запись, а уже внутри каталога/home/Arthurу него есть права на запись.
Если юзеров много, тогда можно chroot-нуть группу в которую входят все юзеры:
Match Group users
ChrootDirectory /home
AllowTCPForwarding no
X11Forwarding no
ForceCommand /usr/lib/openssh/sftp-server
Примечание:
Match- поддерживает «User», «Group», «Host» и «Address» - для гибкой и групповой настройки.
Тоесть все входящие в группу users будут chroot-ится в директорию /home.
Перезапустим OpenSSH:
sudo /etc/init.d/ssh restart
или так:
sudo service ssh restart
Если мы chroot-им разных юзеров в одну директорию но не хотим, чтобы они гуляли по домашним директориям других юзеров, тогда нужно изменить права на каждую домашнюю директорию:
chmod 700 /home/Arthur
Теперь можно подключится к нашему хосту по протоколу SFTP.
Если эта статья помогла вам, пожалуйста, оставьте комментарий ![]()
Спасибо за прочтение!
Arthur is a designer and full stack software engineer. He is the founder of Space X-Chimp and the blog My Cyber Universe. His personal website can be found at arthurgareginyan.com.