Как сделать SFTP без SSH с chroot каталога пользователя в CentOS 7?
Иногда требования к обмену данными выглядят довольно странно. Например, людям не нужен 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
и собственно это всё.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
- 1858 просмотров