Алгоритм настройки
- Установить пакет vsftpd
- Создать каталог к которому будет открыт доступ по FTP
- Создать пользователя и указать в качестве домашнего каталога каталог созданный в прошлом шаге
- Настроить параметры FTP сервера
- Настроить анонимный доступ
- Настроить авторизацию локальных учетных записей
- Ограничить пользователей в их домашних каталогах
- Настроить возможность записи на сервер
Изменение домашнего каталога пользователя:
Через passwd
- Открыть файл /etc/passwd
- Найти строчку с именем нужного пользователя
- Заменить путь /home/имя_пользователя на новый путь до домашнего каталога (может быть любым каталогом в файловой системе)
Через usermod
- Используйте следующую команду:
usermod -d /path/to/new/home_dir user_nameНастройка
Основной конфигурационный файл службы находится по пути: /etc/vsftpd.conf
Активный режим
По умолчанию vsftpd работает в активном режиме, т.е клиент устанавливает соединение с сервером.
Основные параметры:
# Включаем автономный режим vsftpd по умолчанию включено liseten_ipv6 = yes
# Это означает что работает и ipv4 и ipv6
listen=NO
# Разрешаем доступ к серверу анонимным пользователям
anonymous_enable=YES
# Монтируем анонимных пользователей в каталог /public
anon_root=/public
# Разрешаем использовать для авторизации учётные записи созданные на нашем устройстве
local_enable=YES
# Авторизированные пользователи монтируются в свои домашние каталоги
# из них выйти не могут! pwd для них будет "/"
chroot_local_user=YES
# Разрешаем пользователям вести запись в домашние каталоги
allow_writeable_chroot=YES
# Разрешаем запись на сервер
write_enable=YES
# Указываем PAM сервис управляющий авторизацией
pam_service_name=vsftpd
# Разрешаем виртуалньых пользователей
# это пользователи под которыми будут создаваться файлы
guest_enable=YES
# задаем вирутального пользователя
guest_username=www-dataПример файла
# параметры по умолчанию
listen=NO
listen_ipv6=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
# запретить анонимным пользователям заходить в ftp
anonymous_enable=NO
# Виртуальные пользователи будут использовать те же права, что и локальные пользователи. (Иначе гости не могут создавать)
virtual_use_local_privs=YES
# все действия пользователя будут от гостя ( www-data )
guest_enable=YES
guest_username=www-data
# доступ локальным пользователям, запись, заменить каталог по умолчанию "/" на домашний, и какая-то команда без которой не работает
local_enable=YES
write_enable=YES
chroot_local_user=YES
allow_writeable_chroot=YES
# по неизвестной причине сертификаты не работают с userlist
rsa_cert_file=/ca/ftp.crt
rsa_private_key_file=/ca/ftp.key
ssl_enable=NO
# Пассивный режим
pasv_enable=YES
pasv_max_port=1026
pasv_min_port=1026
# Разрешить вход пользователям только из списка
# userlist_deny и userlist_enable, почему-то обязяательны. т.е без одного из них другой не работает.
userlist_deny=NO
userlist_enable=YES
userlist_file=/etc/list.vsftp
# пример файла cat /etc/list.vsftp. в нем перечислены пользователи которым разрешен доступ
webmasterПассивный режим
Для настройки пассивного режима, его необходимо включить, и указать диапазон портов которые сможет использовать сервер для установления соединения с клиентом
# Включить пассивный режим
pasv_enable=Yes
# Указать минимальный порт который выдаст сервер
pasv_min_port=40000
# Указать максимальный порт который выдаст сервер
pasv_max_port=40100Перезапуск
После перезапуска нужно также проверить статус, потому что ошибки не показывает
systemctl restart vsftpd.service
systemctl status vsftpd.service