Обычный пользователь не видит журнал службы
Без дополнительных прав пользователь видит только записи своих служб. Системный журнал читают члены специальных групп. Это не сбой, а разграничение доступа: журнал содержит сведения обо всей системе.
Вероятные причины
По порядку: сверху то, что встречается чаще.
-
Пользователь не в группе чтения журнала
Доступ к системному журналу дают группы журнала и администрирования. Без членства вывод пуст или урезан.
-
Запрашивается журнал другой службы
Даже с правами чтения нужно указывать имя unit правильно: опечатка даёт пустой вывод без сообщения об ошибке.
-
Журнал только в памяти и очищен перезагрузкой
При непостоянном журнале записи прошлых загрузок недоступны никому.
Диагностика
Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.
Группы текущего пользователя.
idЕсть ли доступ к записям конкретной службы.
journalctl -u myapp.service -n 5 --no-pagerТочное имя unit.
systemctl list-units --all "myapp*" --no-legendРешение
Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.
- Почему происходит
- Доступ к системному журналу дают группы журнала и администрирования. Без членства вывод пуст или урезан.
- Как проверить
-
Посмотрите группы пользователя.
id getent group systemd-journal adm 2>/dev/null
- Как исправить
-
Добавьте пользователя в группу чтения журнала. Членство вступает в силу при новом входе, а не сразу.
sudo usermod -aG systemd-journal ivan
- Почему происходит
- Даже с правами чтения нужно указывать имя unit правильно: опечатка даёт пустой вывод без сообщения об ошибке.
- Как проверить
-
Проверьте имя и наличие записей.
systemctl list-units --all "myapp*" --no-legend journalctl -u myapp.service -n 5 --no-pager
- Как исправить
- Уточните имя unit. Пустой вывод при верном имени означает, что служба ещё не писала в журнал в выбранном промежутке.
- Почему происходит
- При непостоянном журнале записи прошлых загрузок недоступны никому.
- Как проверить
-
Посмотрите, постоянный ли журнал.
journalctl --list-boots | wc -l; test -d /var/log/journal && echo постоянный || echo только в памяти
- Как исправить
- Включите постоянное хранение журнала, иначе разбирать прошлые сбои будет нечем.
Пример вывода
Пользователь вне группы видит только свои записи. Пример показательный: он собран на тестовой машине специально для этой страницы, а не взят из чужого журнала.
$ journalctl -u nginx.service
-- No entries --
$ id
uid=1001(ivan) gid=1001(ivan) groups=1001(ivan)
Связанные ошибки
- Permission denied в журнале службы Отказ в доступе у службы systemd: права на файл, каталоги по пути, пользователь службы, параметры изоляции, SELinux и AppArmor.
- Журнал пропадает после перезагрузки journalctl не показывает записи прошлых загрузок: журнал хранится только в памяти. Как включить постоянное хранение.
- Записи пользовательской службы не находятся обычным запросом journalctl -u не находит записи: пользовательские службы требуют указания области.
- AppArmor: apparmor="DENIED" в журнале ядра Профиль AppArmor запретил операцию: как прочитать запись, найти профиль и поправить его правильно.
- Caddy не занимает порты 80 и 443 без прав Служба падает при открытии слушателя: нет возможности занимать привилегированные порты.
- Configuration file is marked executable Предупреждение о правах: unit-файл помечен исполняемым. Откуда берётся и почему это стоит исправить.
- Configuration file is marked world-inaccessible Предупреждение о правах на unit-файл: служба работает, но файл недоступен для чтения другим.
- File corrupted or uncleanly shut down, renaming and replacing Журнал повреждён после жёсткой перезагрузки: что означает сообщение и когда нужно вмешательство.
Где встречается чаще всего
Источники
-
journalctl(1)
Права доступа к журналу и подсказки о видимости записей. -
Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
Воспроизведено чтением журнала от пользователя без групп.