Home » Настройка VSFTPD для пользовательской директории на Ubuntu 24
Настройка VSFTPD для пользовательской директории на Ubuntu 24

Настройка VSFTPD для пользовательской директории на Ubuntu 24

В этом посте разберёмся, как быстро и без боли поднять FTP-сервер на базе VSFTPD с доступом к пользовательским директориям на свежей Ubuntu 24. Если ты когда-нибудь сталкивался с задачей раздачи файлов через FTP, автоматизации бэкапов или просто хочешь организовать удобный обмен файлами между пользователями на своём сервере — эта статья для тебя. Я покажу, как не наступить на грабли, которые валяются на каждом шагу, и как сделать так, чтобы твой FTP работал стабильно, безопасно и не требовал шаманства с бубном. Всё по делу, с примерами, кейсами и реальными советами.

Как это вообще работает?

VSFTPD (Very Secure FTP Daemon) — это один из самых популярных FTP-серверов под Linux. Его любят за простоту, безопасность и стабильность. В отличие от всяких монстров типа ProFTPD или vsftpd-альтернатив, он не перегружен лишними фичами, но при этом умеет всё, что нужно для хостинга: изолированные пользовательские директории (chroot), работу с виртуальными и системными пользователями, SSL/TLS, ограничение доступа и прочие радости жизни.

В классической схеме VSFTPD работает так: у тебя есть пользователи системы (или виртуальные), у каждого — своя домашняя директория. Ты можешь настроить сервер так, чтобы каждый видел только свою папку, не мог лазить по чужим, а если надо — дать доступ к общим ресурсам. Всё это делается через конфиг, без магии и лишних зависимостей.

Быстрая и простая настройка VSFTPD на Ubuntu 24

Погнали по шагам. Всё, что тебе нужно — это чистая Ubuntu 24 (подойдёт и VPS, и выделенный сервер, если что — VPS тут, dedicated тут), root-доступ и минут 15 времени.

  1. Установка VSFTPD

    sudo apt update
    sudo apt install vsftpd

    После установки сервис стартует автоматически.
  2. Создание пользователя и директории

    sudo adduser ftpuser
    # Задаём пароль, создаём домашнюю директорию

    Можно создать несколько пользователей — для каждого будет своя папка.
  3. Бэкапим оригинальный конфиг

    sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak
  4. Редактируем конфиг

    sudo nano /etc/vsftpd.conf

    Вот минимальный набор опций для изолированной пользовательской директории:

    listen=YES
    anonymous_enable=NO
    local_enable=YES
    write_enable=YES
    chroot_local_user=YES
    allow_writeable_chroot=YES
    user_sub_token=$USER
    local_root=/home/$USER/ftp
        
    • chroot_local_user=YES — изолирует пользователя в его домашней директории.
    • allow_writeable_chroot=YES — позволяет писать в chroot (иначе будет ошибка 500 OOPS).
    • local_root=/home/$USER/ftp — можно сделать поддиректорию для FTP, чтобы не светить всю home.
  5. Создаём поддиректорию для FTP и выставляем права

    sudo mkdir /home/ftpuser/ftp
    sudo chown nobody:nogroup /home/ftpuser/ftp
    sudo chmod a-w /home/ftpuser/ftp
    sudo mkdir /home/ftpuser/ftp/files
    sudo chown ftpuser:ftpuser /home/ftpuser/ftp/files

    • В корне FTP-директории нельзя иметь права на запись (особенность chroot в vsftpd).
    • Писать можно только в поддиректорию files.
  6. Перезапускаем сервис

    sudo systemctl restart vsftpd
  7. Проверяем подключение

    ftp [email protected]

    Или через FileZilla/WinSCP.

Примеры и кейсы: что может пойти не так?

Кейс Что происходит Решение
Ошибка “500 OOPS: vsftpd: refusing to run with writable root inside chroot()” Права на запись в корне домашней директории пользователя Добавить allow_writeable_chroot=YES и/или убрать права на запись в корне, использовать поддиректорию для upload
Пользователь видит чужие директории Не включён chroot_local_user=YES Включить chroot, проверить права и владельцев директорий
Не работает пассивный режим (PASV) FTP-клиент не может подключиться, висит на листинге Открыть диапазон портов в файрволе, прописать pasv_min_port и pasv_max_port в конфиге
Передача паролей в открытом виде FTP по умолчанию не шифрует трафик Включить SSL/TLS: ssl_enable=YES, сгенерировать сертификат

Практические советы и схемы

  • Для массового создания пользователей используй скрипты на bash с adduser и шаблонными конфигами.
  • Если нужен доступ к одной папке нескольким пользователям — используй группу и выставь права на директорию.
  • Для автоматизации бэкапов — подключайся по FTP с помощью lftp или ncftp в скриптах.
  • Для безопасности — ограничь доступ по IP через /etc/hosts.allow и /etc/hosts.deny.
  • Мониторь логи: /var/log/vsftpd.log — там видно, кто что качал и загружал.

Похожие решения и альтернативы

  • ProFTPD — мощный, гибкий, но сложнее в настройке. Гибкая работа с виртуальными пользователями, поддержка LDAP, но конфиг больше похож на Apache.
  • Pure-FTPd — лёгкий, быстрый, с хорошей поддержкой виртуальных пользователей и встроенным шифрованием. Но чуть менее популярен в крупных дистрибутивах.
  • SFTP (через OpenSSH) — не FTP, но часто используется для тех же задач. Безопаснее, но не всегда поддерживается простыми клиентами и автоматизацией.
Сервер Безопасность Простота Гибкость Ресурсы
VSFTPD Высокая Очень прост Средняя Минимальные
ProFTPD Средняя Сложнее Максимум Средние
Pure-FTPd Высокая Прост Средняя Минимальные
SFTP (OpenSSH) Максимум Очень прост Ограничена Минимальные

Официальная документация VSFTPD: https://security.appspot.com/vsftpd.html

Интересные факты и нестандартные применения

  • VSFTPD можно запускать в Docker-контейнере, что удобно для тестовых стендов и CI/CD.
  • Можно использовать FTP для передачи логов и данных между IoT-устройствами и сервером — многие железки поддерживают только FTP.
  • С помощью curlftpfs можно монтировать FTP как обычную файловую систему на Linux — удобно для интеграции с локальными скриптами.
  • VSFTPD поддерживает ограничение скорости для пользователей и групп — полезно, если не хочешь, чтобы кто-то забил весь канал.
  • Можно сделать временных пользователей с помощью cron и скриптов — для разовых задач или гостевого доступа.

Автоматизация и новые возможности

VSFTPD отлично дружит с автоматизацией. Ты можешь:

  • Генерировать пользователей и пароли на лету для клиентов через bash/python-скрипты.
  • Интегрировать FTP в CI/CD пайплайны для выгрузки билдов или логов.
  • Использовать FTP для обмена файлами между разными сервисами внутри инфраструктуры (например, между веб-сервером и бэкап-сервером).
  • Автоматически чистить старые файлы с помощью cron и find.
  • Собирать статистику по загрузкам и выгрузкам для отчётности.

Выводы и рекомендации

VSFTPD — это тот самый случай, когда “просто работает”. Если тебе нужен быстрый, безопасный и минималистичный FTP-сервер для пользовательских директорий на Ubuntu 24 — смело ставь vsftpd. Он не требует много ресурсов, легко настраивается, отлично подходит для хостинга, обмена файлами, автоматизации и интеграции с другими сервисами. Для большинства задач хватит базовой конфигурации, а если нужно что-то сложнее — всегда можно докрутить через плагины, скрипты или интеграцию с PAM.

Используй VSFTPD, если:

  • Нужен FTP-доступ для нескольких пользователей с изоляцией директорий.
  • Важно быстро развернуть сервис без лишних зависимостей.
  • Планируешь автоматизировать работу с файлами через скрипты.
  • Хочешь минимизировать риски безопасности (при правильной настройке).

Если нужен VPS или выделенный сервер для своих экспериментов — VPS тут, dedicated тут. Не забывай про регулярные бэкапы и мониторинг логов!

Вопросы, кейсы, лайфхаки — пиши в комментарии. Удачной настройки и стабильного аптайма!


В этой статье собрана информация и материалы из различных интернет-источников. Мы признаем и ценим работу всех оригинальных авторов, издателей и веб-сайтов. Несмотря на то, что были приложены все усилия для надлежащего указания исходного материала, любая непреднамеренная оплошность или упущение не являются нарушением авторских прав. Все упомянутые товарные знаки, логотипы и изображения являются собственностью соответствующих владельцев. Если вы считаете, что какой-либо контент, использованный в этой статье, нарушает ваши авторские права, немедленно свяжитесь с нами для рассмотрения и принятия оперативных мер.

Данная статья предназначена исключительно для ознакомительных и образовательных целей и не ущемляет права правообладателей. Если какой-либо материал, защищенный авторским правом, был использован без должного упоминания или с нарушением законов об авторском праве, это непреднамеренно, и мы исправим это незамедлительно после уведомления. Обратите внимание, что переиздание, распространение или воспроизведение части или всего содержимого в любой форме запрещено без письменного разрешения автора и владельца веб-сайта. Для получения разрешений или дополнительных запросов, пожалуйста, свяжитесь с нами.

Leave a reply

Your email address will not be published. Required fields are marked