Access denied

Zugang in Ubuntu für Schüler einschränken – 2 Möglichkeiten

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

3 Comments:

  1. Jonas Wolfhammer

    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

  2. zefanja

    @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.

Leave a Reply:

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