journalctl
は systemd 環境で利用できるログ閲覧コマンドですが、一般ユーザーで実行すると以下のように Permission denied が表示されることがあります。
$ journalctl
No journal files were found.
-- No entries --
または、
Failed to open journal: Permission denied
この問題の多くは 権限設定 に原因があります。
目次
主な原因
- root 権限が必要
journalctl
でシステム全体のログにアクセスするには、通常root
権限が必要です。
- systemd-journal グループに所属していない
- 一般ユーザーがログにアクセスするには、
systemd-journal
グループのメンバーである必要があります。
- 一般ユーザーがログにアクセスするには、
- ログファイルのパーミッション設定
/var/log/journal/
配下のパーミッションや ACL 設定が適切でない場合もアクセスできません。
解決方法
1. root で実行する
一時的に確認する場合は sudo
を付ければ解決します。
sudo journalctl -xe
2. ユーザーを systemd-journal グループに追加する
一般ユーザーで利用したい場合は、以下を実行します。
# ユーザーを systemd-journal グループに追加
sudo usermod -aG systemd-journal <ユーザー名>
# グループ反映のため再ログイン
exit
反映後、再度ログインして以下で確認できます。
groups <ユーザー名>
systemd-journal
が含まれていればOKです。
3. ログディレクトリの確認
もし上記でも改善しない場合は、ログディレクトリの権限を確認します。
ls -ld /var/log/journal
正しい設定例:
drwxr-sr-x+ 3 root systemd-journal 4096 Sep 27 10:00 /var/log/journal
systemd-journal
にグループ権限(r-x
以上)がついているか確認しましょう。
まとめ
journalctl
は root か systemd-journal グループの権限が必要。- 一般ユーザーで使うなら
usermod -aG systemd-journal <ユーザー名>
を設定。 - ディレクトリ権限が壊れていないかも確認。
👉 journalctl
を日常的に使う運用者は、systemd-journal
グループに所属させる設定をおすすめします。
あわせて読みたい


systemctlとjournalctlの使い方:Linuxでのサービス管理と起動の基本
systemdとは? Linuxのシステム起動とサービス管理を担うsystemdは、従来のinitシステムに代わり、多くのLinuxディストリビューションで採用されています。systemdの目…
あわせて読みたい


systemctl start が失敗する原因と解決方法
Linuxサーバを運用していると、サービスを起動しようとした際に sudo systemctl start httpd のようなコマンドを実行しても、エラーが出てサービスが立ち上がらないこと…