[PATCH v3 11/12] LXC: controller: change the owner of /dev/pts and ptmx to the root of container

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This two files are created for container,
the owner should be the root user of container.

Signed-off-by: Gao feng <gaofeng@xxxxxxxxxxxxxx>
---
 src/lxc/lxc_controller.c | 30 ++++++++++++++++++++++++++++++
 1 file changed, 30 insertions(+)

diff --git a/src/lxc/lxc_controller.c b/src/lxc/lxc_controller.c
index b2ace20..7d27135 100644
--- a/src/lxc/lxc_controller.c
+++ b/src/lxc/lxc_controller.c
@@ -1506,8 +1506,15 @@ virLXCControllerSetupDevPTS(virLXCControllerPtr ctrl)
     char *opts = NULL;
     char *devpts = NULL;
     char *path = NULL;
+    uid_t uid = (uid_t)-1;
+    gid_t gid = (gid_t)-1;
     int ret = -1;
 
+    if (ctrl->def->idmap.uidmap) {
+        uid = ctrl->def->idmap.uidmap[0].target;
+        gid = ctrl->def->idmap.gidmap[0].target;
+    }
+
     VIR_DEBUG("Setting up private /dev/pts");
 
     mount_options = virSecurityManagerGetMountOptions(ctrl->securityManager,
@@ -1551,6 +1558,21 @@ virLXCControllerSetupDevPTS(virLXCControllerPtr ctrl)
         goto cleanup;
     }
 
+    if (chown(ctrl->devptmx, uid, gid) < 0) {
+        virReportSystemError(errno,
+                             _("Failed to change the owner of"
+                            "%s to %u:%u"),
+                             path, uid, gid);
+        goto cleanup;
+    }
+    if (chown(devpts, uid, gid) < 0) {
+        virReportSystemError(errno,
+                             _("Failed to change the owner of"
+                             "%s to %u:%u"),
+                             devpts, uid, gid);
+        goto cleanup;
+    }
+
     if (access(ctrl->devptmx, W_OK) < 0) {
         if (virAsprintf(&path, "/%s/%s.dev/ptmx",
                         LXC_STATE_DIR, ctrl->def->name)) {
@@ -1564,8 +1586,16 @@ virLXCControllerSetupDevPTS(virLXCControllerPtr ctrl)
             virReportSystemError(errno,  _("Failed to make device %s"), path);
             goto cleanup;
         }
+        if (chown(path, uid, gid) < 0) {
+            virReportSystemError(errno,
+                                 _("Failed to change the owner of"
+                                 "%s to %u:%u"),
+                                 path, uid, gid);
+            goto cleanup;
+        }
     }
 
+
     ret = 0;
 
 cleanup:
-- 
1.8.1.4

--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list




[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]