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 могут быть вызваны несколькими основными факторами:
-
Некорректная настройка директивы
SystemLog- в версиях до 1.3.4rc1 эта директива игнорировала параметрSyslogLevel, что приводило к проблемам с логированием источник. -
Конфликты с системным логированием - ProFTPD может продолжать использовать системный лог (syslog) даже при указании
SystemLog, особенно при неправильной конфигурации источник. -
Проблемы с правами доступа - процесс ProFTPD может не иметь необходимых разрешений для записи в указанные директории файлов источник.
-
Известные ошибки в конкретных версиях - в версии 1.3.8d существуют специфические проблемы с
SystemLog, особенно на системах с systemd источник. -
Файловая система заполнена - нехватка места на диске может блокировать запись логов источник.
Конфигурационные проблемы
Наиболее частые конфигурационные ошибки, приводящие к пустым логам:
Проблема с директивой 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:
Проверка прав доступа
Выполните следующие команды для проверки и исправления прав:
# Проверяем владельца файла
ls -la /var/log/proftpd/
# Проверяем права на директорию
ls -ld /var/log/proftpd/
# Проверяем права на файлы
ls -la /var/log/proftpd/proftpd.log
Необходимые права
ProFTPD должен иметь права на запись в директорию /var/log/proftpd/. Обычно это права 755 для директории и 644 для файлов.
# Устанавливаем правильные права
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:
# Проверяем статус SELinux
sestatus
# Временно отключаем для теста
sudo setenforce 0
# Проверяем, решает ли это проблему
sudo systemctl restart proftpd
Если после отключения SELinux логи начали записываться, настройте правильные контексы:
# Устанавливаем правильный контекст 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 может использовать системный журнал вместо указанного файла:
# Проверяем, куда на самом деле пишет логи 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"
Проверка конфигурации
После внесения изменений проверьте конфигурацию:
# Проверяем синтаксис конфигурации
sudo proftpd -t
# Перезапускаем сервис
sudo systemctl restart proftpd
Тестирование логирования
Для тестирования выполните следующие действия:
# Проверяем, создаются ли файлы
ls -la /var/log/proftpd/
# Проверяем права доступа
ls -la /var/log/proftpd/proftpd.log
# Пытаемся подключиться с неверными данными для проверки auth.log
ftp localhost
# Используем неверный логин/пароль
Диагностика и решение проблем
Пошаговый процесс диагностики
-
Проверьте, что сервис запущен правильно:
bashsudo systemctl status proftpd -
Проверьте конфигурацию на ошибки:
bashsudo proftpd -t -
Проверьте права доступа:
bashls -la /var/log/proftpd/ -
Проверьте SELinux:
bashsudo sestatus sudo journalctl -u proftpd.service -
Проверьте, нет ли конфликтующих конфигов:
bashsudo find /etc -name "*proftpd*" -type f
Решение проблем
Если все проверки пройдены, а логи остаются пустыми, попробуйте следующие решения:
Решение 1: Использование ExtendedLog вместо SystemLog
# Заменяем SystemLog на ExtendedLog
ExtendedLog /var/log/proftpd/system.log ALL default
Решение 2: Настройка правильного контекста SELinux
# Устанавливаем правильный контекст
sudo semanage fcontext -a -t var_log_t "/var/log/proftpd(/.*)?"
sudo restorecon -Rv /var/log/proftpd/
Решение 3: Обновление ProFTPD
# Проверяем доступные версии
sudo dnf --enablerepo=powertools list proftpd
# Обновляем до последней версии
sudo dnf update proftpd
Решение 4: Использование системного лога
# Временно используем системный лог
SystemLog syslog
Источники
- ProFTPD: Logging Documentation
- SystemLog setting ignored on GitHub Issue #1017
- ProFTPD ignores SystemLog - Narkive Forum
- LogMessages Documentation - Fossies
- Using SystemLog does not disable syslog - GitHub Issue #723
- ProFTPD mini-HOWTO - Logging
Заключение
Основные причины пустых лог-файлов ProFTPD в вашей системе:
-
Конфигурационные ошибки - директива
SystemLogв версии 1.3.8d может игнорироваться. Попробуйте использоватьExtendedLogдля всех событий вместоSystemLog. -
Проблемы с правами доступа - убедитесь, что ProFTPD имеет права на запись в
/var/log/proftpd/и что SELinux не блокирует доступ. -
Конфликты с systemd - проверьте, не перенаправляет ли systemd логи в системный журнал вместо указанного файла.
-
Версионные баги - в ProFTPD 1.3.8d существуют известные проблемы с
SystemLog, которые могут потребовать обновления или использования обходных путей.
Рекомендуемые действия:
- Проверить и исправить права доступа к лог-файлам
- Отключить SELinux для тестирования и при необходимости настроить правильные контексты
- Попробовать использовать
ExtendedLogвместоSystemLog - Обновить ProFTPD до последней стабильной версии
- Проверить конфигурацию на наличие конфликтующих директив