Вопрос или проблема
Я установил pure-ftpd на Debian (Raspberry Pi), нашел конфигурационный файл и смог сделать базовую настройку, запретить анонимный вход, создать виртуального пользователя, вызвать pure-pw mkdb
и перезапустить сервер. Но войти с этим пользователем не удалось.
Вместо этого я могу войти с обычным пользователем Linux.
Я хотел бы отклонить обычных пользователей и принимать только виртуальных.
Я узнал, что сервер должен быть запущен с параметром -l
, который указывает, какие входы должны быть приняты. Это звучит здорово — если бы я только знал, где запускается сервер. Ничего нет ни в init.d, ни в других известных (для меня) местах, где выполняются такие автоматические старты демонов. Насколько я знаю, я ничего не сделал, чтобы активировать демон, это должно было произойти во время установки.
Если кто-то мог бы сказать мне, где запускается pure-ftpd, возможно, это решит обе мои проблемы.
Мне интересно, почему много вещей можно настроить в конфигурационном файле, но такая базовая настройка, как какие пользователи принимаются, должна быть задана совершенно другим образом. В чем причина?
Не является ли pure-ftpd лучшим выбором для FTP-сервера, который должен принимать только выделенных пользователей без связи с системными пользователями?
Мне интересно, почему много вещей можно настроить в конфигурационном файле, но такая базовая настройка, как какие пользователи принимаются, должна быть задана совершенно другим образом. В чем причина?
Это просто так написано. В общем, “почему программное обеспечение XYZ делает A, а не технически равнозначное B?” ответ такой же, как “почему автор написал свою книгу так, чтобы она была A, а не B”: это было сознательное или бессознательное решение, и никто не позаботился сделать B с этим программным обеспечением вместо этого.
В данном случае это проектное решение (которое я не разделяю, но вы, вероятно, выбрали pure-ftpd именно за их проектные решения):
Pure-FTPd стремится оставаться простым в эксплуатации и минимизировать количество
настроек до минимума.
Практически все может быть задано с помощью командных переключателей, так что конфигурационный файл не является обязательным.
Вот почему вещи не находятся последовательно в одном конфигурационном файле с точки зрения upstream pure-ftpd.
Необходимо добавлять параметры командной строки, чтобы сделать то, что вы хотите, является (очевидно, но только очевидно для людей, которые должны упаковывать программное обеспечение и помогать тысячам пользователей запустить его, а не для самих авторов программного обеспечения) плохой идеей; поэтому в Debian используется “обертка” PERL-скрипта, который читает свои собственные конфигурационные файлы и затем запускает pure-ftpd так, как это хочет пользователь.
Сервер запускается в /etc/init.d/pure-ftpd, который является частью пакета pure-ftpd-common для Debian, который вы должны были получить, если правильно установили pure-ftpd (т.е. через менеджер пакетов вашей ОС, apt install pure-ftpd
). Если вы не установили его через это, то вам придется настроить свой собственный механизм запуска демона! (не делайте этого. Используйте пакет дистрибутива.)
Скрипт – это /usr/bin/pure-ftpd-wrapper (возможно, он читает доступные параметры конфигурации в начале, но не модифицируйте его!), и он читает все файлы в каталоге /etc/pure-ftpd/conf для общей конфигурации и все в /etc/pure-ftpd/auth для конфигурации аутентификации. Таким образом, вы найдете настройки, упомянутые в /usr/bin/pure-ftpd-wrapper, как имена файлов в /etc/pure-ftpd/{conf,auth}.
Думаю, это делает “удобный в использовании FTP-сервер”? Нет. Но это может быть разумным выбором, если вам действительно нужен FTP (не эксперт в FTP-серверах, если быть честным); обычно люди предпочитают (по крайней мере, на основе моего опыта, основанного на постах, которые я здесь видел) ProFTP или vsftp. Лично я бы утверждал, что 2024 год, и единственное место, где я вижу, что FTP используется в значительных развертываниях, – это распространение вредоносных программ и пиратского ПО, поэтому я бы утверждал, что если вы собираетесь настраивать сложную систему с виртуальными пользователями, возможно, FTP слишком 1970-х для ваших нужд, и вам лучше подойдут SFTP / webdav / совместимые с S3 протоколы… которые не тянут за собой пятнадцати лет совместимости (FTP старше интернета — он предшествовал интернет-протоколу на три года). Я бы даже сказал, что SMB был бы более разумным выбором, и в наши дни его можно нормально шифровать и защищать для работы через интернет. В отличие от FTP, все эти протоколы поддерживают полноценное кодирование, поддержку продолжения прерванных передач, намного лучшие списки каталогов…
Ответ или решение
Для настройки Pure-FTPd на прием только виртуальных пользователей в среде Debian (в частности, на Raspberry Pi) необходимо выполнить несколько ключевых шагов. Рассмотрим это более подробно.
Шаг 1: Установка Pure-FTPd
Убедитесь, что вы правильно установили Pure-FTPd с помощью пакетного менеджера:
sudo apt update
sudo apt install pure-ftpd
Это гарантирует, что все зависимости и конфигурационные файлы установлены правильно.
Шаг 2: Создание виртуальных пользователей
Вы уже создали виртуального пользователя с помощью команды:
pure-pw mkdb
Для создания нового виртуального пользователя вы можете использовать:
pure-pw useradd имя_пользователя -u ftpuser -d /путь/к/каталогу
Здесь -u ftpuser
указывает системного пользователя, который будет иметь права доступа (обычно это специальный системный пользователь, предназначенный только для FTP). Опция -d
устанавливает домашний каталог пользователя.
Шаг 3: Настройка Pure-FTPd для приема только виртуальных пользователей
Чтобы Pure-FTPd принимал только виртуальных пользователей, его необходимо запустить с определенной параметризацией. При этом в Debian процесс инициализации Pure-FTPd управляется скриптом /etc/init.d/pure-ftpd
, который использует обертку для запуска демона.
Для этого:
- Откройте файл конфигурации:
sudo nano /etc/default/pure-ftpd
- Найдите строку, содержащую параметры запуска, и убедитесь, что добавлен параметр
-l
для логина виртуальных пользователей:
DAEMON_ARGS="-l puredbl:/etc/pure-ftpd/pureftpd.pdb"
Такой запуск означает, что сервер будет использовать базу данных виртуальных пользователей, созданную вами при помощи pure-pw
.
Шаг 4: Перезапуск сервиса
После внесения изменений необходимо перезапустить службу:
sudo service pure-ftpd restart
Шаг 5: Проверка конфигурации
Попробуйте войти с использованием созданного виртуального пользователя. Если все сделано правильно, вход должен быть успешным. Если вы по-прежнему можете войти как обычный пользователь Linux, убедитесь, что ваш сервер запущен с нужными параметрами и охватывает только виртуальных пользователей.
Шаг 6: Дополнительные ресурсы и соображения
В идеале, для работы с FTP-серверами стоит рассмотреть более современные протоколы передачи данных, такие как SFTP и WebDAV, которые обеспечивают лучшие уровни безопасности и более современный функционал. Однако, если вы все же решите использовать Pure-FTPd, у вас уже есть необходимые шаги для конфигурации.
Обратите внимание, что файловая структура конфигурации Pure-FTPd предоставляет множество возможностей для настройки. Вы можете размещать дополнительные параметры в файлах внутри каталогов /etc/pure-ftpd/conf
и /etc/pure-ftpd/auth
, что может помочь задать более тонкие конфигурации, такие как ограничения по размеру файлов, ограничения по количеству подключений и многое другое.
Заключение
Следуя вышеуказанным шагам, вы сможете настроить Pure-FTPd на прием только виртуальных пользователей, обеспечив тем самым большую безопасность и управляемость вашего FTP-сервера. Если вы столкнулись с проблемами, рекомендуется проверить журналы системы и конфигурационные файлы на наличие ошибок или неправильных настроек.