[PVE-User] Debian buster, systemd, container and nesting=1
Stoiko Ivanov
s.ivanov at proxmox.com
Tue Feb 25 18:43:41 CET 2020
Hi,
On Tue, 18 Feb 2020 16:44:26 +0100
Marco Gaiarin <gaio at sv.lnf.it> wrote:
> I'm still on PVE 5.4.
>
> I've upgraded a (privileged) LXC container to debian buster, that was
> originally installed as debian jessie, then upgraded to stretch, but
> still without systemd.
> Upgrading to buster trigger systemd installation.
>
> After installation, most of the services, not all, does not start, eg
> apache:
>
> root at vnc:~# systemctl status apache2.service
> ● apache2.service - The Apache HTTP Server
> Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
> Active: failed (Result: exit-code) since Tue 2020-02-18 16:06:35 CET; 44s ago
> Docs: https://httpd.apache.org/docs/2.4/
> Process: 120 ExecStart=/usr/sbin/apachectl start (code=exited, status=226/NAMESPACE)
>
> feb 18 16:06:35 vnc systemd[1]: Starting The Apache HTTP Server...
> feb 18 16:06:35 vnc systemd[120]: apache2.service: Failed to set up mount namespacing: Permission denied
> feb 18 16:06:35 vnc systemd[120]: apache2.service: Failed at step NAMESPACE spawning /usr/sbin/apachectl: Permission denied
> feb 18 16:06:35 vnc systemd[1]: apache2.service: Control process exited, code=exited, status=226/NAMESPACE
> feb 18 16:06:35 vnc systemd[1]: apache2.service: Failed with result 'exit-code'.
> feb 18 16:06:35 vnc systemd[1]: Failed to start The Apache HTTP Server.
>
> google say me to add 'nesting=1' to 'features', that works, but looking at:
>
> https://pve.proxmox.com/wiki/Linux_Container
>
> i read:
>
> nesting=<boolean> (default = 0)
> Allow nesting. Best used with unprivileged containers with additional id mapping. Note that this will expose procfs and sysfs contents of the host to the guest.
>
>
> i can convert this container to an unprivileged ones, but other no, for
> examples some containers are samba domain controller, that need a
> privileged container.
not sure - but why would a samba need to be privileged?
>
>
> There's another/better way to make systemd work on containers?
I guess my preferred actions in order:
* setup new unprivileged container and migrate the workload/services from
the old one (optionally enabling nesting if needed)
* try backup/restore to get a privileged container to an unprivileged one
* keep the privileged container with nesting off
* migrate the setup into a qemu-guest
* edit the unit files of the affected services (e.g. apache) - usually
it's the PrivateTmp option which causes this (it wants to mount --rbind
-o rw /) - and drop the PrivateTmp option (see [0])
* consider making an apparmor override for this particular mount
combination+container (which also can potentially be a security hole
(some apparmor rules are bound to absolute paths and using rbind you can
change the path)
* turn on nesting for a privileged container (keep in mind that you then
open it up quite a bit for breakouts)
of course probably not all of those options can be applied in your
environment.
>
>
> Thanks.
>
I hope this helps!
stoiko
[0]https://forum.proxmox.com/threads/apache2-service-failed-to-set-up-mount-namespacing-permission-denied.56871/
More information about the pve-user
mailing list