По умолчанию, при подключении по протоколу SFTP, пользователь имеет возможность просмотра дерева директории файловой системы, а также увидеть содержимое этих директории. При наличии прав, пользователь может редактировать или даже удалить файлы. Доступ можно ограничить, создав специальное окружение для определенной директории.
Открываем конфигурационный файл демона OpenSSH:
vi /etc/ssh/sshd_config
Комментируем следующую строку:
#Subsystem sftp /usr/libexec/openssh/sftp-server
Добавляем в самый конец файла следующее:
Subsystem sftp internal-sftp
Match group sftpgroup
ChrootDirectory /home/%u
ForceCommand internal-sftp
AllowTcpForwarding no
Создадим группу sftpgroup для пользователей:
groupadd sftpgroup
Создадим пользователя sftpuser1, назначим ему домашнюю директорию, укажем основную группу sftpgroup и запретим доступ к оболочке shell:
useradd -d /home/sftpuser1 -m -g sftpgroup -s /sbin/nologin sftpuser1
Назначим пароль для пользователя sftpuser1:
passwd sftpuser1
Настройки chroot требуют, чтобы владельцем домашней директории пользователя был root и права доступа должны быть выставлены следующие:
chown root /home/sftpuser1 && chmod 755 /home/sftpuser1
Создадим синоним директории сайта:
mkdir -p /var/www/html && mkdir /home/sftpuser1/html
Назначим права доступа, чтобы пользователь имел возможность изменения в директории сайта:
chown sftpuser1 /home/sftpuser1/html && chgrp sftpgroup /var/www/html && chmod 775 /var/www/html
Монтируем директорию:
mount --bind /var/www/html /home/sftpuser1/html
Перезапуск демона OpenSSH:
systemctl restart sshd