Установка и настройка FTP-сервера в Linux

Установка
yum install vsftpd
Очистка каталога с конфигом
rm -rf /etc/vsftpd/*
Создание конфига
vim /etc/vsftpd/vsftpd.conf
Конфиг
#_____________Настройки сервиса
# Запуск сервера в режиме службы
listen=YES

# Работа в фоновом режиме
background=YES

# Имя pam сервиса для vsftpd
pam_service_name=vsftpd

#_____________Настройки пользователей
# Запрещает подключение анонимных пользователей
anonymous_enable=NO

# Каталог, куда будут попадать анонимные пользователи, если они разрешены
#anon_root=/ftp

# Разрешает вход для локальных пользователей
local_enable=YES

# Разрешены команды на запись и изменение
write_enable=YES

# Включение специальных ftp команд, некоторые клиенты без этого могут зависать
async_abor_enable=YES

# Локальные пользователи по-умолчанию не могут выходить за пределы своего домашнего каталога
chroot_local_user=YES

# Разрешить список пользователей, которые могут выходить за пределы домашнего каталога
chroot_list_enable=YES

# Список пользователей, которым разрешен выход из домашнего каталога
chroot_list_file=/etc/vsftpd/chroot_list

# Разрешить запись в корень chroot каталога пользователя
allow_writeable_chroot=YES

# Контроль доступа к серверу через отдельный список пользователей
userlist_enable=YES

# Файл со списками разрешенных к подключению пользователей
userlist_file=/etc/vsftpd/user_list

# Пользователь будет отклонен, если его нет в user_list
userlist_deny=NO

# Директория с настройками пользователей
user_config_dir=/etc/vsftpd/users

#_____________Настройки сети
# Входящие соединения контролируются через tcp_wrappers
tcp_wrappers=NO

# Указывает исходящим с сервера соединениям использовать 20-й порт
connect_from_port_20=YES

# Порты для пассивного режима работы
pasv_min_port=49000
pasv_max_port=55000

#_____________Настройки логирование
# Логирование всех действий на сервере
xferlog_enable=YES

# Путь к лог-файлу
xferlog_file=/var/log/vsftpd.log

#_____________Прочее
# Показывать файлы, начинающиеся с точки
force_dot_files=YES

# Маска прав доступа к создаваемым файлам
local_umask=022
Создание пользователей
useradd -s /sbin/nologon user1
useradd -s /sbin/nologon user2
В файле
/etc/pam.d/vsftpd
строка
auth required pam_shells.so
проверяет под какой оболочкой подключается пользователь и запрещает подключатся под nologin, ее нужно закомментировать символом # для игнорирования проверки оболочки.
Создание каталога для настроек пользователей
mkdir /etc/vsftpd/users
Создание файлов с параметрами конкретных пользователей
touch /etc/vsftpd/users/user1
touch /etc/vsftpd/users/user2
Указание в файлах параметров пользователей каталоги пользователей
sh -c "echo 'local_root=/usr/share/nginx/s1.ru/' >> /etc/vsftpd/users/user1"
sh -c "echo 'local_root=/usr/share/nginx/s2.ru/' >> /etc/vsftpd/users/user2"
Назначение прав на каталоги, точка устанавливает такое же имя группы как имя пользователя
chown user1. /usr/share/nginx/s1.ru
chown user2. /usr/share/nginx/s2.ru
Указание пользователей, которые могут выходить за пределы своего каталога
touch /etc/vsftpd/chroot_list
sh -c "echo 'root' >> /etc/vsftpd/chroot_list"
Создание файла, разрешающего подключение пользователям
touch /etc/vsftpd/user_list
sh -c "echo 'root' >> /etc/vsftpd/user_list"
sh -c "echo 'user1' >> /etc/vsftpd/user_list"
sh -c "echo 'user2' >> /etc/vsftpd/user_list"
Создание файла для логов
touch /var/log/vsftpd.log && chmod 600 /var/log/vsftpd.log
Разрешение файрвола
firewall-cmd --permanent --zone=public --add-service=ftp
firewall-cmd --reload
Разрешение подключения к ftp через SELinux
setsebool -P ftpd_full_access on
Запуск и добавление в автозагрузку
systemctl start vsftpd
systemctl enable vsftpd
Проверить работу можно подключившись командой с нужным ip-адресом
ftp 192.168.10.15
ввести логин и пароль.