Seit mehr als einem Jahr verwenden wir die freie Musterlösung linuxmuster.net in unserer Schule. Neben den Computern im Computerraum haben wir auch in einigen Klassenzimmern Computer stehen, z.B. in den Räumen mit fest installiertem Beamer oder in den Grundschulklassenzimmern. An einigen dieser Rechner wollten wir deshalb den Zugang aus folgenden Gründen einschränken:
- Schüler sollen sie nicht an einem Lehrerrechner einloggen können
- Manche Räume sind auch am Nachmittag für Schüler/innen mehr oder weniger frei zugänglich. In diesen Räumen soll ein Login für Schüler nur zur Unterrichtszeit möglich sein.
Unter Ubuntu (welches wir ausschließlich auf den betroffenen Rechnern benutzen) kann man mit PAM-Modulen den Zugriff auf einen Rechner einschränken. In unserem Fall sind das die Module pam_access und pam_time.
Zugang für Schüler auf Lehrerrechner einschränken
Damit sich nur Lehrkräfte und Mitarbeiter an einem bestimmten Rechner anmelden können, müssen folgende Dateien angepasst werden. In der Datei /etc/security/access.conf legt man fest, wer auf welche Dienste Zugriff hat. Am Ende der Datei haben wir deshalb folgenden Eintrag ergänzt:
-:ALL EXCEPT root linuxadmin (teachers) (staff):ALL
Diese Zeile bedeutet, dass niemand Zugriff auf alle Dienste hat, außer die Benutzer root, linuxadmin und die Gruppen teachers und staff.
Damit PAM diese Datei bei der Anmeldung mit überprüft muss noch folgende Zeile am Anfang der Datei /etc/pam.d/common-auth eingetragen werden:
account required pam_access.so
Nun sollten sich nur noch Lehrkräfte und Mitarbeiter anmelden können.
Zugang für Schüler nur zu Unterrichtszeiten ermöglichen
Diese Art von Zugangsbeschränkung lies sich leider nicht so leicht wie die erste umsetzen. PAM unterstützt zwar eine zeitbasierte Anmeldung, aber leider lassen sich in diesem Modul nur einzelne Benutzer und keine Gruppen angeben. Deshalb muss jeder Benutzer in das PAM Modul eingetragen werden, damit die Zugangsbeschränkung auch funktioniert. Damit man nicht jeden Benutzernamen einzeln eintragen muss, habe ich ein Skript geschrieben, das die Benutzernamen ausließt und eine passende Vorlage für die Datei /etc/security/time.conf erstellt.
#!/usr/bin/python3 import csv from subprocess import call classes = {} out = "" user = "" #creates updated csv in /var/lib/sophomorix/print-data/all.csv call(["sophomorix-print", "-a"]) with open('/var/lib/sophomorix/print-data/all.csv', 'rU') as exemplarfile: reader = csv.reader(exemplarfile, delimiter=';') i = 0 #get all classes and put the user in the right class for row in reader: if row[1] != "teachers": if row[1] not in classes: classes[row[1]] = [] classes[row[1]].append(row[2]) #create the strings for /etc/security/time.conf for grade in classes: #print("\n"+grade) user = "* ; * ; " for i in range(0, len(classes[grade])): #print(classes[grade][i]) if i == 0: user += classes[grade][i] else: user += "|" + classes[grade][i] out += "\n" + user + "; Wk0730-1330" print(out)
Das Skript erzeugt zuerst eine Liste mit allen Benutzernamen und liest diese dann aus und erzeugt folgende Zeile(n):
* ; * ; user1|user2|user3 ; Wk0730-1330
Das bedeutet das die user1, user2 und user3 Zugriff auf alle Dienste haben (die zwei „*“ am Anfang), aber nur an Werktagen zwischen 7:30 Uhr und 13:30 Uhr (Wk0730-1330). Weitere Infos zu weiteren Möglichkeiten findet man hier.
Die Ausgabe des Skripts muss man jetzt nur noch nach /etc/security/time.conf kopieren und noch diese Zeile in /etc/pam.d/common-auth ergänzen:
account required pam_time.so
Fazit
Mit PAM hat man viele Möglichkeiten den Zugriff auf einen Ubuntu-Rechner einzuschränken und genau festzulegen, wer wann an welchem Rechner Zugang hat. Dank postsync (neben LINBO das Killerfeature der linuxmuster.net) kann man gezielt festlegen, welche Rechner diese Konfiguration bekommen, ohne verschiedene Images pflegen zu müssen.
Beitragsbild CC by Adelson Raimundo Reis Amaral
Hallo,
da ubuntu auch „nur“ ein debian ist, kann ich mir nicht vorstellen warum sich Gruppen nicht über verwalten lassen können sollen. In der Datei /etc/security/group.conf sollten solcherlei Einstellungen gut aufgehoben sein.
Mit freundlichem Gruß
Jonas
@Jonas: Danke für den Hinweis. Soweit ich das pam_group Module verstanden habe, ist es nicht für die Authentifizierung da, sondern um Gruppen dynamisch beim Anmelden zuzuweisen.
[…] einem Druckserver (CUPS) entgegengenommen und dann an den entsprechenden Drucker verteilt. Auf den Ubuntu-Clients in unserer Schule werden diese Netzwerkdrucker automatisch erkannt und eingerichtet. In der Schulkonsole kann man, […]