Fedora
如何訪問 systemd 的根日誌?
當我
journalctl -f -a
在 Fedora 20 下為不同的使用者執行時,我得到不同的結果。對於 root,我得到了與tail -f /var/log/syslog
舊系統類似的東西。作為普通使用者,我收到 gnome-shell 警告、一些 su 消息、Firefox 寫入標準輸出的內容等 - 基本上是使用者會話日誌。我了解 journalctl 有不同期刊的概念(journalctl(1)):
輸出來自所有可訪問的日誌文件,無論它們是旋轉的還是目前正在寫入的,也不管它們屬於系統本身還是可訪問的使用者日誌。
但是如何獲取給定使用者可用的期刊列表呢?
以及如何讓普通使用者也可以訪問根日誌?
journalctl 手冊頁指出:
所有使用者都被授予訪問其私人每使用者日誌的權限。但是,預設情況下,只有 root 和屬於“systemd-journal”組的使用者才能訪問系統日誌和其他使用者的日誌。
但這聽起來太多了——使用者不應該有權訪問其他普通使用者的日誌(只能訪問根日誌)。
systemd-journald 手冊頁解釋瞭如何完成期刊訪問控制:
Journal files are, by default, owned and readable by the "systemd-journal" system group but are not writable. Adding a user to this group thus enables her/him to read the journal files. By default, each logged in user will get her/his own set of journal files in /var/log/journal/. These files will not be owned by the user, however, in order to avoid that the user can write to them directly. Instead, file system ACLs are used to ensure the user gets read access only. Additional users and groups may be granted access to journal files via file system access control lists (ACL).
Fedora 20 使用 ACL 授予
adm
和wheel
組中的使用者對所有期刊的讀取權限。如何讓普通使用者也可以訪問根日誌?
執行
setfacl -n -m u:username:r /var/log/journal/*/system.journal
。如何獲取給定使用者可用的期刊列表?
您可以
su
向使用者執行並執行journalctl --header|grep '^File Path'
以查看他或她有權訪問的期刊的名稱。
getfacl
可用於查看哪些組和使用者有權訪問日誌文件。我不知道列出特定使用者可讀文件的簡單方法。