У меня есть одна система, в которой / 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 не изменяет права и не создает эти файлы позже? Не уверен, будет ли исправление постоянным или нет.
Вы уже определили, что это проблема с правами доступа к файлу и что пользователь, указанный для службы в /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 Надеюсь, это поможет вам начать. Удачи!