LXC: unprivilegierten Container automatisch starten/beenden

Alle weiteren Dienste, die nicht in die drei oberen Foren gehören.
Antworten
Benutzeravatar
jph
Beiträge: 1049
Registriert: 06.12.2015 15:06:07
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Greven/Westf.

LXC: unprivilegierten Container automatisch starten/beenden

Beitrag von jph » 01.01.2018 16:13:36

Hallo zusammen,

auf meinem Heimserver (Stretch 64 Bit) läuft Nextcloud in einem privilegierten LXC-2-Container. Der Container wird über lxc.start.auto = 1 beim Booten automatisch gestartet.

Diesen Container möchte ich nun aus Sicherheitsgründen in einen unprivilegierten Container umwandeln. Unprivilegierte Container werden trotz dieser Option nicht beim Systemstart automatisch gestartet. Per Websuche habe ich gefunden, dass man @reboot lxc-autostart in die crontab des Users eintragen kann, um die Container automatisch nach dem Systemstart zu starten. Das funktioniert auch soweit, nur bleibt der Rechner nun beim Runterfahren hängen, wenn der Container nicht vor dem Shutdown beendet wird.

Was ist der richtige Weg, um unprivilegierte Container beim Systemstart zu starten und beim Herunterfahren zu beenden?

Danke & ein frohes neues Jahr

Jan

Benutzeravatar
jph
Beiträge: 1049
Registriert: 06.12.2015 15:06:07
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Greven/Westf.

[gelöst] LXC: unprivilegierten Container automatisch starten/beenden

Beitrag von jph » 01.01.2018 17:37:00

Ich habe eine Lösung mit systemd-Teufelswerk gefunden.

Zunächst einmal erlaubt man dem betreffenden User das „herumlungern“:

Code: Alles auswählen

jan@demo:~$ su -c 'loginctl enable-linger jan'
Danach legt man eine systemd-Unit ~/.config/systemd/user/lxc-autostart.service für den User an:

Code: Alles auswählen

[Unit]
Description=Starten/stoppen unprivilegierter Container

[Service]
Type=oneshot
ExecStart=/usr/bin/lxc-autostart
ExecStop=/usr/bin/lxc-autostart -s -t 5
RemainAfterExit=yes

[Install]
WantedBy=default.target
Die Unit wird aktiviert, fertig:

Code: Alles auswählen

jan@demo:~$ systemctl --user --now enable lxc-autostart.service
Nun werden unprivilegierte Container beim Starten des Rechners automatisch gestartet und beim runterfahren gestoppt. Die Zeile in der crontab kann weg.

Edit: Direktive After= entfernt und Wartezeit auf 5 Sekunden verkürzt.

breakthewall
Beiträge: 507
Registriert: 30.12.2016 23:48:51

Re: LXC: unprivilegierten Container automatisch starten/beenden

Beitrag von breakthewall » 01.01.2018 20:04:07

Was mir unmittelbar in den Sinn kommt ist, warum diese Sache so umständlich angepackt wird. Und wenn schon Systemd genutzt wird, warum dann nicht gleich die Systemdienste darüber isolieren? Gerade Systemd hat doch alle Kapazitäten das sehr fein gratuliert umzusetzen, so wie es in der Manpage systemd.exec beschrieben ist. Weniger sicher wäre das auch nicht, zumal etliche Programme auf den Isolierungstechniken des Linux-Kernels basieren, ob nun LXC, Docker, Firejail oder Systemd.

Benutzeravatar
jph
Beiträge: 1049
Registriert: 06.12.2015 15:06:07
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Greven/Westf.

Re: LXC: unprivilegierten Container automatisch starten/beenden

Beitrag von jph » 01.01.2018 20:53:15

Wieso umständlich? Wenn du einen einfacheren Weg kennst, dann nenne ihn mir bitte.

breakthewall
Beiträge: 507
Registriert: 30.12.2016 23:48:51

Re: LXC: unprivilegierten Container automatisch starten/beenden

Beitrag von breakthewall » 01.01.2018 23:28:41

Steht doch alles im vorherigen Beitrag. Und kompliziert daher, weil Systemd bereits eine voll integrierte Lösung ist, die dasselbe und noch mehr kann. So gesehen bietet LXC nichts was hier besser oder sicherer wäre. Und für Anfänger ist es auch bedeutend leichter zugänglich.

Benutzeravatar
jph
Beiträge: 1049
Registriert: 06.12.2015 15:06:07
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Greven/Westf.

Re: LXC: unprivilegierten Container automatisch starten/beenden

Beitrag von jph » 02.01.2018 17:35:01

Ich habe erst durch deine und scientifics Antworten im Thread „Dienste in VMs isolieren?“ begriffen, was deine Antwort hier bedeuten soll. Ich werde mich in die vorgeschlagene Richtung schlau machen.

Antworten