Допустим необходимо предоставить защищенный доступ к папке без возможности выйти за ее пределы. Например разработчику нужен доступ к коду php.
Самый простой и быстрый способ: настроить штатный SFTP доступ
4 простых шага:
# useradd -M -N -s /bin/false -u [UID] -o user1_sftp
-u [UID] -o — если вам нужно чтобы создаваемый пользователь работал с файлами под определенным UID, например под apache
- Отредактировать /etc/ssh/sshd_config:
Subsytem sftp /usr/libexec/openssh/sftp-server
Match User user1_sftp ChrootDirectory [user dir] X11Forwarding no AllowTcpForwarding no PermitTTY no PermitTunnel no ForceCommand internal-sftp
# passwd user1_sftp
# /etc/init.d/sshd restart
Используя клиент sftp пользователь соединяется по ssh к серверу и может выполнять стандартные операции с файлами. Следует иметь в виду, что директория указанная в ChrootDirectory должна принадлежать пользователю root с правами записи только для владельца, а значит наш sftp пользователь не сможет ничего записать в корневую директорию. Поэтому нужно заранее создать каталоги пользователя в корневой директории и сделать владельцем sftp пользователя.