[lxc-users] Setting user environment for unprivileged containers

Christoph Willing chris.willing at iinet.net.au
Wed Jul 2 10:08:42 UTC 2014


I'm trying to make unprivileged containers work nicely on Slackware - 
with some success. After some updates (kernel config, latest shadow, 
latest lxc, install cgmanager) I worked through steps at 
https://www.stgraber.org/2014/01/17/lxc-1-0-unprivileged-containers/. 
I've made a Slackware template with which I can create a working normal 
privileged container. I then use Serge Hallyn's uidmapshift on it and 
copy the resulting unprivileged container into $USER/.local/share/lxc/ 
from where it can be run by the user. It all works fine.

The only wrinkle is that before being able to run lxc-start for the 
first time on an unprivileged container, the user must first run the 
commands:
     sudo cgm create all $USER
     sudo cgm chown all $USER $(id -u) $(id -g)
     sudo cgm movepid all $USER $$
I'd like to avoid that if possible.

Interestingly,
- those commands only need to be run once in a given terminal session 
(run lxc-start any number of times after that)
- those commands need to be run in any new terminal in which lxc-start 
is to be run on an unprivileged container i.e. running them in one 
terminal doesn't bless any new terminal sessions
- the commands don't work when executed from a script
- the commands don't work if executed by root on the user's behalf

Ideally this would be set up either at boot time for "approved" users or 
whenever the approved users log in to the machine. I have tried 
chmod'ing cgm to setuid root (not sure that would be a good long term 
solution anyway) and it succeeded with first and last of those commands 
but not the second (cgm chown ..).

Could someone explain how this is managed in other distros where running 
unprivileged already works please? I have an uneasy feeling that its via 
PAM (the last of the prerequisites mentioned on Stephane's page) but PAM 
is not used in Slackware and most unlikely to be introduced.

BTW, the situation is exactly the same when using the download template 
to run the available premade containers i.e. I don't believe its a 
problem with the template I made myself. Anyway, this is surely 
something to be arranged in the host, not in the container itself.

Any description of how the user environment is set up and/or tips about 
this would be greatly appreciated.

chris


More information about the lxc-users mailing list