chiark / gitweb /
journald: move /dev/log socket to /run
authorLennart Poettering <lennart@poettering.net>
Wed, 4 Jun 2014 14:37:02 +0000 (16:37 +0200)
committerLennart Poettering <lennart@poettering.net>
Wed, 4 Jun 2014 14:53:58 +0000 (16:53 +0200)
This way we can make the socket also available for sandboxed apps that
have their own private /dev. They can now simply symlink the socket from
/dev.

Makefile.am
man/systemd-journald.service.xml
src/journal/journald-server.c
src/journal/journald-syslog.c
units/systemd-journald-dev-log.socket [new file with mode: 0644]
units/systemd-journald.service.in
units/systemd-journald.socket

index d778b31b058c73a2036bd10c40177e41b21eba19..110937781ae8b6f9a54606de3ee602fb6502340e 100644 (file)
@@ -3480,7 +3480,8 @@ bin_PROGRAMS += \
        systemd-cat
 
 dist_systemunit_DATA += \
        systemd-cat
 
 dist_systemunit_DATA += \
-       units/systemd-journald.socket
+       units/systemd-journald.socket \
+       units/systemd-journald-dev-log.socket
 
 nodist_systemunit_DATA += \
        units/systemd-journald.service \
 
 nodist_systemunit_DATA += \
        units/systemd-journald.service \
@@ -3496,7 +3497,9 @@ dist_catalog_DATA = \
        catalog/systemd.catalog
 
 SOCKETS_TARGET_WANTS += \
        catalog/systemd.catalog
 
 SOCKETS_TARGET_WANTS += \
-       systemd-journald.socket
+       systemd-journald.socket \
+       systemd-journald-dev-log.socket
+
 SYSINIT_TARGET_WANTS += \
        systemd-journald.service \
        systemd-journal-flush.service
 SYSINIT_TARGET_WANTS += \
        systemd-journald.service \
        systemd-journal-flush.service
index f0ce7aae64a69b00fb8957f6b73b64bd514d6e24..7ac73ed66d821013250828eb2a3e73a198a9d732 100644 (file)
@@ -45,6 +45,7 @@
         <refnamediv>
                 <refname>systemd-journald.service</refname>
                 <refname>systemd-journald.socket</refname>
         <refnamediv>
                 <refname>systemd-journald.service</refname>
                 <refname>systemd-journald.socket</refname>
+                <refname>systemd-journald-dev-log.socket</refname>
                 <refname>systemd-journald</refname>
                 <refpurpose>Journal service</refpurpose>
         </refnamediv>
                 <refname>systemd-journald</refname>
                 <refpurpose>Journal service</refpurpose>
         </refnamediv>
@@ -52,6 +53,7 @@
         <refsynopsisdiv>
                 <para><filename>systemd-journald.service</filename></para>
                 <para><filename>systemd-journald.socket</filename></para>
         <refsynopsisdiv>
                 <para><filename>systemd-journald.service</filename></para>
                 <para><filename>systemd-journald.socket</filename></para>
+                <para><filename>systemd-journald-dev-log.socket</filename></para>
                 <para><filename>/usr/lib/systemd/systemd-journald</filename></para>
         </refsynopsisdiv>
 
                 <para><filename>/usr/lib/systemd/systemd-journald</filename></para>
         </refsynopsisdiv>
 
index 381d80a9389300aaf72b7ea64ac17f769c1071a4..3211773c27b97933fc286271e2194f7bb6e6437f 100644 (file)
@@ -1535,7 +1535,8 @@ int server_init(Server *s) {
 
                         s->stdout_fd = fd;
 
 
                         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.");
 
                         if (s->syslog_fd >= 0) {
                                 log_error("Too many /dev/log sockets passed.");
index 434eac428f012800867fd4048eb79ff4a8deaab5..b826e23c016b1be84e6ca6c1277c41496d70a6dd 100644 (file)
@@ -428,7 +428,7 @@ int server_open_syslog_socket(Server *s) {
         if (s->syslog_fd < 0) {
                 union sockaddr_union sa = {
                         .un.sun_family = AF_UNIX,
         if (s->syslog_fd < 0) {
                 union sockaddr_union sa = {
                         .un.sun_family = AF_UNIX,
-                        .un.sun_path = "/dev/log",
+                        .un.sun_path = "/run/systemd/journal/dev-log",
                 };
 
                 s->syslog_fd = socket(AF_UNIX, SOCK_DGRAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0);
                 };
 
                 s->syslog_fd = socket(AF_UNIX, SOCK_DGRAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0);
diff --git a/units/systemd-journald-dev-log.socket b/units/systemd-journald-dev-log.socket
new file mode 100644 (file)
index 0000000..c01b310
--- /dev/null
@@ -0,0 +1,26 @@
+#  This file is part of systemd.
+#
+#  systemd is free software; you can redistribute it and/or modify it
+#  under the terms of the GNU Lesser General Public License as published by
+#  the Free Software Foundation; either version 2.1 of the License, or
+#  (at your option) any later version.
+
+[Unit]
+Description=Journal Socket (/dev/log)
+Documentation=man:systemd-journald.service(8) man:journald.conf(5)
+DefaultDependencies=no
+Before=sockets.target
+
+# Mount and swap units need this. If this socket unit is removed by an
+# isolate request the mount and swap units would be removed too,
+# hence let's exclude this from isolate requests.
+IgnoreOnIsolate=yes
+
+[Socket]
+ListenDatagram=/run/systemd/journal/dev-log
+Symlinks=/dev/log
+SocketMode=0666
+PassCredentials=yes
+PassSecurity=yes
+ReceiveBuffer=8M
+Service=systemd-journald.service
index ba3f847201a2b058ead029c582840ed7f7f0adc7..4a307c708bca43b5ada9e00fe1583242a16139df 100644 (file)
@@ -10,10 +10,11 @@ Description=Journal Service
 Documentation=man:systemd-journald.service(8) man:journald.conf(5)
 DefaultDependencies=no
 Requires=systemd-journald.socket
 Documentation=man:systemd-journald.service(8) man:journald.conf(5)
 DefaultDependencies=no
 Requires=systemd-journald.socket
-After=systemd-journald.socket syslog.socket
+After=systemd-journald.socket systemd-journald-dev-log.socket syslog.socket
 Before=sysinit.target
 
 [Service]
 Before=sysinit.target
 
 [Service]
+Sockets=systemd-journald.socket systemd-journald-dev-log.socket
 ExecStart=@rootlibexecdir@/systemd-journald
 Restart=always
 RestartSec=0
 ExecStart=@rootlibexecdir@/systemd-journald
 Restart=always
 RestartSec=0
index fbeb10baae1a41192dc13dc4a35d1ae63222ace3..71737014caa9ba6363103fd7293e67e3b32183c7 100644 (file)
@@ -19,8 +19,8 @@ IgnoreOnIsolate=yes
 [Socket]
 ListenStream=/run/systemd/journal/stdout
 ListenDatagram=/run/systemd/journal/socket
 [Socket]
 ListenStream=/run/systemd/journal/stdout
 ListenDatagram=/run/systemd/journal/socket
-ListenDatagram=/dev/log
 SocketMode=0666
 PassCredentials=yes
 PassSecurity=yes
 ReceiveBuffer=8M
 SocketMode=0666
 PassCredentials=yes
 PassSecurity=yes
 ReceiveBuffer=8M
+Service=systemd-journald.service