Что может привести к записи / var / log / syslog только при выполнении rsyslog -d?

У меня есть одна система, в которой / var / log / syslog записывается как положено, и другая система, в которую она не может быть записана, если я не остановлю службу rsyslog и не запусту ее вручную с помощью «rsyslog -d».

Как мне отладить эту проблему? Я попытался удалить все в /etc/rsyslog.d/, воссоздав его.

Я попытался удалить и переустановить rsyslogd

apt-get remove rsyslogd and apt-get install rsyslogd ubuntu-minimal

, а затем проверил, что служба работает, но обновляются только другие журналы, а не /var/log/syslog.

Я просто пытаюсь настроить rsyslog по умолчанию.

Я заметил, что / var / log / syslog - это root: adm вместо syslog: adm. Файлы журнала, которые являются пользователем системного журнала, работают хорошо. Если я сделаю / var / log / syslog syslog: adm, то он начнет работать. Возможно, разрешения нарушены как-то. Разве logrotate не изменяет права и не создает эти файлы позже? Не уверен, будет ли исправление постоянным или нет.

0
задан 05.05.2020, 13:00

1 ответ

Вы уже определили, что это проблема с правами доступа к файлу и что пользователь, указанный для службы в /etc/rsyslog.conf , не может записать в файл журнала. Однако ваш пользователь входа в систему (предположительно root) имеет доступ при интерактивном запуске. Вот пример раздела rsyslog.conf , который задает конфигурацию пользователя службы:

#
# Set the default permissions for all log files.
#
$FileOwner syslog
$FileGroup adm
$FileCreateMode 0640
$DirCreateMode 0755
$Umask 0022
$PrivDropToUser syslog
$PrivDropToGroup syslog

Что касается logrotate, вы можете настроить способ управления файлами системного журнала, см. /etc/logrotate.conf и /etc/logrotate.d/rsyslog . Вот пример:

/var/log/syslog
{
        rotate 7
        daily
        missingok
        notifempty
        delaycompress
        compress
        postrotate
                reload rsyslog >/dev/null 2>&1 || true
        endscript
}

В моей тестовой системе logrotate.conf также содержит:

# rotate log files weekly
weekly

# keep 4 weeks worth of backlogs
rotate 4

# create new (empty) log files after rotating old ones
create

Из man logrotate :

create mode owner group
    Immediately after rotation (before the postrotate script is run) the log file is created (with the same name  as  the  log
    file  just  rotated).   mode specifies the mode for the log file in octal (the same as chmod(2)), owner specifies the user
    name who will own the log file, and group specifies the group the log file will belong to. Any of the log file  attributes
    may  be omitted, in which case those attributes for the new file will use the same values as the original log file for the
    omitted attributes. This option can be disabled using the nocreate option.

Таким образом, в моем случае опция create определяет, как устанавливаются новые атрибуты файла, поскольку опции, указанные в /etc/logrotate.d/rsyslog не переопределяйте этот глобальный параметр. Когда режим mode , владелец и группа не указаны, logrotate использует те же значения, что и исходный файл журнала.

1120 Надеюсь, это поможет вам начать. Удачи!

0
ответ дан 05.05.2020, 13:01

Теги

Похожие вопросы