On Thu, May 23, 2013 at 12:06:55PM +0800, Gao feng wrote:
This two files are created for container,
the owner should be the root user of container.
Signed-off-by: Gao feng <gaofeng(a)cn.fujitsu.com>
---
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;
+ }
}
ACK
Daniel
--
|:
http://berrange.com -o-
http://www.flickr.com/photos/dberrange/ :|
|:
http://libvirt.org -o-
http://virt-manager.org :|
|:
http://autobuild.org -o-
http://search.cpan.org/~danberr/ :|
|:
http://entangle-photo.org -o-
http://live.gnome.org/gtk-vnc :|