X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fjournal%2Fjournald-server.c;h=58410a2465cdae9cdcdcc8d4f1b1ff7632d5f831;hp=381d80a9389300aaf72b7ea64ac17f769c1071a4;hb=e150e82097211f09b911c7784a89ef9efed713ca;hpb=f7dc3ab9f43b67abcbd34062b9352ab42debec49 diff --git a/src/journal/journald-server.c b/src/journal/journald-server.c index 381d80a93..58410a246 100644 --- a/src/journal/journald-server.c +++ b/src/journal/journald-server.c @@ -67,6 +67,7 @@ #define DEFAULT_SYNC_INTERVAL_USEC (5*USEC_PER_MINUTE) #define DEFAULT_RATE_LIMIT_INTERVAL (30*USEC_PER_SEC) #define DEFAULT_RATE_LIMIT_BURST 1000 +#define DEFAULT_MAX_FILE_USEC USEC_PER_MONTH #define RECHECK_AVAILABLE_SPACE_USEC (30*USEC_PER_SEC) @@ -205,7 +206,7 @@ void server_fix_perms(Server *s, JournalFile *f, uid_t uid) { log_warning("Failed to fix access mode on %s, ignoring: %s", f->path, strerror(-r)); #ifdef HAVE_ACL - if (uid <= 0) + if (uid <= SYSTEM_UID_MAX) return; acl = acl_get_fd(f->fd); @@ -805,12 +806,11 @@ static void dispatch_message_real( /* Split up strictly by any UID */ journal_uid = realuid; else if (s->split_mode == SPLIT_LOGIN && realuid > 0 && owner_valid && owner > 0) - /* Split up by login UIDs, this avoids creation of - * individual journals for system UIDs. We do this - * only if the realuid is not root, in order not to - * accidentally leak privileged information to the - * user that is logged by a privileged process that is - * part of an unprivileged session.*/ + /* Split up by login UIDs. We do this only if the + * realuid is not root, in order not to accidentally + * leak privileged information to the user that is + * logged by a privileged process that is part of an + * unprivileged session.*/ journal_uid = owner; else journal_uid = 0; @@ -990,7 +990,10 @@ static int system_journal_open(Server *s) { /* OK, we really need the runtime journal, so create * it if necessary. */ - (void) mkdir_parents(fn, 0755); + (void) mkdir("/run/log", 0755); + (void) mkdir("/run/log/journal", 0755); + (void) mkdir_parents(fn, 0750); + r = journal_file_open_reliably(fn, O_RDWR|O_CREAT, 0640, s->compress, false, &s->runtime_metrics, s->mmap, NULL, &s->runtime_journal); free(fn); @@ -1473,6 +1476,8 @@ int server_init(Server *s) { s->forward_to_syslog = true; s->forward_to_wall = true; + s->max_file_usec = DEFAULT_MAX_FILE_USEC; + s->max_level_store = LOG_DEBUG; s->max_level_syslog = LOG_DEBUG; s->max_level_kmsg = LOG_NOTICE; @@ -1535,7 +1540,8 @@ int server_init(Server *s) { s->stdout_fd = fd; - } else if (sd_is_socket_unix(fd, SOCK_DGRAM, -1, "/dev/log", 0) > 0) { + } else if (sd_is_socket_unix(fd, SOCK_DGRAM, -1, "/dev/log", 0) > 0 || + sd_is_socket_unix(fd, SOCK_DGRAM, -1, "/run/systemd/journal/dev-log", 0) > 0) { if (s->syslog_fd >= 0) { log_error("Too many /dev/log sockets passed.");