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 — поселить юзера в группу (если не хотите плодить много групп для таких пользователей)