Skip to content

Laufwerke und Zugriffsberechtigungen

Normalerweise reichen die per Standard vorhandenen und mit Freigaben verbundenen Laufwerksbuchstaben H:, T: und P: aus, um alles zu realisieren, was es an Anforderungen und Konstellationen an Schulen gibt. Der Container logosrv fungiert hierbei als Dateiserver. Von einem Client aus kann ein angemeldeter Benutzer anschließend, je nach Berechtigung, auf diese Freigaben per Dateiexplorer zugreifen und Dateien ablegen, bearbeiten und löschen.

Freigabebuchstabe Freigabename Beschreibung Rechte
H: Home persönliche Dateiablage eines Benutzers Vollzugriff des Benutzers
T: Tausch Schulweiter Austausch von Dateien und Klassentausch Nur Besitzer hat Vollzugriff, Rest nur Leserechte
P: Programme Ablage für serverbasierte Software-und Programmdateien Lesen, Ausführen

Eine gewöhnliche Anmeldung an einer Arbeitsstation läuft im Hintwegrund nach dem folgenden Schema ab:

DC1: logon.bat (/data/samba/state/sysvol/ad.shortname.logodidact.net/scripts/) -> logosrv: logon.bat (/home/samba/netlogon/) -> (optional) Abarbeitung custom-Skripte

Zusätzliche Freigabe definieren

Unter Umständen kann es erforderlich sein eine zusätzliche Netzwerkfreigabe seitens des LogoDIDACT-Servers bereitzustellen, beispielsweise falls es sich um sensible Daten handelt, auf die nur ein spezfizierter Personenkreis Zugriff erhalten soll.

Allgemeine Freigabe

Hier wird nachfolgend ein zusätzliches allgemeines Netzlaufwerk für jeden Benutzer bereitgestellt.

Zunächst im Konfigurationsverzeichnis des samba eine zusätzliche Custom-Datei anlegen. Falls die Datei schon exisitiert können Einträge einfach ergänzt werden.

logosrv
root@logosrv:~ # touch /etc/samba/smb.conf.custom
root@logosrv:~/etc/samba # vi smb.conf.custom
smb.conf.custom
# Share mit Vollzugriff für Jeden
[Daten]
path = /home/samba/daten
admin users = @pgmadmins
create mask = 0666
force directory mode = 0777
guest ok = yes 
writable = yes 
include = /etc/samba/smb.conf.vscan
include = /etc/samba/smb.conf.daten

Danach einen leeren Ordner am Server erstellen, der dem Wert aus der Option path entspricht. Zur Übernahme muss einmal der samba-Dienst neu gestartet werden.

logosrv
root@logosrv:~ # mkdir /home/samba/daten
root@logosrv:~ # /etc/init.d/samba restart

Der abschließende Schritt besteht darin festzulegen, dass über ein Anmeldeskript (Batchdatei) am Schul-PC die Freigabe mit dem Laufwerksbuchstaben automatisch verbunden wird. Das geschieht über einen Eintrag in der Datei /home/samba/netlogon/settings.bat.

logosrv
root@logosrv:~ # vi /home/samba/netlogon/settings.bat
REM Anpassung Laufwerksbuchstaben und Shares
set EXTRA_SHARES=Q: daten

Soll der Buchstabe nur für bestimmte Benutzergruppen verbunden werden, kann das über eine rollenbezogene Anmeldung erfolgen. Bei der Anmeldung wird geprüft, ob es eigene Anmeldeskripte gibt und diese zusätzlich aufgerufen. Der Ablauf ist hierbei wie folgt:

  1. Gibt es \\server\netlogon\role_%ROLE%.bat, wird dieses ausgeführt. %ROLE% ist hierbei die Benutzerrolle, also student, teacher, course oder admin.

  2. Gibt es \\server\netlogon\group_%GROUP%.bat, wird dieses ausgeführt. Für %GROUP% werden hierbei nacheinander alle Gruppen eingesetzt, in denen der Benutzer Mitglied ist.

  3. Gibt es \\server\netlogon\user_%USER%.bat, wird dieses ausgeführt. %USER% ist hierbei der Benutzername des angemeldeten Benutzers.

Info

Weiterführend Informationen zur Abarbeitung von Anmeldeskripten liegen unter \\server\netlogon\INFO.txt

Gruppenbezogene Freigabe

Hier wird nachfolgend eine zusätzliche Freigabe namens Verwaltung mit dem Laufwerksbuchstaben V: konfiguriert. Auf die Freigabe haben nur bestimmte Gruppen Zugriff.

Alle Konfigurationen finden im Container logosrv statt.

Zunächst im Konfigurationsverzeichnis des samba eine zusätzliche Custom-Datei anlegen. Falls die Datei schon exisitiert können Einträge einfach ergänzt werden.

logosrv
root@logosrv:~ # touch /etc/samba/smb.conf.custom
root@logosrv:~/etc/samba # vi smb.conf.custom

Nun die Freigabe verwaltung definieren. In die eckigen Klammern kommt der Freigabename. Ebenso wichtig wie der Name sind weitere Angaben wie der Freigabepfad path und die Berechtigungen von Benutzern/Gruppen auf diesen Ordner. Im Beispiel wären das die Gruppen verwaltung-schreiben und verwaltung-lesen.

smb.conf.custom
[verwaltung$]
 comment = Verwaltung
 path = /home/samba/verwaltung
 browseable = no
 include = /etc/samba/smb.conf.vscan
 write list = @sysadmins, @pgmadmins, @itbs, @verwaltung-schreiben
 admin users = @sysadmins, @pgmadmins, @itbs, @verwaltung-schreiben
 valid users = @sysadmins, @pgmadmins, @itbs, @verwaltung-schreiben, @verwaltung-lesen
 invalid users = @schueler, @course, @sonstige
 guest ok = no
 nt acl support = yes
 inherit acls = yes
 inherit permissions = yes
 map acl inherit = yes
 writeable = no

Tipp

Das $-Zeichen am Ende des Namens bewirkt, dass es sich um eine versteckte SMB-Freigabe handelt.

Warnung

Der Parameter invalid users muss je nach Anforderung an die eigenen Bedürfnisse angepasst werden. Dort aufgeführte Benutzer oder Gruppen erhalten keinerlei Zugriff auf die Freigabe.

Danach einen leeren Ordner am Server erstellen, der dem Wert aus der Option path entspricht. Zur Übernahme muss einmal der samba-Dienst neu gestartet werden.

logosrv
root@logosrv:~ # mkdir /home/samba/verwaltung
root@logosrv:~ # /etc/init.d/samba restart

conf-Share mit Server-Konfigurationsdateien im logosrv aktivieren

Seit Puppet-Version 1.4.0 ist das versteckte SMB-Share \\files\conf$ aus dem LXC-Container logosrv standardmäßig deaktiviert.

Diese Freigabe stellt eine Möglichkeit dar, um gewisse Konfigurationsdateien (wie z.B. die internet.conf für die Firewall-Einstellungen) in einer Netzwerkwerkfreigabe dem admin zugänglich zu machen, ohne SSH-Zugang zum Server. Damit lässt sich die Anforderung abdecken, einen Teil der Einstellungen den IT-Betreuern freizuschalten, ohne das root-Kennwort zum Server hierfür herauszugeben.

Um die Freigabe per Puppet-Einstellung zu aktivieren, mussfolgende Konfigurationsdatei um den untenstehenden Inhalt ergänzt werden:

puppeteer-g3
root@puppeteer-g3:~ # cd /etc/logodidact/hiera/custom.d/
root@logosrv:/etc/logodidact/hiera/custom.d/ # vi ldhost.yaml
ldhost.yaml
root@puppeteer-g3:~ # cd /etc/logodidact/hiera/custom.d/
root@logosrv:/etc/logodidact/hiera/custom.d/ # vi ldhost.yaml

Zugriffsberechtigung ACLs in LogoDIDACT

Der LogoDIDACT Server unterstützt so genannte ACLs, d.h. Zugriffsberechtigungen, die auf Ordner- und Dateiebene sehr detailliert für Gruppen und Benutzer einstellbar sind. Diese Berechtigungen können grundsätzlich auch von einem Windows-Client aus auf Ordner am Server angepasst werden. Bitte bedenken Sie aber, dass es aus Gründen der Systemstabilität am Server bestimmte Ordner und dafür festgelegte Dateiberechtigungen gibt, die zwangsweise so belassen werden müssen.

Weiterhin gibt es Skripte dafür, die in einem Fehlerfall die Berechtigungen wieder korrekt zurücksetzen. Der Befehl in einer Shell im Container logosrv lautet dafür repair_permissions und kann gezielt für bestimmte Ordner ausgeführt werden. Wenn man repair_permissions ohne Argument angibt, erhält man eine Auflistung aller unterstützten Optionen. Die Standard-ACLs orientieren sich dabei an einer Vorlagen-Datei unter /etc/logodidact/service.conf. In dieser sind für die gängigen Freigabe-Ordner alle Rechte grundlegend vordefiniert.

Datei und Verzeichnisrechte am Server prüfen

Bevor man die Rechte an Dateien und Ordnern ändert, sollte man sich diese am Server zunächst anschauen. Damit kann man dann konkret sowohl an Ordnern als auch an Dateien prüfen, ob sich die Rechte auch tatsächlich geändert haben. In Linux gibt es dazu den Befehl getfacl, mit dem sich die ACL, also die Zugriffsrechte auslesen und anzeigen lassen.

Als Beispiel, wechseln Sie dazu am Server in den Lehrertauschordner und erstellen dort einen Unterordner Namens TEST. Mit dem Befehl getfacl TEST lesen Sie die Berechtigungen an diesem Unterordner aus und erhalten in etwa folgende Ausgabe:

logosrv
1
2
3
cd /home/tausch/Lehrer
mkdir test
getfacl test

Ohne auf jedes Detail einzugehen, ist im unteren Bereich an den Kürzeln rwx (r für read, w für write, x für execute) erkennbar, dass nur verschiedene administrative Gruppen schreibenden Zugriff (Flag w) auf neu erstellte Dateien und Ordner haben. Ebenfalls hat es jeder Benutzer (user::rwx) und Gruppe für genau diejenigen Dateien und Ordner, die er dort selbst angelegt hat. Das ist genau die Standardeinstellung, welche man von einem Tauschordner erwartet.

Ausgabe
# file: test
# owner: root
# group: root
user::rwx
group::r-x
group:sysadmins:rwx
group:itbs:rwx
group:lehrer:rwx
mask::rwx
other::---
default:user::rwx
default:group::r-x
default:group:sysadmins:rwx
default:group:itbs:rwx
default:group:lehrer:rwx
default:mask::rwx
default:other::---

Vollzugriff auf Lehrer-Tausch

Per Standard haben die Lehrer im Lehrertauschlaufwerk nur lesenden Zugriff auf Dateien und Ordner anderer Kollegen und Vollzugriff auf selbst erstellte Dateien und Ordner. Soll das geändert werden, editieren Sie die entsprechende Stelle in /etc/logodidact/service.conf.

Vollzugriff für alle Lehrer auf Dateien und Ordner im Lehrer-Tausch:

service.conf

service.conf
1
2
3
4
5
6
TeachersSwapMode 01770
TeachersSwapOwner root
TeachersSwapGroup lehrer
TeachersSwapEnabled yes
TeachersSwapPermissions d:u::rwX d:g::rX d:o:: d:g:lehrer:rwX
TeachersSwapPermissions u::rwX g::rwX o:: g:lehrer:rwX
service.conf
1
2
3
4
5
6
TeachersSwapMode 00770
TeachersSwapOwner root
TeachersSwapGroup lehrer
TeachersSwapEnabled yes
TeachersSwapPermissions d:u::rwX d:g::rwX d:o:: d:g:lehrer:rwX
TeachersSwapPermissions u::rwX g::rwX o:: g:lehrer:rwX

Warnung

Damit die Berechtigungen an bereits bestehenden Ordnern und Dateien verändert werden, muss noch ein repair_permissions --tausch ausgeführt werden. Damit neu erzeugte Dateien und Ordner die richtigen Rechte erhalten, muss auch der ldserver neu gestartet werden: /etc/init.d/ldserver restart

Zugriff für Lehrer auf Schüler Homelaufwerke

Per Standard hat in LogoDIDACT ein Lehrer KEINEN Zugriff auf die Homeverzeichnisse der Schüler. Abhängig von der Schulart bzw. dem Schultyp und damit auch dem Alter der Benutzer, erscheint Ihnen diese Voreinstellung logisch und richtig oder vollkommen unsinnig und nicht praktikabel.

Schüler an beruflichen Einrichtungen, die schon volljährig sind, haben ein Recht darauf, dass ihre Dateien und Daten nicht ohne Weiteres eingesehen oder gar verändert oder gelöscht werden können. Denken Sie an die Situation, dass ein elektronisches Dokument vom Lehrer bewertet wird und ein Schüler behauptet, dass das Dokument von einem Lehrer verändert und manipuliert wurde. Ebenso ist es einleuchtend, dass es bei Schülern im Grundschulalter einen anderen Maßstab für den Umgang mit Dateien geben kann.

Aus rechtlicher Sicht gibt es also verschiedene Positionen zu dem Thema, WER auf WESSEN Daten WIE zugreifen darf und im Normalfall sollte das an jeder Schule durch eine entsprechende Nutzungsordnung vor der Nutzung einmalig schriftlich geregelt werden. Ungeachtet dieser unterschiedlichen Ansichten ist jedoch klar, dass man diese verschiedenen Einstellungen in LogoDIDACT anpassen kann.

Lesender Zugriff der Lehrer auf Schüler-Homes

Die Freigabe classes$ ist in /etc/samba/smb.conf.shares vordefiniert und muss lediglich über die Datei /home/samba/netlogon/settings.bat zugeordnet werden

Beispiele finden Sie auch in der Datei example_settings.bat. Kopieren Sie die Datei example_settings.bat nach settings.bat mit dem Befehl cp example_settings.bat settings.bat.

Ändern Sie dann den Eintrag Eintrag folgendermaßen ab:

settings.bat

set EXTRA_SHARES=Q: wpgm

set EXTRA_SHARES=S: classes$

Vollzugriff der Lehrer auf Schüler-Homes

Auch beim Vollzugriff, muss das vordefinierte Share wie zuvor beschrieben wieder über die settings.bat eingebunden werden.

Die Berechtigungen auf dieses Share sind definiert in /etc/samba/smb.conf.shares. Sie sollten die Berechtigungen aber NICHT direkt in dieser Datei abändern, da sie bei einem ldupdate überschrieben wird. Jedes Share besitzt aber eine Include-Anweisung mit konkreten Angaben zu einer benutzerdefinierten Datei:

smb.conf.shares
1
2
3
4
5
6
7
8
9
[classes$]
comment = Klassen
path = /home/dynamic/Klassen
valid users = @sysadmins, @itbs, @lehrer
admin users = @sysadmins, @itbs
read only = yes
force user = root
force group = root
include = /etc/samba/smb.conf.classes$

Erstellen Sie also die entsprechende Include-Datei und tragen Sie die beiden Parameter, die „überschrieben“ werden müssen, dort ein:

vi /etc/samba/smb.conf.classes$
smb.conf.classes$
admin users = @sysadmins, @itbs, @lehrer
read only = no

Die Gruppe der Lehrer hat somit die Rechte der admin users und schreibenden Zugriff, d.h. man kann Dateien erstellen und löschen.

Vollzugriff aller Benutzer auf Schulweiter Tausch

Im Bereich Schulweiter Tausch haben sowohl Lehrer als auch Schüler per Standardeinstellung nur lesenden Zugriff auf Dateien und Ordner anderer Benutzer und Vollzugriff auf die selbst erstellten Dateien und Ordner. Möchten Sie das anpassen, editieren Sie die entsprechende Stelle in der bereits erwähnten service.conf.

service.conf

1
2
3
4
5
6
GlobalSwapMode 01777
GlobalSwapOwner root
GlobalSwapGroup root
GlobalSwapEnabled yes
GlobalSwapPermissions d:u::rwX d:g::rwX d:o::rwX d:g:lehrer:rwX
GlobalSwapPermissions u::rwX g::rwX o::rwX g:lehrer:rwX
1
2
3
4
5
6
GlobalSwapMode 00777
GlobalSwapOwner root
GlobalSwapGroup root
GlobalSwapEnabled yes
GlobalSwapPermissions d:u::rwX d:g::rwX d:o::rwX d:g:lehrer:rwX
GlobalSwapPermissions u::rwX g::rwX o::rwX g:lehrer:rwX

Entscheidend bei dieser Anpassung ist nur das so genannte Sticky Bit, d.h. die Änderung des Parameters GlobalSwapMode 01777 auf GlobalSwapMode 00777.

Vollzugriff auf Klassen-Tauschlaufwerke

service.conf

1
2
3
4
5
6
ClassesSwapMode 01770
ClassesSwapOwner root
ClassesSwapGroup $class
ClassesSwapEnabled no
ClassesSwapPermissions d:u::rwX d:g::rX d:g:$class:rwX d:o::rX d:g:lehrer:rwX
ClassesSwapPermissions u::rwX g::rwX g:$class:rwX o::rX g:lehrer:rwX
1
2
3
4
5
6
ClassesSwapMode 00770
ClassesSwapOwner root
ClassesSwapGroup $class
ClassesSwapEnabled yes
ClassesSwapPermissions d:u::rwX d:g::rwX d:o::rx d:g:lehrer:rwX d:g:schueler:rwX
ClassesSwapPermissions u::rwX g::rwX o::rx g:lehrer:rwX g:schueler:rwX

Klassentauschlaufwerke deaktivieren

Die Klassentauschlaufwerke lassen sich in der service.conf ebenfalls deaktivieren:

1
2
3
4
5
ClassesSwapMode 01770
ClassesSwapOwner root
ClassesSwapGroup $class
ClassesSwapEnabled no
[...]

Tauschlaufwerke zyklisch löschen

Der eigentliche Grundgedanke eines Tauschlaufwerkes ist derjenige, dass Dokumente dort wirklich nur temporär eben für den Zweck des Austausches zwischengespeichert werden. Oftmals wird diese Funktion aber „missbraucht“ und das Tauschlaufwerk wird immer voller und mutiert zur zentralen Datenablage.

Ein weiteres Problem der Tauschlaufwerke besteht darin, dass die dort abgelegten Dateien die Quota des Benutzers, der sie ablegt, belasten. Ein Benutzer, der dort also viele Dateien ablegt und in seinem Homelaufwerk hingegen nur wenig speichert, kann trotzdem die Meldung erhalten, dass seine Quota erschöpft ist, was ihm in aller Regel vollkommen unerklärlich erscheinen wird. Es gibt derzeit noch keine Ansicht für den Endbenutzer, um festzustellen, wo überall Dateien liegen (außerhalb seines Homeverzeichnisses), die seiner Quota zugerechnet werden.

In der service.conf im Abschnitt Usermanagement können folgende Parameter gesetzt werden:

Parameter Wert Beschreibung
ArchiveSwapMaxAge 14d Entfernte Dateien zur Sicherheit für X Tage (hier 14) archivieren
GlobalSwapPrune 1h Dateien älter als 1 Stunde aus dem globalen Tausch entfernen, also praktisch alle Dateien.
TeachersSwapPrune x in d/h/w/y Dateien im Lehrertauschlaufwerk löschen. Ist der Wert nicht gesetzt bzw. leer oder hat einen Wert < 60 Sekunden, dann wird das Verzeichnis NICHT gesäubert.
ClassesSwapPrune 4d Klassentauschdateien älter als 4 Tage entfernen.
CoursesSwapPrune 7w Dateien älter als 7 Wochen in Kurstauschordnern löschen.
ProjectsSwapPrune 1y Dateien älter als 1 Jahr in Projekttauschordnern löschen.

Die Parameter sollten aus optischen Gründen und zur einfacheren Erkennung am besten unter dem jeweiligen Abschnitt gesetzt werden, innerhalb dessen auch die Rechte und Berechtigungen geregelt werden.

Hier ein Beispielauszug aus der service.conf, wobei die markierten Einträge per Standard NICHT enthalten sind:

ArchiveHome yes
ArchiveMails yes
ArchiveSwapMaxAge 30d
GlobalSwapMode 01777
GlobalSwapOwner root
GlobalSwapGroup root
GlobalSwapEnabled yes
GlobalSwapPermissions d:u::rwX d:g::rwX d:o::rwX d:g:lehrer:rwX
GlobalSwapPermissions u::rwX g::rwX o::rwX g:lehrer:rwX
GlobalSwapPrune 1h

Die Reinigung findet automatisch nachts über /usr/lib/logodidact/nightly/prune automatisch statt.

Man kann das ganze auch manuell anstoßen mit dem nachfolgenden Befehl:

logosrv
1
2
3
4
prune_swap -p

# Testdurchlauf mit Ausgabe (kein Löschen von Daten)
prune_swap -p -t

Anpassung der Dateigröße beim Austeilen

Wenn die Dateigröße beim Austeilen über die LogoDIDACT-Console angepasst werden muss, dann können Sie dies über die folgenden beiden Werte umsetzten.

service.conf
DistributeFilesSoftLimit 20MB
DistributeFilesHardLimit 50MB