Home » Настройка vsftpd для каталога пользователя на Ubuntu 24.04
Настройка vsftpd для каталога пользователя на Ubuntu 24.04

Настройка vsftpd для каталога пользователя на Ubuntu 24.04

В этом посте разберёмся, как быстро и без боли настроить vsftpd (Very Secure FTP Daemon) для работы с каталогом пользователя на свежей Ubuntu 24.04. Почему это важно? FTP — старый, но до сих пор живой протокол для обмена файлами, особенно когда речь идёт о хостинге, тестовых серверах, автоматизации деплоя или просто удобном доступе к файлам без лишней возни. Настройка vsftpd — это не только про «чтобы работало», но и про безопасность, удобство и гибкость. В статье — практические советы, схемы, примеры, грабли и лайфхаки, которые пригодятся и новичку, и бывалому администратору. Погнали!

Как это работает: немного теории, чтобы не было сюрпризов

vsftpd — это FTP-сервер, который славится своей безопасностью и минимализмом. Он входит в стандартные репозитории Ubuntu, поддерживает виртуальных и системных пользователей, chroot, SSL/TLS, пассивный и активный режимы. Для большинства задач (особенно если речь о хостинге или автоматизации) нам нужен сценарий: пользователь логинится по FTP и попадает в свой домашний каталог, не видит чужих файлов и не может выйти за пределы своей «песочницы».

  • Системные пользователи — обычные юзеры Linux, которым можно дать доступ по FTP.
  • Виртуальные пользователи — отдельные учётки, не существующие в системе, но работающие через PAM или базы данных.
  • Chroot — изоляция пользователя в его домашнем каталоге (или другом заданном месте).
  • SSL/TLS — шифрование трафика, чтобы пароли не летали в открытом виде.

Всё это можно настроить довольно быстро, если знать, куда смотреть. Но есть нюансы: права на каталоги, SELinux/AppArmor, firewall, особенности пассивного режима, и, конечно, грабли с клиентами (FileZilla, WinSCP, lftp и т.д.).

Как быстро и просто всё настроить: пошаговая инструкция

Вот тебе пошаговый гайд, как за 10-15 минут поднять рабочий FTP-сервер на vsftpd, чтобы пользователь попадал только в свой каталог. Всё тестировалось на Ubuntu 24.04 LTS (Jammy Jellyfish), но подойдёт и для других версий с минимальными изменениями.

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


sudo apt update
sudo apt install vsftpd

  1. Создание пользователя (если нужно отдельного FTP-пользователя)


sudo adduser ftpuser
# Задаём пароль, домашний каталог будет /home/ftpuser

  1. Резервное копирование и настройка конфигурации


sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak
sudo nano /etc/vsftpd.conf

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


listen=YES
listen_ipv6=NO
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
pasv_enable=YES
pasv_min_port=40000
pasv_max_port=40100

  • chroot_local_user=YES — изолирует всех локальных пользователей в их домашнем каталоге.
  • allow_writeable_chroot=YES — разрешает запись в chroot-каталоге (иначе vsftpd ругается на небезопасность).
  • local_root — можно задать подкаталог, например, /home/$USER/ftp, чтобы не светить весь home.
  • pasv_enable и диапазон портов — для пассивного режима (важно для NAT/VPS/облака).
  1. Создание каталога для файлов и установка прав


sudo mkdir -p /home/ftpuser/ftp
sudo chown ftpuser:ftpuser /home/ftpuser/ftp
sudo chmod 750 /home/ftpuser/ftp

  1. Открытие портов в firewall (если включён ufw)


sudo ufw allow 21/tcp
sudo ufw allow 40000:40100/tcp

  1. Перезапуск vsftpd


sudo systemctl restart vsftpd

  1. Проверка подключения

Подключаемся через FileZilla, WinSCP или любой FTP-клиент:
host: IP или домен сервера
user: ftpuser
password: тот, что задали
port: 21
режим: пассивный (PASV)

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

Вот несколько кейсов из жизни, чтобы не наступать на грабли:

Кейс Что происходит Рекомендация
Пользователь видит чужие каталоги chroot_local_user=NO или не настроен chroot Включить chroot_local_user=YES, проверить права на каталоги
Не удаётся загрузить файл, ошибка “550 Permission denied” Права на каталог не позволяют запись chown/chmod на каталог, убедиться, что allow_writeable_chroot=YES
FTP-клиент зависает при листинге Проблемы с пассивным режимом, firewall не пускает порты Открыть диапазон пассивных портов, указать их в конфиге
Пароль передаётся в открытом виде Не включён SSL/TLS Настроить ssl_enable=YES, сгенерировать сертификат
Пользователь не может выйти за пределы каталога, но нужно дать доступ к подкаталогам chroot работает как надо, но нужны симлинки Использовать bind mount или симлинки внутри chroot

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

FTP — не единственный способ дать доступ к файлам. Вот краткая таблица сравнения:

Решение Плюсы Минусы Когда использовать
vsftpd Просто, быстро, безопасно, есть везде FTP — не шифрует по умолчанию, устаревший протокол Классика, совместимость, массовый хостинг
ProFTPD Гибкая настройка, поддержка виртуальных пользователей Сложнее конфиг, больше attack surface Когда нужен кастомный FTP
Pure-FTPd Простота, поддержка виртуальных пользователей, SSL Меньше документации, не всегда в репах Лёгкие FTP-сервера, shared hosting
SFTP (через OpenSSH) Шифрование, безопасность, не требует отдельного демона Не все клиенты поддерживают, не всегда удобно для массового хостинга Когда важна безопасность, автоматизация
WebDAV Работает через HTTP/HTTPS, поддержка в Windows/Mac Сложнее настройка, проблемы с правами Интеграция с веб-приложениями, облако

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

Интересные факты и нестандартные способы использования

  • vsftpd умеет работать в режиме standalone и через xinetd — можно запускать только при необходимости, экономя ресурсы.
  • Можно использовать виртуальных пользователей через PAM, чтобы не плодить системные учётки — удобно для хостинга десятков сайтов.
  • vsftpd поддерживает SSL/TLS (FTPS), что позволяет безопасно передавать пароли и файлы даже через публичные сети.
  • Для автоматизации можно использовать lftp или curlftpfs — монтировать FTP как обычную папку и работать с файлами скриптами.
  • В связке с fail2ban можно защититься от брутфорса — банить IP после нескольких неудачных попыток входа.
  • Можно настроить quota для пользователей, чтобы не переполнили диск (через стандартные квоты Linux).

Новые возможности: автоматизация и скрипты

Когда у тебя есть рабочий vsftpd, открывается куча сценариев для автоматизации:

  • Автоматический деплой — скрипты на bash/python могут заливать файлы по FTP на сервер после сборки.
  • Бэкапы — можно сливать дампы баз или архивы прямо на FTP с помощью cron и lftp.
  • Интеграция с CI/CD — многие CI/CD-системы (GitLab CI, Jenkins) умеют деплоить артефакты по FTP.
  • Мониторинг — можно отслеживать загрузку файлов, логировать действия пользователей, отправлять алерты.
  • Виртуальный хостинг — каждый пользователь получает свой каталог, не видит чужих, можно быстро добавлять/удалять учётки.

Для автоматизации часто используют lftp:


lftp -u ftpuser,password -e "mirror -R ./localdir /; quit" ftp://example.com

Или монтируют FTP как папку:


sudo apt install curlftpfs
sudo curlftpfs ftpuser:[email protected] /mnt/ftp

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

vsftpd — это быстрый, надёжный и безопасный способ раздать доступ к файлам на сервере, особенно если нужен классический FTP для хостинга, обмена файлами или автоматизации. Он отлично подходит для:

  • Малых и средних проектов, где важна простота и совместимость
  • Хостинга сайтов, когда нужно дать доступ клиенту только к его каталогу
  • Автоматизации деплоя и бэкапов
  • Виртуального хостинга с десятками пользователей

Если нужна максимальная безопасность — включай SSL/TLS, используй fail2ban, не открывай лишние порты. Для массового хостинга — переходи на виртуальных пользователей. Если хочется чего-то современного — смотри в сторону SFTP или WebDAV, но для большинства задач vsftpd остаётся золотым стандартом.

Нужен VPS для тестов или продакшена? Закажи VPS здесь — быстро, удобно, надёжно.
Для больших проектов — выделенный сервер с root-доступом и полной свободой.

Если остались вопросы — смело спрашивай в комментариях, делись опытом и лайфхаками. Пусть твой FTP всегда будет быстрым, безопасным и удобным!


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

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

Leave a reply

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