chiark / gitweb /
core: provide /dev/ptmx as symlink in PrivateDevices= execution environments
[elogind.git] / src / core / namespace.c
index de09e9f2c36e121b26c75b9afe833756e1f19ffe..1f987a4b9d03ceb225434d2e7d2d2f2a5a3a63c1 100644 (file)
@@ -143,7 +143,7 @@ static int mount_dev(BindMount *m) {
                 "/dev/tty\0";
 
         char temporary_mount[] = "/tmp/namespace-dev-XXXXXX";
-        const char *d, *dev = NULL, *devpts = NULL, *devshm = NULL, *devkdbus = NULL, *devhugepages = NULL, *devmqueue = NULL;
+        const char *d, *dev = NULL, *devpts = NULL, *devshm = NULL, *devkdbus = NULL, *devhugepages = NULL, *devmqueue = NULL, *devlog = NULL, *devptmx = NULL;
         _cleanup_umask_ mode_t u;
         int r;
 
@@ -168,6 +168,9 @@ static int mount_dev(BindMount *m) {
                 goto fail;
         }
 
+        devptmx = strappenda(temporary_mount, "/dev/ptmx");
+        symlink("pts/ptmx", devptmx);
+
         devshm = strappenda(temporary_mount, "/dev/shm");
         mkdir(devshm, 01777);
         r = mount("/dev/shm", devshm, NULL, MS_BIND, NULL);
@@ -188,6 +191,9 @@ static int mount_dev(BindMount *m) {
         mkdir(devhugepages, 0755);
         mount("/dev/hugepages", devhugepages, NULL, MS_BIND, NULL);
 
+        devlog = strappenda(temporary_mount, "/dev/log");
+        symlink("/run/systemd/journal/dev-log", devlog);
+
         NULSTR_FOREACH(d, devnodes) {
                 _cleanup_free_ char *dn = NULL;
                 struct stat st;