Как сделать SFTP без SSH с chroot каталога пользователя в CentOS 7?

Аватар пользователя admin

Иногда требования к обмену данными выглядят довольно странно. Например, людям не нужен FTP а нужен только SFTP. Однако при этом они хотят, чтобы зайти по SSH не было возможности, а при входе по SFTP, чтобы пользователь был заперт в своём домашнем каталоге и не видел ничего лишнего (chroot). Рецепт как такое реализовать даю ниже. Решение делалось на CentOS 7, но причин, по которым оно должно не работать в других дистрибутивах - я не вижу.

Первым делом в домашнем каталоге пользователя создаём каталог etc и в нём файл passwd, куда переносим две записи из системного /etc/passwd - первая запись пользователя root, вторая пользователя, который владеет данным домашним каталогом. Делаем владельцем каталога etc и файла passwd в нём суперпользователя root.

Далее редактируем системный /etc/passwd и ставим shell самому пользователю в /sbin/nologin.

Далее, делаем владельцем домашнего каталога пользвателя root'а (группу оставляем) и даём права группе пользователя на "r-x". Этот пункт я объяснить не могу, но если не сделать владельцем root'а будет всегда говорить одно и тоже: в /var/log/secure будет ругаться "fatal: bad ownership or modes for chroot directory". Пробовал разные права - не помогло. Если кто раскурит в чём дело и напишет коммент - скажу спасибо!

Далее редактируем файл /etc/ssh/sshd_config и добавляем в конец секцию:

Match User USERNAME
 AllowGroups USERGROUP
 X11Forwarding no
 AllowTcpForwarding no
 ChrootDirectory /home/USERNAME
 ForceCommand internal-sftp

где USERNAME и USERGROUP заменяем на имя нужного пользователя.

Далее перезапускаем sshd командой:

service httpd restart

и собственно это всё.

0
Ваш рейтинг: Нет