Zbigniew Jędrzejewski-Szmek 399a2a
From e8d55cb62e0c12b09d3fa02f4fc1a1e0b197020b Mon Sep 17 00:00:00 2001
Zbigniew Jędrzejewski-Szmek 399a2a
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
Zbigniew Jędrzejewski-Szmek 399a2a
Date: Sun, 8 Mar 2015 11:04:59 -0400
Zbigniew Jędrzejewski-Szmek 399a2a
Subject: [PATCH] journalctl: update hint now that we set ACL everywhere
Zbigniew Jędrzejewski-Szmek 399a2a
Zbigniew Jędrzejewski-Szmek 399a2a
(cherry picked from commit 05c1853093d8c4e4aa16876b5129b65dac5abd01)
Zbigniew Jędrzejewski-Szmek 399a2a
---
Zbigniew Jędrzejewski-Szmek 399a2a
 src/journal/journalctl.c | 25 +++++++++++--------------
Zbigniew Jędrzejewski-Szmek 399a2a
 1 file changed, 11 insertions(+), 14 deletions(-)
Zbigniew Jędrzejewski-Szmek 399a2a
Zbigniew Jędrzejewski-Szmek 399a2a
diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c
Zbigniew Jędrzejewski-Szmek 399a2a
index 55c7786331..12c869f5af 100644
Zbigniew Jędrzejewski-Szmek 399a2a
--- a/src/journal/journalctl.c
Zbigniew Jędrzejewski-Szmek 399a2a
+++ b/src/journal/journalctl.c
Zbigniew Jędrzejewski-Szmek 399a2a
@@ -1542,10 +1542,17 @@ static int access_check_var_log_journal(sd_journal *j) {
Zbigniew Jędrzejewski-Szmek 399a2a
         have_access = in_group("systemd-journal") > 0;
Zbigniew Jędrzejewski-Szmek 399a2a
 
Zbigniew Jędrzejewski-Szmek 399a2a
         if (!have_access) {
Zbigniew Jędrzejewski-Szmek 399a2a
+                const char* dir;
Zbigniew Jędrzejewski-Szmek 399a2a
+
Zbigniew Jędrzejewski-Szmek 399a2a
+                if (access("/run/log/journal", F_OK) >= 0)
Zbigniew Jędrzejewski-Szmek 399a2a
+                        dir = "/run/log/journal";
Zbigniew Jędrzejewski-Szmek 399a2a
+                else
Zbigniew Jędrzejewski-Szmek 399a2a
+                        dir = "/var/log/journal";
Zbigniew Jędrzejewski-Szmek 399a2a
+
Zbigniew Jędrzejewski-Szmek 399a2a
                 /* Let's enumerate all groups from the default ACL of
Zbigniew Jędrzejewski-Szmek 399a2a
                  * the directory, which generally should allow access
Zbigniew Jędrzejewski-Szmek 399a2a
                  * to most journal files too */
Zbigniew Jędrzejewski-Szmek 399a2a
-                r = search_acl_groups(&g, "/var/log/journal/", &have_access);
Zbigniew Jędrzejewski-Szmek 399a2a
+                r = search_acl_groups(&g, dir, &have_access);
Zbigniew Jędrzejewski-Szmek 399a2a
                 if (r < 0)
Zbigniew Jędrzejewski-Szmek 399a2a
                         return r;
Zbigniew Jędrzejewski-Szmek 399a2a
         }
Zbigniew Jędrzejewski-Szmek 399a2a
@@ -1571,7 +1578,7 @@ static int access_check_var_log_journal(sd_journal *j) {
Zbigniew Jędrzejewski-Szmek 399a2a
                                 return log_oom();
Zbigniew Jędrzejewski-Szmek 399a2a
 
Zbigniew Jędrzejewski-Szmek 399a2a
                         log_notice("Hint: You are currently not seeing messages from other users and the system.\n"
Zbigniew Jędrzejewski-Szmek 399a2a
-                                   "      Users in the groups '%s' can see all messages.\n"
Zbigniew Jędrzejewski-Szmek 399a2a
+                                   "      Users in groups '%s' can see all messages.\n"
Zbigniew Jędrzejewski-Szmek 399a2a
                                    "      Pass -q to turn off this notice.", s);
Zbigniew Jędrzejewski-Szmek 399a2a
                 }
Zbigniew Jędrzejewski-Szmek 399a2a
         }
Zbigniew Jędrzejewski-Szmek 399a2a
@@ -1595,18 +1602,8 @@ static int access_check(sd_journal *j) {
Zbigniew Jędrzejewski-Szmek 399a2a
 
Zbigniew Jędrzejewski-Szmek 399a2a
         if (set_contains(j->errors, INT_TO_PTR(-EACCES))) {
Zbigniew Jędrzejewski-Szmek 399a2a
 #ifdef HAVE_ACL
Zbigniew Jędrzejewski-Szmek 399a2a
-                /* If /var/log/journal doesn't even exist,
Zbigniew Jędrzejewski-Szmek 399a2a
-                 * unprivileged users have no access at all */
Zbigniew Jędrzejewski-Szmek 399a2a
-                if (access("/var/log/journal", F_OK) < 0 &&
Zbigniew Jędrzejewski-Szmek 399a2a
-                    geteuid() != 0 &&
Zbigniew Jędrzejewski-Szmek 399a2a
-                    in_group("systemd-journal") <= 0) {
Zbigniew Jędrzejewski-Szmek 399a2a
-                        log_error("Unprivileged users cannot access messages, unless persistent log storage is\n"
Zbigniew Jędrzejewski-Szmek 399a2a
-                                  "enabled. Users in the 'systemd-journal' group may always access messages.");
Zbigniew Jędrzejewski-Szmek 399a2a
-                        return -EACCES;
Zbigniew Jędrzejewski-Szmek 399a2a
-                }
Zbigniew Jędrzejewski-Szmek 399a2a
-
Zbigniew Jędrzejewski-Szmek 399a2a
-                /* If /var/log/journal exists, try to pring a nice
Zbigniew Jędrzejewski-Szmek 399a2a
-                   notice if the user lacks access to it */
Zbigniew Jędrzejewski-Szmek 399a2a
+                /* If /run/log/journal or /var/log/journal exist, try
Zbigniew Jędrzejewski-Szmek 399a2a
+                   to pring a nice notice if the user lacks access to it. */
Zbigniew Jędrzejewski-Szmek 399a2a
                 if (!arg_quiet && geteuid() != 0) {
Zbigniew Jędrzejewski-Szmek 399a2a
                         r = access_check_var_log_journal(j);
Zbigniew Jędrzejewski-Szmek 399a2a
                         if (r < 0)