Другое

ProFTPD лог пустой: причины и решения

Узнайте, почему файлы логов ProFTPD остаются пустыми и как это исправить. Анализ конфигурации, прав доступа и версионных особенностей. Пошаговые решения для CentOS 9.

Почему файл лога ProFTPD /var/log/proftpd/proftpd.log остается пустым?

При перезапуске сервиса ProFTPD файл лога создается, но в него ничего не записывается. При попытке неверной авторизации создается файл /var/log/proftpd/auth.log, но он также остается пустым.

Детали системы:

  • Версия ProFTPD: 1.3.8d
  • ОС: CentOS 9

Конфигурация ProFTPD:

SystemLog       /var/log/proftpd/proftpd.log
TransferLog     /var/log/proftpd/xfer.log
ExtendedLog     /var/log/proftpd/access.log WRITE,READ default
ExtendedLog     /var/log/proftpd/auth.log AUTH auth

Какие возможные причины пустых лог-файлов и как это исправить?

Файл лога ProFTPD /var/log/proftpd/proftpd.log остается пустым из-за конфигурационных проблем, конфликтов с системным логированием или специфических ошибок в версии 1.3.8d. Основные причины включают неправильную настройку директив SystemLog, проблемы с правами доступа, конфликты с systemd и известные баги в старых версиях ProFTPD.

Содержание


Основные причины пустых лог-файлов

Пустые лог-файлы ProFTPD могут быть вызваны несколькими основными факторами:

  1. Некорректная настройка директивы SystemLog - в версиях до 1.3.4rc1 эта директива игнорировала параметр SyslogLevel, что приводило к проблемам с логированием источник.

  2. Конфликты с системным логированием - ProFTPD может продолжать использовать системный лог (syslog) даже при указании SystemLog, особенно при неправильной конфигурации источник.

  3. Проблемы с правами доступа - процесс ProFTPD может не иметь необходимых разрешений для записи в указанные директории файлов источник.

  4. Известные ошибки в конкретных версиях - в версии 1.3.8d существуют специфические проблемы с SystemLog, особенно на системах с systemd источник.

  5. Файловая система заполнена - нехватка места на диске может блокировать запись логов источник.


Конфигурационные проблемы

Наиболее частые конфигурационные ошибки, приводящие к пустым логам:

Проблема с директивой SystemLog

В вашей конфигурации указана:

SystemLog /var/log/proftpd/proftpd.log

Однако в версиях ProFTPD 1.3.x существует известная проблема, при которой SystemLog игнорируется или работает некорректно. Как отмечает официальная документация ProFTPD, поведение директивы SystemLog изменилось в версии 1.3.4rc1, но даже в более новых версиях сохраняются проблемы.

Конфликт с SyslogLevel

Если в конфигурации присутствует директива SyslogLevel, она может влиять на работу SystemLog:

# Эта директива может мешать SystemLog работать правильно
SyslogLevel EMERG

Рекомендуемая конфигурация

Для версии 1.3.8d попробуйте следующую конфигурацию:

# Отключаем системный лог для использования файла
SystemLog /var/log/proftpd/proftpd.log
SyslogLevel NONE

# Убедимся, что ExtendedLog работает правильно
ExtendedLog /var/log/proftpd/access.log WRITE,READ default
ExtendedLog /var/log/proftpd/auth.log AUTH auth

Важно: Проверьте, чтобы в конфигурации не было конфликтующих директив, которые могут перенаправлять логирование обратно в системный syslog.


Проблемы с правами доступа и разрешениями

Права доступа - одна из самых частых причин пустых лог-файлов ProFTPD:

Проверка прав доступа

Выполните следующие команды для проверки и исправления прав:

bash
# Проверяем владельца файла
ls -la /var/log/proftpd/

# Проверяем права на директорию
ls -ld /var/log/proftpd/

# Проверяем права на файлы
ls -la /var/log/proftpd/proftpd.log

Необходимые права

ProFTPD должен иметь права на запись в директорию /var/log/proftpd/. Обычно это права 755 для директории и 644 для файлов.

bash
# Устанавливаем правильные права
sudo chmod 755 /var/log/proftpd/
sudo chmod 644 /var/log/proftpd/proftpd.log

# Устанавливаем правильного владельца
sudo chown root:root /var/log/proftpd/proftpd.log

Проблема с SELinux

В CentOS 9 SELinux может блокировать запись логов ProFTPD:

bash
# Проверяем статус SELinux
sestatus

# Временно отключаем для теста
sudo setenforce 0

# Проверяем, решает ли это проблему
sudo systemctl restart proftpd

Если после отключения SELinux логи начали записываться, настройте правильные контексы:

bash
# Устанавливаем правильный контекст SELinux
sudo semanage fcontext -a -t var_log_t "/var/log/proftpd(/.*)?"
sudo restorecon -Rv /var/log/proftpd/

Версионные особенности и известные ошибки

Версия ProFTPD 1.3.8d имеет специфические проблемы:

Известный баг с SystemLog

Согласно отчету об ошибке на GitHub, в версии ProFTPD 1.3.6c на CentOS 8 (и аналогичных системах) SystemLog игнорируется, файл создается, но записи в него не производятся.

Проблемы с systemd

В системах с systemd ProFTPD может использовать системный журнал вместо указанного файла:

bash
# Проверяем, куда на самом деле пишет логи ProFTPD
journalctl -u proftpd.service

Обходной путь для версии 1.3.8d

Временным решением может быть использование ExtendedLog вместо SystemLog:

# Вместо SystemLog используем ExtendedLog для всех событий
ExtendedLog /var/log/proftpd/system.log ALL default

Или использование директивы ServerLog для VirtualHost:

<IfModule mod_log.c>
  ServerLog /var/log/proftpd/proftpd.log
</IfModule>

Настройка правильного логирования

Рабочая конфигурация для CentOS 9

Для вашей системы рекомендуется следующая конфигурация:

# Основные настройки
ServerName "ProFTPD"
ServerType standalone
DefaultServer on
Port 21

# Логирование - рабочая конфигурация
SystemLog /var/log/proftpd/proftpd.log
TransferLog /var/log/proftpd/xfer.log

# Используем ExtendedLog для детального логирования
ExtendedLog /var/log/proftpd/access.log WRITE,READ default
ExtendedLog /var/log/proftpd/auth.log AUTH auth

# Форматы логов
LogFormat default "%h %l %u %t \"%r\" %s %b"
LogFormat auth "%v [%P] %h %t \"%r\" %s"
LogFormat write "%h %l %u %t \"%r\" %s %b"

Проверка конфигурации

После внесения изменений проверьте конфигурацию:

bash
# Проверяем синтаксис конфигурации
sudo proftpd -t

# Перезапускаем сервис
sudo systemctl restart proftpd

Тестирование логирования

Для тестирования выполните следующие действия:

bash
# Проверяем, создаются ли файлы
ls -la /var/log/proftpd/

# Проверяем права доступа
ls -la /var/log/proftpd/proftpd.log

# Пытаемся подключиться с неверными данными для проверки auth.log
ftp localhost
# Используем неверный логин/пароль

Диагностика и решение проблем

Пошаговый процесс диагностики

  1. Проверьте, что сервис запущен правильно:

    bash
    sudo systemctl status proftpd
    
  2. Проверьте конфигурацию на ошибки:

    bash
    sudo proftpd -t
    
  3. Проверьте права доступа:

    bash
    ls -la /var/log/proftpd/
    
  4. Проверьте SELinux:

    bash
    sudo sestatus
    sudo journalctl -u proftpd.service
    
  5. Проверьте, нет ли конфликтующих конфигов:

    bash
    sudo find /etc -name "*proftpd*" -type f
    

Решение проблем

Если все проверки пройдены, а логи остаются пустыми, попробуйте следующие решения:

Решение 1: Использование ExtendedLog вместо SystemLog

# Заменяем SystemLog на ExtendedLog
ExtendedLog /var/log/proftpd/system.log ALL default

Решение 2: Настройка правильного контекста SELinux

bash
# Устанавливаем правильный контекст
sudo semanage fcontext -a -t var_log_t "/var/log/proftpd(/.*)?"
sudo restorecon -Rv /var/log/proftpd/

Решение 3: Обновление ProFTPD

bash
# Проверяем доступные версии
sudo dnf --enablerepo=powertools list proftpd

# Обновляем до последней версии
sudo dnf update proftpd

Решение 4: Использование системного лога

# Временно используем системный лог
SystemLog syslog

Источники

  1. ProFTPD: Logging Documentation
  2. SystemLog setting ignored on GitHub Issue #1017
  3. ProFTPD ignores SystemLog - Narkive Forum
  4. LogMessages Documentation - Fossies
  5. Using SystemLog does not disable syslog - GitHub Issue #723
  6. ProFTPD mini-HOWTO - Logging

Заключение

Основные причины пустых лог-файлов ProFTPD в вашей системе:

  1. Конфигурационные ошибки - директива SystemLog в версии 1.3.8d может игнорироваться. Попробуйте использовать ExtendedLog для всех событий вместо SystemLog.

  2. Проблемы с правами доступа - убедитесь, что ProFTPD имеет права на запись в /var/log/proftpd/ и что SELinux не блокирует доступ.

  3. Конфликты с systemd - проверьте, не перенаправляет ли systemd логи в системный журнал вместо указанного файла.

  4. Версионные баги - в ProFTPD 1.3.8d существуют известные проблемы с SystemLog, которые могут потребовать обновления или использования обходных путей.

Рекомендуемые действия:

  • Проверить и исправить права доступа к лог-файлам
  • Отключить SELinux для тестирования и при необходимости настроить правильные контексты
  • Попробовать использовать ExtendedLog вместо SystemLog
  • Обновить ProFTPD до последней стабильной версии
  • Проверить конфигурацию на наличие конфликтующих директив
Авторы
Проверено модерацией
Модерация