Benutzerverwaltung

Aus CEPHALIX/CRANIX

Benutzer einzeln anlegen

Wählen Sie im Hauptmenü Administration -> Benutzer, dann unter Benutzer den Tab Hinzufügen, um einen Benutzer anzulegen. Folgende Felder müssen beim Anlegen eines neuen Benutzers unbedingt ausgefüllt bzw. gesetzt werden:

  • Nachname
  • Vorname
  • Geburtstag
  • Rolle: Wählen Sie eine primäre Gruppe (Rolle), der der neue Benutzer angehören soll. Weitere Gruppen können Sie später über das Menü Gruppen zuordnen. Sofern Sie noch keine Rollen angelegt haben, können Sie hier nur die Rollen Schüler, Lehrer, Verwaltung, Sysadmins oder Template Benutzer wählen.
  • Klasse:: Benutzer können zu einer beliebigen Anzahl von Klassen gehören. Ist der neu angelegte Benutzer ein Schüler, muss er jedoch mind. einer Klasse zugeordnet werden. Mit CTRL+A können Sie alle Klassen auswählen, um z.B. einen Lehrer allen Klassen zuzuweisen.
  • Passwort: Darf leer bleiben. In diesem Fall wird ein sicheres Passwort generiert.
  • Benutzername: Wurde kein Benutzerkürzel (UID: User-ID) angegeben, wird dieses aus dem Nach- und Vornamen ggf Geburtsjahr ermittelt. Dieser Vorgang wird durch die Systemvariable LOGIN_SCHEME unter Server->Konfiguration->Einstellungen gesteuert. Der Standardwert ist N4V4. Das bedeutet, dass der Benutzername aus den ersten vier Buchstaben des Nachnamens und den ersten vier Buchstaben des Vornamens gebildet wird. Existiert im System schon ein Benutzer mit derselben UID, wird eine Zahl an die UID angehängt, damit diese eindeutig ist. Für Geburtsjahr verwenden Sie den Buchstaben „Y“ gefolgt von den Ziffern 2 oder 4. Andere Zahlen sind für das Geburtsjahr nicht erlaubt.
  • Mailsystem- und Festplattenquota: kann in MB angegeben werden. Gibt man keinen Wert an, werden die in den Systemvariablen FILE_QUOTA, FILE_TEACHER_QUOTA, MAIL_QUOTA und MAIL_TEACHER_QUOTA gesetzten Werte verwendet.

Sie können auch selbst eine UID für den neuen Benutzer angeben. Bitte beachten Sie dabei, dass die UID aus Kleinbuchstaben bestehen muss, keine Sonderzeichen oder Leerstellen enthalten darf und auf dem System eindeutig sein muss.

Für jeden neuen Benutzer wird ein eigenes Homeverzeichnis angelegt. Die Lehrer bekommen ihre Verzeichnisse unterhalb des Verzeichnisses /home/teachers/ und die Schüler unterhalb des Verzeichnisses /home/students. „Verwaltungsnutzer“ bekommen ihre Verzeichnisse unterhalb des Verzeichnisses /home/administration.

Es wird kein Windows-Profil-Verzeichnis für die neuen Benutzer angelegt. Diese werden bei der ersten Abmeldung an von einem Windows-Client erstellt. Die Windowsprofile liegen im /home/profiles/ und haben das Format <uid>.<Windowsversion>.

Benutzer importieren

Da es sehr mühsam wäre, die Schüler bzw. die Lehrer jedes Jahr von Hand einzutragen, bietet der Open School Server die Möglichkeit, die Liste der Schüler (und Lehrer) aus einer Datei zu importieren.

Die Datei sollte dazu folgende Voraussetzungen erfüllen:

  • Muss UTF-8 kodiert sein.
  • Die Trennzeichen zwischen den einzelnen Feldern kann Doppelpunkt, Semikolon, oder Komma sein. Andere Zeichen wie zBp. Leerzeichen und Tabulator sind nicht erlaubt. Wicht ist natürlich, sie ändern sich nicht im Verlauf der Datei. So reicht die bei vielen Schulverwaltungsprogrammen existierende Export-Funktion in eine CSV oder Textdatei meist vollkommen aus.
  • Eine Importdatei darf nur Benutzer der gleichen Rollen enthalten. D.h. man kann auf einmal nur Schüler oder nur Lehrer importieren.

Importparameter

Beim Start des Imports kann, bzw. muss man verschiedene Parameter angeben:

  • Rolle: Die Rolle der zu importierenden Benutzer.
  • Sprache: legt die Sprache fest, in der die Kopfzeile der Importdatei geschrieben ist.
  • Identifikator: legt fest wie die Benutzer identifiziert werden. Dafür gibt es 3 Möglichkeiten: Durch Nachname, Vorname und Geburtstag oder durch das Benutzerkürzel, womit man sich am CRANIX anmeldet oder durch einen externen Identifikator. WICHTIG hat man Benutzerkürzel oder Kennung (uuid) gewählt, muss dieser auch in der Importdatei vorhanden sein.
  • Passwort: Hier kann man ein Passwort für die Benutzer festlegen. Dieses wird in erster Linie nur für die neu angelegten Benutzer verwendet.
  • Passwort zurücksetzten: Wird dieses Parameter aktiviert, werden auch den vorhandenen Benutzern neue Passwörter zugewiesen. Wurde im Feld Passwort eingegeben, wird dieses verwendet, sonst bekommt jeder Benutzer ein zufällig generiertes Passwort. Sie haben auch die Möglichkeit das Passwort in der Importdatei festzulegen.
  • Klassenverzeichnisse leeren: Nach dem Import werden alle Klassenverzeichnisse gelöscht und neu angelegt.
  • Testimport: Es werden keine Änderungen durchgeführt, es wird nur dargestellt, was bei einem Import gemacht werden würde. Welche Benutzer werden neu angelegt, welche gelöscht, welchen Klassen werden die Benutzer zugeordnet.
  • Passwort ändern: Benutzer werden bei ihrer ersten Anmeldung an einem Windows-Gerät aufgefordert, ihr Passwort zu ändern. Wurde Passwort zurücksetzen aktiviert, bezieht sich diese Einstellung auch auf vorhandene Benutzer.
  • Geburtsdatum als Passwort: Das ist ein neues Feature, das in de Version 4.1 eingeführt wurde. Ist dieses Schalter aktiv bekommen neue Benutzer, oder wenn Passwort zurücksetzten: aktiv ist, alle Benutzer das eigenen Geburtsdatum in Form JJJJ-MM-DD als Passwort gesetzt. Wird im Feld Passwort auch etwas eingetragen, wird das vor dem Geburtsdatum gesetzt.
  • Vollständig: Dieses Parameter hat nur dann einen Einfluss auf den Import, wenn Schüler importiert werden. Ist dieser Parameter gesetzt, werden Schüler, die nicht in der Liste enthalten sind, gelöscht.
  • Alle Klassen: Dieses Parameter hat nur dann einen Einfluss auf den Import, wenn Schüler importiert werden. Ist dieser Parameter gesetzt, werden Klasse, die nicht in der Liste enthalten sind, gelöscht.

Format der Import CSV-Datei

In der ersten Zeile werden die Spalten und das Trennfeld der Datei definiert.Zur Zeit sind folgende Schlüsselwörter erlaubt, Pflichtfelder sind als solche vermerkt:

Feldname Pflichtfeld/Bedeutung
NACHNAME Pflichtfeld
VORNAME Pflichtfeld
GEBURTSTAG Pflichtfeld
KLASSE Wird der Benutzer mehreren Klassen zugeordnet, müssen diese durch Leerzeichen getrennt werden.
PASSWORT Hier können Sie das Passwort eines jeden Benutzers optional, individuell bestimmen.
BENUTZERKENNUNG Sie können individuelle User-IDs eingeben. Nutzen Sie diese Möglichkeit, wenn Ihnen die vom CRANIX automatisch generierten User-IDs (Anmeldenamen) nicht gefallen.
IDENTIFIKATOR In diesem Feld kann ein externe Identifikator, zBp. Personalnummer verwendet werden.
GRUPPE Wird der Benutzer mehreren Gruppen zugeordnet, müssen diese durch Leerzeichen getrennt werden.
MAIL-QUOTA Mailsystemquota in MB
FESTPLATTENQUOTA Filesystemquota in MB

Die mit Pflichtfeld gekennzeichneten Felder sind obligatorisch. Ein Benutzer wird also durch die Felder NACHNAME, VORNAME und GEBURTSTAG identifiziert und durch das Feld KLASSE einer Klasse zugeordnet.

Achtung
Verwenden Sie als Name für die Spalten die exakte Schreibweise wie oben in den Tabellen. Andernfalls kann der CRANIX die Spalten nicht richtig erkennen. Groß-/Kleinschreibung ist jedoch irrelevant.

Es bestehen drei Möglichkeiten, wie mit Benutzerdaten nach dem Einlesen der Benutzerdatei weiter verfahren wird.

1. Neuer Benutzer

Wird ein Benutzer in der Datenbank nicht gefunden, handelt es sich um einen neuen Benutzer. In diesem Fall wird für diesen Benutzer ein neuer eindeutiger Login Name, wie unter Neu Anlegen einzelner Benutzer beschrieben, ermittelt und dieser in die Datenbank aufgenommen. Falls vorhanden, wird das Feld PASSWORT wie folgt ausgewertet:

  • ‘text’ => ‘text’ wird als Passwort gesetzt.
  • ‘*’ => Sollten Sie in ein und derselben Textdatei einigen Nutzern ein fest definiertes Passwort über ‘text’ zuweisen, für andere jedoch ein zufälliges Passwort generieren lassen wollen, so fügen Sie bei diesen Nutzern den ‘*’ ein.
  • ‘kein Inhalt’ => Sollte anderen Nutzern ein Passwort über die beiden oben angegebenen Möglichkeiten (fest oder zufällig) zugewiesen worden sein, bei einem (oder mehreren) Nutzern in derselben Datei aber kein Wert im Passwortfeld enthalten sein, so bekommen diese Nutzer kein Passwort, d.h. sie können sich ohne Passwort am System anmelden.

Ist das Feld PASSWORT in der Datei nicht vorhanden, wird ein zufälliges Passwort zugewiesen.

2. Vorhandene Benutzer ändern

Steht ein Benutzer sowohl in der Datenbank als auch in der Benutzerliste, handelt es sich um einen alten Benutzer.

Bei vorhandenen Benutzern wird das Feld PASSWORT nicht ausgewertet. Die Benutzer werden lediglich aus der alten Klasse aus- und in die neue Klasse eingetragen.

3. Benutzer löschen

Hinweis: Diese Funktion funktioniert nur, wenn sie eine vollständige Liste der Schüler einlesen.

  • Steht ein Benutzer in der Datenbank, jedoch nicht in der Benutzerliste, bedeutet das, dass dieser Benutzer die Schule verlassen hat.
  • Also werden seine Daten aus der Datenbank gelöscht, sein Heimatverzeichnis wird in ein Archiv zusammengefasst und unter /home/archiv/ benutzername-datum.tgz gespeichert.

Ergebnis
Nach dem Abarbeiten der eingelesenen Datei wird die neue, aktuelle Benutzerliste pro Klasse in der Datei /home/groups/SYSADMINS/userimports/<datum>.<uhrzeit>/userlist. <KLASSE>.txt im Gruppenverzeichnis der Systemadministratoren gespeichert. In dieser Datei stehen die Passwörter im Klartext und muss dementsprechend mit Vorsicht behandelt werden.

Hier ist eine Beispieldatei für das erste Laden des Systems mit unterschiedlichen Passwort-Vergaben:

GEBURTSTAG:NACHNAME:VORNAME:PASSWORT:KLASSE 
11.10.1986:Klein:Aladar:12345:9A 
4.08.1986:Micuc:Emil::9A
09.11.1986:Groß:Evelyn:*:9A 
17.04.1986:Müller:Helmuth:*:9A 10A: 
29.9.1987:Klein:Aladar:*:10A

Die resultierenden Dateien:

  • /home/groups/SYSADMINS/userimport.<datum>.<uhrzeit>/userlist.9A.txt
  • /home/groups/SYSADMINS/userimport.<datum>.<uhrzeit>/.userlist.10A.txt

Passwortsicherheit (Password Policy)

Sie können die folgenden Kennworteinstellungen mit CRANIX-4 konfigurieren:

  • Wird die Komplexität des Passworts überprüft.
  • Minimale Passwortlänge
  • Maximale Passwortlänge. Das ist kein Standard Samba/Windows Kennworteinstellung. In der Praxis hatte es sich jedoch als sinnvoll erwiesen, die Länge der Passwörter zu begrenzen.
  • Mindestalter des Passworts
  • Maximales Kennwortalter
  • Die Anzahl ungültiger Kennwortversuche, die vor dem Sperren des Kontos zulässig sind.
  • Die Zeitspanne, in der ein Konto gesperrt wird, nachdem das Limit für fehlerhafte Kennwortversuche überschritten wurde.

Grundsätzlich können diese Werte von der Kommandozeile mit samba-tool Befehl abgefragt bzw. gesetzt werden.

 Abfrage der aktuellen Werte:
 samba-tool domain passwordsettings show
 Password complexity: on
 Store plaintext passwords: off
 Password history length: 24
 Minimum password length: 7
 Minimum password age (days): 1
 Maximum password age (days): 365
 Account lockout duration (mins): 30
 Account lockout threshold (attempts): 0
 Reset account lockout after (mins): 30
 WICHTIG das sind die Standardwerten
 Auflisten der Befehlsoptionen
 samba-tool domain passwordsettings set -h

Bei der Installation wird für die Passwörter ein Jahr als Gültigkeit gesetzt. Möchte man, dass die Passwörter nie ablaufen kann man das mit folgendem Befehl für alle Benutzer erreichen:

 samba-tool domain passwordsettings set --max-pwd-age=0

Möchte man jedoch nur für einzelnen Benutzer dies setztem, muss man folgenden Befehl verwenden:

 samba-tool user  setexpiry --noexpiry <uid>

Überprüfung von Passworten

Beim Anlegen neue Benutzern bzw. bei Ändern der Passwörter vorhandenen Benutzer wird die Qualität des Passwortes überprüft. Um die Komplexität der Passwörter besser kontrollieren bzw. beschreiben zu können, liefert der CRANIX ein eigenes Script für diesen Zweck: /usr/share/oss/tools/check_password_complexity.sh Dieses Prüft das Passwort ob folgende Voraussetzungen erfüllt: Technische Voraussetzungen:

  1. Minimale Passwortlänge ist eingehalten. Die minimale Passwortlänge wird durch die globale Variable MINIMAL_PASSWORD_LENGTH festgelegt.
  2. Maximale Passwortlänge ist eingehalten. Die maximale Passwortlänge wird durch die globale Variable MAXIMAL_PASSWORD_LENGTH festgelegt.
  3. Das Passwort darf kein '&' und '§'-Zeichen enthalten. Das kommt aus eine Restriktion von Office365 von Microsoft.
  4. Das Passwort darf nicht mit Bindestrich '-' beginnen.

Sicherheitsrelevante Voraussetzungen:

  1. Das Passwort muss mindestens einen Großbuchstaben enthalten.
  2. Das Passwort muss mindestens einen Kleinbuchstaben enthalten.
  3. Das Passwort muss mindestens eine Ziffer enthalten.
  4. Das Passwort muss die Prüfung durch cracklib-check bestehen.

WICHTIG Auch wenn Sie CHECK_PASSWORD_QUALITY auf no setzten, müssen die technische Voraussetzungen erfüllt werden. Das gilt auch, wenn Lehrer die Passwörter von Schüler zurücksetzen. Zwar wird in diesem Fall automatisch CHECK_PASSWORD_QUALITY auf no gesetzt, die technische Voraussetzungen müssen trotzdem erfüllt werden.

Dieses Programm liest das Passwort aus dem STDIN. Dieses Script wurde in /etc/samba/smb.conf als check password script für Samba auch als Überprüfungsskript gesetzt. Wer eigene Passwortüberprüfung erstellen möchte kann ein Script namens /usr/share/oss/tools/custom_check_password_complexity.sh erstellen. Dieses Script muss folgende Bedingungen erfüllen:

  • muss ausführbar sein.
  • muss das zu evaluierende Passwort aus der Standardeingabe lesen.
  • muss beim Erfolg mit einem Exitwert von 0 sonst ein Wert größer als 0 aufhören.
  • muss beim fehlerhaften Passwort den Grund auf der Standardausgabe liefern.

Bitte beachten Sie, dass dieses Script nur die Sicherheitsrelevante Überprüfung ersetzt. Die technische Überprüfung bleibt nach wie vor erhalten.

Benutzer über oss-api verwalten

Man kann von der Kommandozeile über das oss-api die Benutzer auch verwalten.

Benutzer auflisten

  oss_api.sh GET users/all listet alle Benutzer in JSON List auf.
  oss_api.sh GET users/byRole/{role} listet alle Benutzer einer Rolle in JSON List auf.
  oss_api_text.sh GET users/byUid/{uid}/{parameter} Mit diesem Call kann man ein Parameter eines Benutzers abfragen.
  oss_api_text.sh GET text/{userName}/classes Listet alle Klassen auf in der der Benutzer Mitglied ist
  oss_api_text.sh GET text/{userName}/grousp Listet alle Gruppen auf in der der Benutzer Mitglied ist

Benutzer erstellen

Zuerst muss man eine Datei mit einem JSON-Hash der Benutzerdaten erstellen. Diese muss mindestens die obligatorische Felder erhalten:

{
   "sn" : "Mouse",
   "givenName" : "Micky",
   "birthDay" : "2007.04-17",
   "role" : "students"
}

Dieser muss in einer Datei gespeichert werden und kann nun mit folgendem Call der Benutzer erstellt werden:

 oss_api_post_file.sh users/add <Pfad zur JSON-Hash-File>

Benutzer löschen

Man kann einen Benutzer anhand sein uid oder Datenbank-ID löschen:

  oss_api.sh DELETE users/text/{uid}
  oss_api.sh DELETE users/{Datenbank Id}

Gruppenmitgliedschaft von Benutzer ändern

  oss_api_text.sh PUT users/text/{userName}/groups/{groupName}
  oss_api_text.sh DELETE users/text/{userName}/groups/{groupName}
  oss_api_text.sh PUT users/text/{userName}/allClassess
  oss_api_text.sh PUT users/allTeachersInAllClasses