]> git.proxmox.com Git - mirror_lxc.git/commit
lxc-cgm: fix issue with nested chowning
authorSerge Hallyn <serge.hallyn@ubuntu.com>
Fri, 29 Aug 2014 14:20:44 +0000 (14:20 +0000)
committerStéphane Graber <stgraber@ubuntu.com>
Fri, 29 Aug 2014 14:28:27 +0000 (10:28 -0400)
commitd6559c5d09c99e42b532a6259b98d4030dc5b616
treeac519f46e65e7260324af8d8fe11eea8a0aa207e
parentb0e26ca77b3bb9908dda4a27504e805f1b8b5ee0
lxc-cgm: fix issue with nested chowning

To ask cgmanager to chown files as an unpriv user, we must send the
request from the container's namespace (with our own userid also
mapped in).  However when we create a new namespace then we must
open a new dbus connection, so that our credential and the credential
on the dbus socket match.  Otherwise the proxy will refuse the request.

Because we were warning about this failure but not exiting, the failure
was not noticed until the unprivileged container went on to try to
administer its cgroups, i.e. creating a container inside itself.

Fix this by having the do_chown_cgroup create a new cgmanager connection.
In order to reduce the number of connections, since the list of subsystems
is global anyway, don't call do_chown_cgroup once for each controller,
just call it once and have it run over all controllers.

(This patch does not change the fact that we don't fail if the
chown failed.  I think we should change that, but let's do it in a
later patch)

Reported-by: Stéphane Graber <stgraber@ubuntu.com>
Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
src/lxc/cgmanager.c