vsftpd

Алгоритм настройки

vsftpd

  • Установить пакет vsftpd
  • Создать каталог к которому будет открыт доступ по FTP
  • Создать пользователя и указать в качестве домашнего каталога каталог созданный в прошлом шаге
  • Настроить параметры FTP сервера
    • Настроить анонимный доступ
    • Настроить авторизацию локальных учетных записей
    • Ограничить пользователей в их домашних каталогах
    • Настроить возможность записи на сервер

Изменение домашнего каталога пользователя:

Через passwd

passwd

  1. Открыть файл /etc/passwd
  2. Найти строчку с именем нужного пользователя
  3. Заменить путь /home/имя_пользователя на новый путь до домашнего каталога (может быть любым каталогом в файловой системе)

Через usermod

usermod

  1. Используйте следующую команду:
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