mirror of
https://github.com/systemd/systemd.git
synced 2025-01-24 06:04:05 +03:00
core: move abstract namespace sockets to /dev/.run
Now that we have /dev/.run there's no need to use abstract namespace sockets. So, let's move things to /dev/.run, to make things more easily discoverable and improve compat with chroot() and fs namespacing.
This commit is contained in:
parent
8821347618
commit
91b22f21f3
@ -1024,7 +1024,7 @@
|
||||
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term><filename>@/org/freedesktop/systemd1/notify</filename></term>
|
||||
<term><filename>/var/run/systemd/notify</filename></term>
|
||||
|
||||
<listitem><para>Daemon status
|
||||
notification socket. This is an AF_UNIX
|
||||
@ -1037,7 +1037,7 @@
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><filename>@/org/freedesktop/systemd1/logger</filename></term>
|
||||
<term><filename>/var/run/systemd/logger</filename></term>
|
||||
|
||||
<listitem><para>Used internally by the
|
||||
<filename>systemd-logger.service</filename>
|
||||
@ -1050,7 +1050,7 @@
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><filename>@/org/freedesktop/systemd1/shutdown</filename></term>
|
||||
<term><filename>/var/run/systemd/shutdownd</filename></term>
|
||||
|
||||
<listitem><para>Used internally by the
|
||||
<citerefentry><refentrytitle>shutdown</refentrytitle><manvolnum>8</manvolnum></citerefentry>
|
||||
@ -1061,7 +1061,7 @@
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><filename>@/org/freedesktop/systemd1/private</filename></term>
|
||||
<term><filename>/var/run/systemd/private</filename></term>
|
||||
|
||||
<listitem><para>Used internally as
|
||||
communication channel between
|
||||
|
@ -49,10 +49,19 @@ int main(int argc, char *argv[]) {
|
||||
* this to avoid an activation loop when we start dbus when we
|
||||
* are called when the dbus service is shut down. */
|
||||
|
||||
if (!(bus = dbus_connection_open_private("unix:abstract=/org/freedesktop/systemd1/private", &error))) {
|
||||
log_error("Failed to get D-Bus connection: %s", bus_error_message(&error));
|
||||
goto finish;
|
||||
if (!(bus = dbus_connection_open_private("unix:path=/dev/.run/systemd/private", &error))) {
|
||||
#ifndef LEGACY
|
||||
dbus_error_free(&error);
|
||||
|
||||
/* Retry with the pre v21 socket name, to ease upgrades */
|
||||
if (!(bus = dbus_connection_open_private("unix:abstract=/org/freedesktop/systemd1/private", &error))) {
|
||||
#endif
|
||||
log_error("Failed to get D-Bus connection: %s", bus_error_message(&error));
|
||||
goto finish;
|
||||
}
|
||||
#ifndef LEGACY
|
||||
}
|
||||
#endif
|
||||
|
||||
if (bus_check_peercred(bus) < 0) {
|
||||
log_error("Bus owner not root.");
|
||||
|
@ -104,8 +104,16 @@ int bus_connect(DBusBusType t, DBusConnection **_bus, bool *private, DBusError *
|
||||
|
||||
/* If we are root, then let's not go via the bus */
|
||||
if (geteuid() == 0 && t == DBUS_BUS_SYSTEM) {
|
||||
if (!(bus = dbus_connection_open_private("unix:abstract=/org/freedesktop/systemd1/private", error)))
|
||||
return -EIO;
|
||||
|
||||
if (!(bus = dbus_connection_open_private("unix:path=/dev/.run/systemd/private", error))) {
|
||||
#ifndef LEGACY
|
||||
dbus_error_free(error);
|
||||
|
||||
/* Retry with the pre v21 socket name, to ease upgrades */
|
||||
if (!(bus = dbus_connection_open_private("unix:abstract=/org/freedesktop/systemd1/private", error)))
|
||||
#endif
|
||||
return -EIO;
|
||||
}
|
||||
|
||||
dbus_connection_set_exit_on_disconnect(bus, FALSE);
|
||||
|
||||
|
@ -955,7 +955,7 @@ static int bus_init_private(Manager *m) {
|
||||
if (getpid() != 1)
|
||||
return 0;
|
||||
|
||||
if (!(m->private_bus = dbus_server_listen("unix:abstract=/org/freedesktop/systemd1/private", &error))) {
|
||||
if (!(m->private_bus = dbus_server_listen("unix:path=/dev/.run/systemd/private", &error))) {
|
||||
log_error("Failed to create private D-Bus server: %s", error.message);
|
||||
r = -EIO;
|
||||
goto fail;
|
||||
|
@ -173,9 +173,9 @@ static int connect_logger_as(const ExecContext *context, ExecOutput output, cons
|
||||
|
||||
zero(sa);
|
||||
sa.sa.sa_family = AF_UNIX;
|
||||
strncpy(sa.un.sun_path+1, LOGGER_SOCKET, sizeof(sa.un.sun_path)-1);
|
||||
strncpy(sa.un.sun_path, LOGGER_SOCKET, sizeof(sa.un.sun_path));
|
||||
|
||||
if (connect(fd, &sa.sa, offsetof(struct sockaddr_un, sun_path) + 1 + sizeof(LOGGER_SOCKET) - 1) < 0) {
|
||||
if (connect(fd, &sa.sa, offsetof(struct sockaddr_un, sun_path) + sizeof(LOGGER_SOCKET) - 1) < 0) {
|
||||
close_nointr_nofail(fd);
|
||||
return -errno;
|
||||
}
|
||||
|
@ -40,7 +40,7 @@ struct CGroupBonding;
|
||||
#include "util.h"
|
||||
|
||||
/* Abstract namespace! */
|
||||
#define LOGGER_SOCKET "/org/freedesktop/systemd1/logger"
|
||||
#define LOGGER_SOCKET "/dev/.run/systemd/logger"
|
||||
|
||||
/* This doesn't really belong here, but I couldn't find a better place to put this. */
|
||||
#define SIGNALS_CRASH_HANDLER SIGSEGV,SIGILL,SIGFPE,SIGBUS,SIGQUIT,SIGABRT
|
||||
|
@ -66,7 +66,8 @@
|
||||
#define GC_QUEUE_USEC_MAX (10*USEC_PER_SEC)
|
||||
|
||||
/* Where clients shall send notification messages to */
|
||||
#define NOTIFY_SOCKET "/org/freedesktop/systemd1/notify"
|
||||
#define NOTIFY_SOCKET_SYSTEM "/dev/.run/systemd/notify"
|
||||
#define NOTIFY_SOCKET_USER "@/org/freedesktop/systemd1/notify"
|
||||
|
||||
static int manager_setup_notify(Manager *m) {
|
||||
union {
|
||||
@ -88,9 +89,12 @@ static int manager_setup_notify(Manager *m) {
|
||||
sa.sa.sa_family = AF_UNIX;
|
||||
|
||||
if (getpid() != 1)
|
||||
snprintf(sa.un.sun_path+1, sizeof(sa.un.sun_path)-1, NOTIFY_SOCKET "/%llu", random_ull());
|
||||
snprintf(sa.un.sun_path, sizeof(sa.un.sun_path), NOTIFY_SOCKET_USER "/%llu", random_ull());
|
||||
else
|
||||
strncpy(sa.un.sun_path+1, NOTIFY_SOCKET, sizeof(sa.un.sun_path)-1);
|
||||
strncpy(sa.un.sun_path, NOTIFY_SOCKET_SYSTEM, sizeof(sa.un.sun_path));
|
||||
|
||||
if (sa.un.sun_path[0] == '@')
|
||||
sa.un.sun_path[0] = 0;
|
||||
|
||||
if (bind(m->notify_watch.fd, &sa.sa, offsetof(struct sockaddr_un, sun_path) + 1 + strlen(sa.un.sun_path+1)) < 0) {
|
||||
log_error("bind() failed: %m");
|
||||
@ -109,7 +113,10 @@ static int manager_setup_notify(Manager *m) {
|
||||
if (epoll_ctl(m->epoll_fd, EPOLL_CTL_ADD, m->notify_watch.fd, &ev) < 0)
|
||||
return -errno;
|
||||
|
||||
if (!(m->notify_socket = strdup(sa.un.sun_path+1)))
|
||||
if (sa.un.sun_path[0] == 0)
|
||||
sa.un.sun_path[0] = '@';
|
||||
|
||||
if (!(m->notify_socket = strdup(sa.un.sun_path)))
|
||||
return -ENOMEM;
|
||||
|
||||
log_debug("Using notification socket %s", m->notify_socket);
|
||||
|
@ -1659,7 +1659,7 @@ static int service_spawn(
|
||||
}
|
||||
|
||||
if (set_notify_socket)
|
||||
if (asprintf(our_env + n_env++, "NOTIFY_SOCKET=@%s", s->meta.manager->notify_socket) < 0) {
|
||||
if (asprintf(our_env + n_env++, "NOTIFY_SOCKET=%s", s->meta.manager->notify_socket) < 0) {
|
||||
r = -ENOMEM;
|
||||
goto fail;
|
||||
}
|
||||
|
@ -5364,7 +5364,7 @@ static int send_shutdownd(usec_t t, char mode, bool warn, const char *message) {
|
||||
zero(sockaddr);
|
||||
sockaddr.sa.sa_family = AF_UNIX;
|
||||
sockaddr.un.sun_path[0] = 0;
|
||||
strncpy(sockaddr.un.sun_path+1, "/org/freedesktop/systemd1/shutdownd", sizeof(sockaddr.un.sun_path)-1);
|
||||
strncpy(sockaddr.un.sun_path, "/dev/.run/systemd/shutdownd", sizeof(sockaddr.un.sun_path));
|
||||
|
||||
zero(iovec);
|
||||
iovec.iov_base = (char*) &c;
|
||||
@ -5372,7 +5372,7 @@ static int send_shutdownd(usec_t t, char mode, bool warn, const char *message) {
|
||||
|
||||
zero(msghdr);
|
||||
msghdr.msg_name = &sockaddr;
|
||||
msghdr.msg_namelen = offsetof(struct sockaddr_un, sun_path) + 1 + sizeof("/org/freedesktop/systemd1/shutdownd") - 1;
|
||||
msghdr.msg_namelen = offsetof(struct sockaddr_un, sun_path) + sizeof("/dev/.run/systemd/shutdownd") - 1;
|
||||
|
||||
msghdr.msg_iov = &iovec;
|
||||
msghdr.msg_iovlen = 1;
|
||||
|
@ -13,4 +13,4 @@ DefaultDependencies=no
|
||||
Before=sockets.target
|
||||
|
||||
[Socket]
|
||||
ListenStream=@/org/freedesktop/systemd1/logger
|
||||
ListenStream=/dev/.run/systemd/logger
|
||||
|
@ -13,4 +13,4 @@ DefaultDependencies=no
|
||||
Before=sockets.target
|
||||
|
||||
[Socket]
|
||||
ListenDatagram=@/org/freedesktop/systemd1/shutdownd
|
||||
ListenDatagram=/dev/.run/systemd/shutdownd
|
||||
|
Loading…
x
Reference in New Issue
Block a user