rsyslogd: omfile: не удалось создать родительские директории для файла ‘Доступ запрещён’: /home//logs/docker/log

Вопрос или проблема

Я получаю следующую ошибку (обратите внимание, что rsyslogd запущен от имени root)

rsyslogd: omfile: создание родительских директорий для файла 'Доступ запрещен' не удалось: /home/<user>/logs/docker/log

Эта директория имеет такие права:

drwxr-xr-x. 2 <user> <group>      6 Сен 23 12:20 docker

Независимо от прав, так как rsyslogd запущен от имени root, я думаю, что с этим не должно быть проблем?

ps -eo user,group,pid,comm | grep rsyslogd
root     root     14910 rsyslogd

У меня нет доступа к root, но я попросил человека с доступом root проверить, и они могут записывать в /home/<user>/logs/docker/log через vim, так что это предполагает, что проблема связана с rsyslogd.

rsyslogd 8.24.0-57.el7_9.3, скомпилирован с:
        PLATFORM:                               x86_64-redhat-linux-gnu
        PLATFORM (lsb_release -d):
        FEATURE_REGEXP:                         Да
        Поддержка GSSAPI Kerberos 5:            Да
        FEATURE_DEBUG (отладочная сборка, медленный код): Нет
        Поддержка 32-битных атомарных операций: Да
        Поддержка 64-битных атомарных операций: Да
        Аллокатор памяти:                       системный по умолчанию
        Время выполнения инструментирования (медленный код): Нет
        Поддержка uuid:                         Да
        Количество бит в целых числах RainerScript: 64

Смотрите http://www.rsyslog.com для получения дополнительной информации.

Ответ или решение

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

Возможные причины

  1. SELinux: Если на вашем сервере включен SELinux, он может блокировать rsyslogd запись в указанный каталог, даже если пользователь имеет все права. Для проверки статуса SELinux выполните следующую команду:

    sestatus
  2. Проблемы с правами: Убедитесь, что права доступа к всем родительским директориям (то есть /home/<user>/logs/docker/) также позволят rsyslogd записывать в них.

  3. Файловая система: Убедитесь, что файловая система, в которой находится /home/<user>/logs/docker/, не смонтирована с параметрами, запрещающими запись.

Решение

  1. Проверка SELinux:
    Если SELinux активирован, вы можете временно отключить его для тестирования. Используйте команду:

    setenforce 0

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

    ausearch -m avc -ts recent
  2. Проверка прав на родительские директории:
    Убедитесь, что вы используете следующие права доступа:

    chmod -R 755 /home/<user>/logs

    Также проверьте владельца директорий:

    chown -R <user>:<group> /home/<user>/logs
  3. Изменение конфигурации rsyslog:
    Если вы не можете изменить права доступа, вы можете попробовать изменить конфигурацию rsyslog на использование другого расположения файла журнала, на которое rsyslogd имеет полные права. Измените конфигурационный файл /etc/rsyslog.conf или добавьте новый файл в /etc/rsyslog.d/.

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

    systemctl restart rsyslog

Заключение

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

Оцените материал
Добавить комментарий

Капча загружается...