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
LXC: unprivilegierten Container automatisch starten/beenden
- jph
- Beiträge: 1089
- Registriert: 06.12.2015 15:06:07
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Münsterland
[gelöst] LXC: unprivilegierten Container automatisch starten/beenden
Ich habe eine Lösung mit systemd-Teufelswerk gefunden.
Zunächst einmal erlaubt man dem betreffenden User das „herumlungern“:
Danach legt man eine systemd-Unit ~/.config/systemd/user/lxc-autostart.service für den User an:
Die Unit wird aktiviert, fertig:
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.
Zunächst einmal erlaubt man dem betreffenden User das „herumlungern“:
Code: Alles auswählen
jan@demo:~$ su -c 'loginctl enable-linger jan'
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
Code: Alles auswählen
jan@demo:~$ systemctl --user --now enable lxc-autostart.service
Edit: Direktive After= entfernt und Wartezeit auf 5 Sekunden verkürzt.
-
- Beiträge: 507
- Registriert: 30.12.2016 23:48:51
Re: LXC: unprivilegierten Container automatisch starten/beenden
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.
- jph
- Beiträge: 1089
- Registriert: 06.12.2015 15:06:07
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Münsterland
Re: LXC: unprivilegierten Container automatisch starten/beenden
Wieso umständlich? Wenn du einen einfacheren Weg kennst, dann nenne ihn mir bitte.
-
- Beiträge: 507
- Registriert: 30.12.2016 23:48:51
Re: LXC: unprivilegierten Container automatisch starten/beenden
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.
- jph
- Beiträge: 1089
- Registriert: 06.12.2015 15:06:07
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Münsterland
Re: LXC: unprivilegierten Container automatisch starten/beenden
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.