По умолчанию, при подключении по протоколу 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
