core: setup mount namespace when RootDirectory= and RuntimeDirectory= or friends...
authorYu Watanabe <watanabe.yu+github@gmail.com>
Fri, 25 May 2018 08:32:55 +0000 (17:32 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Fri, 25 May 2018 08:33:03 +0000 (17:33 +0900)
The directories specified by RuntimeDirectory= or friends are created
on host. So, it is necessary to bind-mount them on root directory.

src/core/execute.c

index 285fe5b..f36672c 100644 (file)
@@ -1787,8 +1787,20 @@ static bool exec_needs_mount_namespace(
             context->protect_control_groups)
                 return true;
 
-        if (context->mount_apivfs && (context->root_image || context->root_directory))
-                return true;
+        if (context->root_directory) {
+                ExecDirectoryType t;
+
+                if (context->mount_apivfs)
+                        return true;
+
+                for (t = 0; t < _EXEC_DIRECTORY_TYPE_MAX; t++) {
+                        if (!params->prefix[t])
+                                continue;
+
+                        if (!strv_isempty(context->directories[t].paths))
+                                return true;
+                }
+        }
 
         if (context->dynamic_user &&
             (!strv_isempty(context->directories[EXEC_DIRECTORY_STATE].paths) ||