====== Настройка SFTP сhroot ====== Как предоставить пользователю доступ к серверу по [[https://ru.wikipedia.org/wiki/SFTP|SFTP]] протоколу. Добавляем в файл ''/etc/ssh/sshd_config'' Subsystem sftp internal-sftp Match group sftponly ChrootDirectory /home/%u X11Forwarding no AllowTcpForwarding no ForceCommand internal-sftp В нём же комментируем строку Subsystem sftp /usr/lib/openssh/sftp-server Создаём новую группу для доступа по sftp addgroup --system sftponly Создаём нового пользователя и добавляем его в группу sftponly adduser john usermod -a -G sftponly john Справка по usermod - [[https://linux.die.net/man/8/usermod|usermod(8) - Linux man page]] -a, --append Add the user to the supplementary group(s). Use only with the -G option. Ставим правильные права на каталог /home/john chmod 750 /home/john chown root:john /home/john Если этого не сделать, то в ''/var/log/auth.log'' будет ошибка **bad ownership**. Sep 25 05:23:38 vm1337 sshd[17331]: Accepted password for john from a.b.c.d port 54512 ssh2 Sep 25 05:23:38 vm1337 sshd[17331]: pam_unix(sshd:session): session opened for user john by (uid=0) Sep 25 05:23:38 vm1337 sshd[17340]: fatal: bad ownership or modes for chroot directory "/home/john" Sep 25 05:23:38 vm1337 sshd[17331]: pam_unix(sshd:session): session closed for user john В WinSCP это выглядит так {{:linux:sftp_chroot_failed.png?nolink|}} В Ubuntu также была ошибка **Directive 'UsePAM' is not allowed within a Match block**. # systemctl restart ssh Job for ssh.service failed because the control process exited with error code. See "systemctl status ssh.service" and "journalctl -xe" for details. Смотрим ''systemctl status ssh.service'' systemd[1]: Stopped OpenBSD Secure Shell server. systemd[1]: Starting OpenBSD Secure Shell server... sshd[17397]: /etc/ssh/sshd_config line 98: Directive 'UsePAM' is not allowed within a Match block systemd[1]: ssh.service: Main process exited, code=exited, status=255/n/a systemd[1]: Failed to start OpenBSD Secure Shell server. systemd[1]: ssh.service: Unit entered failed state. systemd[1]: ssh.service: Failed with result 'exit-code'. Опция ''UsePAM yes'' должна быть перед секцией ''Match''. Правильно UsePAM yes Match group sftponly ChrootDirectory /home/%u X11Forwarding no AllowTcpForwarding no ForceCommand internal-sftp Неправильно Match group sftponly ChrootDirectory /home/%u X11Forwarding no AllowTcpForwarding no ForceCommand internal-sftp UsePAM yes Пробуем подключиться (например через [[https://winscp.net/|WinSCP]]). {{:linux:sftp_chroot.png?nolink|}} Итог: пользователь john может подключаться к хосту по протоколу sftp и не может выйти за пределы каталога /home/john. Внутри каталога /home/john у пользователя полные права на чтение/запись.