Вопрос или проблема
vsftpd не удается запустить из-за ошибки конфигурации: “status=2/INVALIDARGUMENT” в vsftpd.service
Я настраиваю виртуальную машину с Ubuntu с помощью Ansible для работы этого FTP-сервера: vsftpd
, однако после установки, когда я проверяю журналы с помощью journalctl -u vsftpd.service
, я вижу:
20 ноя 17:49:58 my-vm systemd[1]: Запуск FTP-сервера vsftpd...
20 ноя 17:49:58 my-vm systemd[1]: Запущен FTP-сервер vsftpd.
20 ноя 17:50:06 my-vm systemd[1]: Остановка FTP-сервера vsftpd...
20 ноя 17:50:06 my-vm systemd[1]: Остановлен FTP-сервер vsftpd.
20 ноя 17:50:06 my-vm systemd[1]: Запуск FTP-сервера vsftpd...
20 ноя 17:50:06 my-vm systemd[1]: Запущен FTP-сервер vsftpd.
20 ноя 17:50:06 my-vm systemd[1]: vsftpd.service: Основной процесс завершен, код=завершен, статус=2/НЕДОПУСТИМОЕ_АРГУМЕНТ
20 ноя 17:50:06 my-vm systemd[1]: vsftpd.service: Не удалось с результатом 'exit-code'.
Я не уверен, что не так с конфигурацией, которую я задаю в /etc/vsftpd.conf
, вот она:
anonymous_enable=NO # отключить анонимный вход
local_enable=YES # разрешить локальные входы
write_enable=YES # разрешить FTP-команды, изменяющие файловую систему
local_umask=022 # значение umask для создания файлов для локальных пользователей
dirmessage_enable=YES # разрешить отображение сообщений, когда пользователи впервые входят в новый каталог
xferlog_enable=YES # будет поддерживаться файл журнала, детализирующий загрузки и скачивания
connect_from_port_20=YES # использовать порт 20 (ftp-data) на сервере для соединений в стиле PORT
xferlog_std_format=YES # сохранять стандартный формат файла журнала
listen=NO # предотвратить запуск vsftpd в автономном режиме
listen_ipv6=YES # ЭТО НЕ ИСПРАВЛЯЕТ СЛЕДУЮЩЕЕ: 'journalctl -u vsftpd.service' дает: 'vsftpd.service: Основной процесс завершен, код=завершен, статус=2/НЕДОПУСТИМОЕ_АРГУМЕНТ'
pam_service_name=vsftpd # имя сервиса PAM, который будет использовать vsftpd
userlist_enable=YES # разрешить vsftpd загружать список имен пользователей
tcp_wrappers=YES # включить TCP-обертки
ls_recurse_enable=YES # разрешить рекурсивное изучение файловой системы (нет проблем с интенсивным вводом/выводом)
chroot_local_user=YES # локальные пользователи ограничены своими домашними каталогами после входа (чтобы заключить в тюрьму)
allow_writeable_chroot=YES # разрешить запись в тайник для локальных пользователей
pasv_enable=YES # включить пассивные соединения
pasv_min_port=10000 # диапазон портов для пассивных соединений
pasv_max_port=10100 # диапазон портов для пассивных соединений
ssl_enable=YES # включить FTPS
ssl_tlsv1=YES # только TLS (не старые стандарты SSL)
ssl_sslv2=NO # только TLS (не старые стандарты SSL)
ssl_sslv3=NO # только TLS (не старые стандарты SSL)
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
- Как мне запустить демон FTP-сервера без ошибок?
- Что не так с файлом конфигурации?
Может быть, немного поздно отвечать на это, но для людей с такой же проблемой (как у меня):
В моем случае проблема началась, когда я настроил пассивный режим. Добавление параметров pasv_addr_resolve и pasv_address решило проблему. Я пробовал только с pasv_address и IP сервера без успеха.
pasv_enable=YES
pasv_min_port=40000
pasv_max_port=41000
pasv_addr_resolve=YES
pasv_address=<ваш-домен>
Также проверьте, чтобы брандмауэр разрешал соединения на настроенных портах.
Ответ или решение
Для решения проблемы с запуском FTP-сервера vsftpd
и ошибкой конфигурации "status=2/INVALIDARGUMENT", вам необходимо внести некоторые изменения в файл конфигурации /etc/vsftpd.conf
.
Диагностика проблемы
Ошибка "status=2/INVALIDARGUMENT" обычно указывает на некорректные параметры в конфигурационном файле. В вашем случае, анализируя предоставленный конфигурационный файл, можно заметить, что проблема, скорее всего, связана с настройкой режима пассивного FTP.
Рекомендуемые изменения в конфигурации
-
Настройки пассивного подключения: Вам нужно добавить параметры
pasv_addr_resolve
иpasv_address
. Эти параметры необходимы для корректного функционирования сервера при использовании пассивного режима, особенно если у вас динамический IP-адрес или вы используете доменное имя.Пример необходимых строк:
pasv_enable=YES # включить пассивные соединения pasv_min_port=40000 # минимальный порт для пассивных соединений pasv_max_port=41000 # максимальный порт для пассивных соединений pasv_addr_resolve=YES # разрешить адрес из доменного имени pasv_address=<ваш-домен> # укажите ваше доменное имя или IP-адрес
-
Проверка брандмауэра: Убедитесь, что брандмауэр вашего сервера (например,
ufw
илиiptables
) разрешает входящие подключения на портах, которые вы указали для пассивного режима (в диапазоне 40000-41000) и на стандартном порту FTP (21).Например, для
ufw
вы можете выполнить следующие команды:sudo ufw allow 21/tcp sudo ufw allow 40000:41000/tcp
-
Перезапуск сервиса: После внесения изменений в файл конфигурации выполните перезапуск сервиса
vsftpd
:sudo systemctl restart vsftpd
- Проверка состояния сервиса: После перезапуска проверьте состояние сервиса и логи на наличие ошибок:
sudo systemctl status vsftpd journalctl -u vsftpd.service
Заключение
Ваша конфигурация после вышеуказанных изменений должна быть исправлена и работать корректно. Убедитесь, что все ссылки на сертификаты SSL и ключи соответствуют реальным файлам на сервере. Если после всех изменений сервер все еще не запускается, проверьте логи и другие параметры конфигурации на наличие типографических ошибок или неверных значений.