SystemdDoctor
служба не работает передача файлов права

Служба передачи файлов отказывает при входе: каталог доступен для записи

Служба передачи файлов запирает пользователя в его каталоге и отказывается работать, если этот каталог доступен для записи самому пользователю. Это защита от обхода ограничения, а не ошибка настройки. Правильное устройство — каталог только для чтения с подкаталогом для записи внутри.

Вероятные причины

По порядку: сверху то, что встречается чаще.

  1. Домашний каталог доступен для записи владельцу

    Защита не разрешает такую схему: из каталога, доступного для записи, ограничение можно обойти.

  2. Ограничение отключают вместо правильной настройки

    Отключение защиты убирает сообщение, но открывает пользователю всю файловую систему.

  3. Пассивный режим не работает через брандмауэр

    Вход проходит, а список файлов не приходит: диапазон портов пассивного режима закрыт.

Диагностика

Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.

Сообщения службы о входах и ограничении каталога.

journalctl -u vsftpd -n 30 --no-pager

Права домашнего каталога пользователя.

sudo ls -ld /home/ftpuser

Настройки ограничения каталога и пассивного режима.

sudo grep -iE "chroot|pasv" /etc/vsftpd.conf

Решение

Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.

1. Домашний каталог доступен для записи владельцу
Почему происходит
Защита не разрешает такую схему: из каталога, доступного для записи, ограничение можно обойти.
Как проверить
Посмотрите права домашнего каталога и сообщение службы.
sudo ls -ld /home/ftpuser 2>/dev/null
journalctl -u vsftpd -n 20 --no-pager | grep -i chroot
Как исправить
Сделайте домашний каталог доступным только для чтения, а внутри создайте подкаталог для загрузки с правом записи. Это правильная схема, а не обход защиты.
sudo chmod a-w /home/ftpuser && sudo mkdir -p /home/ftpuser/upload && sudo chown ftpuser /home/ftpuser/upload
2. Ограничение отключают вместо правильной настройки
Почему происходит
Отключение защиты убирает сообщение, но открывает пользователю всю файловую систему.
Как проверить
Посмотрите, не отключена ли защита.
sudo grep -iE "allow_writeable_chroot|chroot_local_user" /etc/vsftpd.conf 2>/dev/null
Как исправить
Не отключайте защиту на доступной извне службе. Схема с каталогом только для чтения решает задачу без потери ограничения.
3. Пассивный режим не работает через брандмауэр
Почему происходит
Вход проходит, а список файлов не приходит: диапазон портов пассивного режима закрыт.
Как проверить
Посмотрите диапазон портов и правила.
sudo grep -iE "pasv_min_port|pasv_max_port|pasv_address" /etc/vsftpd.conf 2>/dev/null
sudo ss -tlnp | grep vsftpd
Как исправить
Задайте узкий диапазон портов пассивного режима и откройте именно его. Без этого клиенты будут зависать на получении списка файлов.

Пример вывода

Домашний каталог доступен для записи владельцу. Пример показательный: он собран на тестовой машине специально для этой страницы, а не взят из чужого журнала.

vsftpd[7500]: [ftpuser] FAIL LOGIN: Client "192.0.2.10"
vsftpd[7500]: 500 OOPS: vsftpd: refusing to run with writable root inside chroot()

$ sudo ls -ld /home/ftpuser
drwxr-xr-x 3 ftpuser ftpuser 4096 Sep 15 17:50 /home/ftpuser

Связанные ошибки

Где встречается чаще всего

Источники

  • vsftpd.conf(5)
    Ограничение каталога пользователя и требования к правам.
    официальная документация, systemd 255
    сверено 15 сентября 2026
  • Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
    Воспроизведено домашним каталогом с правом записи для владельца.
    собственная проверка, systemd 255
    сверено 15 сентября 2026