Benutzerverwaltung

Aus CEPHALIX/CRANIX

Standardbenutzer

Während der Installation vom CRANIX werden mehrere Benutzer angelegt, die zur verschieden Funktionen des Servers notwendig sind:

Benutzername Rolle Berechtigung / Gruppenzugehörigkeit Funktion Bemerkung
root -- darf alles machen Systemadministration von der Linuxkonsole Nur direkte Anmeldung am CRANIX oder Fernwartung per ssh.
Administrator sysadmins Domain Administrator Verwaltung der Domäne, Webadministration Keine direkte Anmeldung am Server. Passwort nach der Installation identisch mit dem vom root . Ersetzt den Benutzer admin von OSS-3.4.2
register internal Administrators Ausführung automatischer Domänenadministration ( z.B. Domainbeitritt nach dem Klonen ) Erhält ein zufälliges Passwort während der Installation, welches in /opt/cranix-java/conf/cranix-api.properties gespeichert wird. Setzt man die Systemvariable RESET_REGISTER_PASSWORD auf yes, wird sein Passwort jeden Tag neu generiert um die Sicherheit des Systems zu erhöhen. Standardeinstellung ist no .
ossreader internal Domain User Ausführung automatischer Arbeiten, welche nur lesende Rechte benötigen. Passwort ist ossreader und darf nicht geändert werden.
cephalix internal Domain Administrator Verwaltung des Servers vom CEPHALIX-Server aus. Der CEPHALIX-Server greift über diesen Benutzer auf den Server zu. Alle Objekten (Benutzer, Gruppen, Softwares ...) die vom cephalix erstellt werden, können nur vom dem CEPHALIX Server aus verwaltet werden. Auch der Benutzer Administrator hat keinen Zugriff auf diese Objekte.
tteachers teachers Domain User, templates Templatebenutzer für die Lehrer. Beim Anlegen eines Lehrers wird sein Homeverzeichnis in das Homeverzeichnis des neuen Benutzers kopiert.
tstudents students Domain User, templates Templatebenutzer für die Schüler. Beim Anlegen eines Schülers wird sein Homeverzeichnis in das Homeverzeichnis des neuen Benutzers kopiert.
tadministration administration Domain User, templates Templatebenutzer für die Verwaltung. Beim Anlegen eines Benutzers für die Verwaltung wird sein Homeverzeichnis in das Homeverzeichnis des neuen Benutzers kopiert.
tworkstations workstations Domain User, templates Templatebenutzer für die Arbeitsplatzbenutzer Bei der Registrierung eines Gerätes in einer Gerätekonfiguration des Typs FatClient wird ein Workstation-Benutzer mit dem Namen und Passwort des Gerätes erstellt. Dieser Benutzer kann sich nur an diesem Gerät anmelden.

Systembenutzer vs Samba-Benutzer

Normaler weise pflegt Linux die Systembenutzer UNIX-gemäß in der Dateien /etc/passwd und /etc/shadow. Nur der Benutzer root vom CRANIX server ist in diesen Dateien zu finden. Der CRANIX-Server ist ein AD-Samba-Server und die weitere Benutzer werden in der SAMBA-LDAP-Datenbank gespeichert. Damit diese auf Linux ebene auch sichtbar sind, wird auf dem SAMBA-Server auch der winbind Dienst gestartet. Diese sorgt dafür, dass die SAMBA-Benutzer und Gruppen-SIDs in UNIX uidNumber und gidNumber umgewandelt werden. Dies geschieht durch folgende Einstellungen in der Datei /etc/nsswitch.conf:

 passwd: compat winbind
 group:  compat winbind

Zwar sind die Benutzer auf dem CRANIX-Server sichtbar, die Dateien können zugeordnet werden, eine Authentisierung über Dienste die PAM-Schnittstelle abwickeln (ssh, login, sftp, ftp, cyrus ...) ist jedoch nicht möglich. Wenn Sie zum Beispiel den SAMBA-Benutzern auch ssh Zugang zum CRANIX-Server gewähren möchten, muss dafür auch PAM konfiguriert werden:

 pam-config -a --winbind

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:

  • 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.
  • Kennung In diesem Feld kann ein externer Identifikator, zBp. Personalnummer verwendet 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.
  • 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.
Benutzer-Anlegen.png

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.
Benutzer-Importieren.png

Importparameter

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

  • Rolle: Die Rolle der zu importierenden Benutzer.
    Kommandozeilenparameter: --role [administration,students,sysadmins,teachers,templates]
  • Sprache: legt die Sprache fest, in der die Kopfzeile der Importdatei geschrieben ist.
    Kommandozeilenparameter: --lang [DE,EN]
  • Identifizierungsmerkmal: 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.
    Kommandozeilenparameter: --identifier [sn-gn-bd,uid,uuid]
  • Als Test ausführen: 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.
    Kommandozeilenparameter: --test. Dieser Parameter hat keinen Wert.
  • Passwort: Hier kann man ein Passwort für die Benutzer festlegen. Dieses wird in erster Linie nur für die neu angelegten Benutzer verwendet.
    Kommandozeilenparameter: --password PASSWORD
  • Passwort bei erster Anmeldung ä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.
    Kommandozeilenparameter: --mustChange. Dieser Parameter hat keinen Wert.
  • Importdatei enthält alle Benutzer.: 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.
    Kommandozeilenparameter: --full Dieser Parameter hat keinen Wert.
  • Importdatei enthält alle Klassen. Andere werden gelöscht. Dieses Parameter hat nur dann einen Einfluss auf den Import, wenn Schüler importiert werden. Wird dieses Parameter aktiviert, werden die Klassen die in der Importdatei nicht vorkommen aus dem System gelöscht.
    Kommandozeilenparameter: --allClasses Dieser Parameter hat keinen Wert.
  • Klassenverzeichnisse leeren: Nach dem Import werden alle Klassenverzeichnisse gelöscht und neu angelegt.
    Kommandozeilenparameter: --cleanClassDirs Dieser Parameter hat keinen Wert.
  • Passwörter für alte Benutzer auch setzen.: 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.
    Kommandozeilenparameter: --resetPassword Dieser Parameter hat keinen Wert.
  • Geburtsdatum an das Passwort anhängen.: 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.
    Kommandozeilenparameter: --appendBirthdayToPassword Dieser Parameter hat keinen Wert.
  • Klassennamen an das Passwort anhängen.: Ist dieses Schalter aktiv bekommen neue Benutzer, oder wenn Passwort zurücksetzten: aktiv ist, alle Benutzer den eigenen Klassennamen als Passwort gesetzt. Wird im Feld Passwort auch etwas eingetragen, wird das vor dem Klassennamen gesetzt. Diese Parameter kann auch mit Geburtsdatum an das Passwort anhängen. kombiniert werden.
    Kommandozeilenparameter: --appendClassToPassword Dieser Parameter hat keinen Wert.

Format der Import CSV-Datei

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

Feldname Pflichtfeld/Bedeutung Syntax
NACHNAME Pflichtfeld Keine Begrenzung. Lediglich das Trennzeichen darf nicht vorkommen.
VORNAME Pflichtfeld Keine Begrenzung. Lediglich das Trennzeichen darf nicht vorkommen.
GEBURTSTAG Haben Sie als Identifizierungsmerkmal "Name + Geburtstag" gewählt ist dieser ein Pflichtfeld. Folgende Datumformate werden erkannt:
JJJJ-MM-TT
TT-MM-JJJJ
JJJJ:MM:TT
TT:MM:JJJJ
JJJJ.MM.TT
TT.MM.JJJJ
JJJJMMTT
KLASSE Neue Klasse(n) des Benutzers. Aus den aktuellen Klassen wird der Benutzer entfernt. 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. Siehe Passwortsicherheit
BENUTZERNAME Sie können individuelle User-IDs eingeben. Nutzen Sie diese Möglichkeit, wenn Ihnen die vom CRANIX automatisch generierten User-IDs (Anmeldenamen) nicht gefallen. Haben Sie als Identifizierungsmerkmal "Benutzername" gewählt ist dieser ein Pflichtfeld. Dar nur ASCII-Buchstaben, Ziffern, Punkt und Bindestich erhalten. Darf jedoch nicht mit Punkt oder Bindestich anfangen.
KENNUNG In diesem Feld kann ein externe Identifikator, zBp. Personalnummer verwendet werden. Haben Sie als Identifizierungsmerkmal "Kennung (UUID)" gewählt ist dieser ein Pflichtfeld. Keine Begrenzung. Lediglich das Trennzeichen darf nicht vorkommen.
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. 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.

Abarbeiten der Importdatei

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/userimports/<datum>.<uhrzeit>/userlist.9A.txt
  • /home/groups/SYSADMINS/userimports/<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/cranix/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/cranix/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 cranix-api verwalten

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

Benutzer auflisten

  crx_api.sh GET users/all listet alle Benutzer in JSON List auf.
  crx_api.sh GET users/byRole/{role} listet alle Benutzer einer Rolle in JSON List auf.
  crx_api_text.sh GET users/byUid/{uid}/{parameter} Mit diesem Call kann man ein Parameter eines Benutzers abfragen.
  crx_api_text.sh GET text/{userName}/classes Listet alle Klassen auf in der der Benutzer Mitglied ist
  crx_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:

 crx_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:

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

Gruppenmitgliedschaft von Benutzer ändern

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