Mit Hilfe eines Systems wie „Ansible Pull“ kann auch eine Applikation wie LiFE Parental Control relativ einfach ausgerollt werden.

Das Debian Paket (https://github.com/valueerrorx/LiFE-Parental-Control/releases ) lässt sich automatisiert distributieren und auf den Systemen der Schüler:innen installieren. (siehe Beitrag zu Ansible > https://linux-bildung.at/?p=6697 )

Dazu holen wir uns über die github API alle Releases im json-Fromat und speichern diese in der Variable lpc_releases.

Aus diesen Releases brauchen wir die aktuellste

Und aus den Assets des letzten Releases extrahieren wir uns die browser_download_url

Diese .deb URL lässt sich dann ganz einfach installieren

Durch diese Installation läuft der Systemd Service „parental-control.service“ bereits am Zielsystem und liest die Einstellungen die er vornehmen und exekutieren soll aus der Datei:

und für die Absicherung des App Zugriffs das Eltern-Passwort aus der Datei:

Beide Dateien erstellt man am besten im Vorfeld auf einem anderen PC, auf dem LiFE Parental Control installiert ist, indem man in der App die gewünschten Einstellungen für die Zielgeräte vornimmt und die fertigen Dateien in Folge aus dem Verzeichnis /etc/life-parental sichert und ebenso mittels Ansible an die idente Stelle auf den Geräten der Schüler:innen platziert. Die zwei Dateien default.json und auth.json liegen im ansible-pull Repository im Verzeichnis files. Damit werden sie auf den Client mitübertragen und mit folgenden Befehlen an die richtige Stelle kopiert.

Das Service parental-control wird noch neu gestartet, damit die Änderungen in den beiden Dateien auch tatsächlich vorgenommen werden.

Hard Lockdown

Benutzer-Rechte einschränken, Eltern-Admin Account anlegen, GRUB sperren, App-Installation einschränken

Was normalerweise optional über den Lockdown-Wizard direkt in der App gemacht wird kann auch über ein praktisches Shellscript erledigt werden:

Dieses ist systemweit verfügbar, muss mit den entsprechenden Parametern gestartet werden und erledigt automatisiert den gesamten Prozess:

ArgumentDescription
targetUserChild account to de-privilege
adminUserParent admin account (created if not existing)
password|pwFilePlain password string or path to a temp file containing it
grubHashPre-computed grub.pbkdf2.sha512… hash (generate: grub-mkpasswd-pbkdf2) — leave empty to skip GRUB
allowInstall
true to allow package installation (PolKit + sudoers)
allowUpdatetrue to allow system updates (PolKit + sudoers)
protectGrub
true to enable GRUB password step; false to skip it (ignored if grubHash is empty)
restrictAppImages
true to restrict AppImages/FUSE for the child user; false to skip this step

Der Befehl um das Script zu starten könnte z.B. so aussehen:

Diesen Befehl kann man auch in Ansible ausführen.

Bevor der Befehl tatsächlich ausgeführt wird, überprüft ansible auf Grund des Arguments creates, ob es die Datei /var/lib/parental-lockdown.done schon gibt. Falls diese Datei existiert, wird der Befehl nicht ausgeführt. Damit ist sichergestellt, dass der Befehl nur einmal ausgeführt wird.

Nachdem plaintext Passwörter in einem Git Repository keine gute Idee sind sollte hier mit Ansible Vault gearbeitet werden. Aber auch der Vault (symmetrische Verschlüsselung) braucht ein Passwort, um den Vault öffnen zu können.

Ein Vault-Passwort wird z.B. in /etc/ansible/vault-key schon bei der Ausrollung gespeichert, um dieses dann später nutzen zu können. Dabei muss aber auch der ansible-pull cronjob um „–vault-password-file=/etc/ansible/vault-key“ ergänzt werden.

Sie werden nach einem Vault-Passwort gefragt (zweimal). Die Ausgabe sieht so aus:

Der Task im Playbook würde dann so aussehen


0 Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert