FTP пользователь ограниченный одной папкой

В этой инструкции описано как создать FTP пользователя и ограничить его одной папкой.

В качестве примера использован шаблон BitrixVM. В шаблоне уже предустановлен FTP сервис  VSFTPD.

Пользователь под которым работает веб-сервер - bitrix.

Подключение к серверу

Для создания пользователя и дальнейшей настройки вам необходимо подключиться к серверу по SSH


Настройка

Шаг 1. Создание и настройка пользователя


# Создадим пользователя myftpuser1
useradd myftpuser1
# Установим ему пароль
passwd myftpuser1
# Назначаем пользователю папку, которой он будет ограничен, например папка upload в /home/bitrix/www/upload/
usermod -d /home/bitrix/www/upload  myftpuser1
# Добавим пользователя в группу bitrix, чтобы пользователь мог изменять файлы, так как пользователь под которым работает веб-сервер - bitrix
usermod -g bitrix myftpuser1
#Все папки в пути должны иметь разрешающее право на их выполнение для группы bitrix. По-умолчанию папка /home/bitrix его не имеет. Исправляем
chmod g+x /home/bitrix
# Для директории /home/bitrix/www/upload добавим права на запись для группы.
chmod g+w -R  /home/bitrix/www/upload

Шаг 2. Настройка FTP


Необходимо внести дополнительные настройки в конфигурацию FTP сервера, для этого открываем файл /etc/vsftpd/vsftpd.conf

# Найдите и закомментируйте следующий параметр
#local_root=/home

# Добавьте в конец файла
chroot_local_user=YES
allow_writeable_chroot=YES
local_umask=002


После изменения конфигурации выполним перезапуск сервиса

systemctl restart vsftpd

Шаг 3. Подключитесь по FTP и проверьте работу


Инструкция по подключению в нашей базе знаний Подключение по FTP

Шаг 4. Дополнительно запретить пользователю подключение по SSH


Вы можете запретить FTP-пользователю подключаться по SSH и SFTP:

Для этого добавьте в конец файла /etc/ssh/sshd_config

DenyUsers myftpuser1

И перезапустите SSH-сервис

systemctl restart sshd


Вы можете запретить FTP-пользователю подключаться по SSH, но разрешить подключаться по SFTP.

Для этого добавьте в конец файла /etc/ssh/sshd_config

Match User myftpuser1
        ForceCommand internal-sftp

И перезапустите SSH-сервис

systemctl restart sshd