Zugang in Ubuntu für Schüler einschränken – 2 Möglichkeiten
By zefanja
Seit mehr als einem Jahr verwenden wir [die freie Musterlösung linuxmuster.net][1] 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][2]-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][3]. 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][4] (neben [LINBO][5] 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][6]_ [1]: https://zefanjas.de/2017/11/18/5-grossartige-open-source-programme-die-wir-in-unserer-schule-einsetzen/ [2]: https://de.wikipedia.org/wiki/Pluggable_Authentication_Modules [3]: https://wiki.ubuntuusers.de/pam_time/ [4]: http://docs.linuxmuster.net/de/latest/howtos/use-postsync/index.html [5]: http://docs.linuxmuster.net/de/latest/manuals/linbo/index.html [6]: https://commons.wikimedia.org/wiki/File:Access-denied_story.jpg