Настройка FTP сервера (vsFTPd) на Linux Debian

FTP, при всем своем возрасте, пока не отходит на второй план. Он достаточно популярен и нужен. В статье Установка Веб сервера быстро на Debian 9 (LAMP) мы рассмотрели поднятие веб-сервера и было бы не полным, если не установили бы FTP на наш сервер.

Обычно мой выбор падает на ProFTPd с его богатыми настройками, однако, сейчас хочу поделиться установкой и настройкой vsFTPd.

Итак, устанавливаем vsFTPd в режиме root (su)

apt-get install vsftpd

Переходим к настройкам:

nano /etc/vsftpd.conf

редактируем следующие строчки:

write_enable=YES #разрешаем запись
ascii_upload_enable=YES
ascii_download_enable=YES
ftpd_banner=Welcome to My FTP service #Создаем свой баннер на вход
chroot_local_user=YES # Запираем пользователей в домашних директориях, если не хотите, чтобы пользователи могли видеть структуру папок и файлов вне своих домашних папок.
allow_writeable_chroot=YES 
local_enable=YES #Разрешаем вход локальным пользователям
anonymous_enable=NO #Запрещаем анонимный доступ 
pasv_min_port=50000
pasv_max_port=60000 #Работа в пассивном режиме. 

Подробнее про режимы работы FTP

Далее добавляем пользователей для работы с FTP. Однако, запрещаем доступ к shell, т.е. возможность логиниться на сервер.

useradd username -b /home -m -U -s /bin/false

Где:
username — имя пользователя(логин)
home — Директория где будет находиться его домашний каталог
-m — домашней директории будет присвоено название которое было указано в username.
-U — создаст одноименную группу.
-s /bin/false — пользователю будет отключен shell, НО! Если пользователю отключить shell, то он не сможет залогиниться на FTP сервер.

Необходимо отредактировать файл /etc/pam.d/vsftpd

nano /etc/pam.d/vsftpd

Найти и закомментировать строку

auth   required        pam_shells.so

чтобы выглядела так:

#auth   required        pam_shells.so

Все! Перезапускаем vsFTPd

/etc/init.d/vsftpd restart

Готово!

Дополнение:

Возможно вам понадобиться пользователя привязать к директории где находится сайт на веб-сервере.
Создадим такого пользователя:

adduser --home /var/www --shell /bin/false --ingroup ftp USERNAME

—home /var/www — задать home директорию ( возможно /var/www/siteFolder — это и есть папка где находится сайт)
—shell /bin/false — если запретить выполнение shell
—ingroup ftp — поселить юзера в группу (если не хотите плодить много групп для таких пользователей)

Top