Netzlaufwerke wie unter Novell 4.x
Der Hauptunterschied zwischen der Handhabung der Netzwerkshares im Novell- bzw.
Windowsnetzwerk, auf den ich mit diesem Tip eingehen möchte, ist die Sichtbarkeit von
Netzwerkshares.
Unter Novell bekommt ein User nur die Laufwerke bzw. Verzeichnisse zu sehen, für die
er mindestens Leserechte hat.
Windows ist da etwas großzügiger. Es zeigt alle Verzeichnisse an, auch die zu denen
der Benutzer keine Leseberechtigung hat. Wenn dieser Benutzer auf ein solches
Verzeichnis klickt bekommt er die unschöne Fehlermeldung, dass er keine oder
ungenügende Zugriffsrechte für dieses Verzeichnis/Laufwerk hat.
Auf diese Art und Weise bekommen andere Benutzer immer mit was für Laufwerke bzw.
Verzeichnisse die anderen Benutzergruppen haben bzw. wie diese strukturiert sind.
Darüberhinaus verwirren viele User die unter Umständen sehr vielzahligen
Verzeichnisse in gemeinsam genutzten Shares.
Schon längere Zeit hatte ich ein Skript, welches dies beseitigen sollte daliegen.
Ich weiß nicht mehr genau woher es war, aber es funktionierte nicht. Vor kurzem
fand ich bei einer Internetrecherche unter
www.meyer-edv.de
eine schöne Erklärung und auch ein fast vollständig funktionierendes Skript.
Hier beweist sich wieder einmal die Flexibilität des Konzeptes des Sambaservers.
Mit Hilfe der root preexec-Variablen in der
smb.conf-Konfigurationsdatei (im Abschnitt des
zu beeinflussenden Shares) können Aktionen
festgelegt werden, die mit root-Rechten vor dem Verbinden mit dem Share ausgeführt
werden.
Die benannte Option in Zusammenarbeit mit dem weiter unten beschriebenen Skript
mk_dir-links führen die
folgenden Aktionen vor dem Verbinden eines Users mit
dem jeweiligen Netzwerkshare durch:
- einlesen der definierten Variablen
- wechseln in das "$LINK_DIR"-Verzeichnis (hier sollen die symbolischen Links angelegt werden)
- löschen des kompletten alten Verzeichnisses (gleichlautend mit dem jeweiligen Anmeldename)
- Erzeugen eines neuen Verzeichnisses mit dem Anmeldename als Verzeichnisname
- Anpassen des Eigentümers und der Gruppenzugehörigkeit des Verzeichnisses an die
des Users (sonst ist aufgrund der vorher gesetzten umask 022 kein Hineinwechseln in
dieses möglich)
- wechseln in das Verzeichnis "$USER_N"
- erstellen einer Liste mit den Gruppenzugehörigkeiten des jeweiligen Benutzers
- Verwenden dieser Liste in einer "for"-Schleife (jedes einzelne Element der vorher
erzeugten Liste wird in die Variable "gr" gesetzt, und dann die Schleife einmal
durchlaufen, Wiederholung bis alle Elemente der Liste "abgearbeitet" wurden)
Innerhalb dieser "for"-Schleife bei jedem Schleifendurchlauf einmal:
- im "$ROOT_DIR_1" (max. Tiefe 1 Ebene) suchen aller Verzeichnisse mit der
Gruppenzugehörigkeit "$gr", erzeugen einer entsprechenden Liste "filelist"
Für jedes Element der "$filelist" in einer
"for"-Schleife je einmal:
- wenn das Verzeichnis "$file" nicht dem
"$ROOT_DIR_1" entspricht: Erzeugen eines symbolischen Links
Damit Samba das obige Skript bei jedem Verbindungsaufbau zu dem bestimmten Share
ausführt muss in der Konfigurationsdatei smb.conf im
Abschnitt des Shares folgende Eintragung gemacht werden:
root preexec = /usr/local/bin/mk_dir-links %U
Der Eintrag des Pfades zum Verzeichnis für dieses Share (bei mir [all_home]) muss
wie folgt lauten:
path = /win_home/dir-links/%U
Dadurch wird jeder User zu seinem eigenen Dir-Links-Verzeichnis verbunden.
Zur Realisierung dieser Funktion habe ich folgende Verzeichnisstruktur angelegt:
/win_home
|
+--- daten
| |
| +--- all (Datenaustausch Share für alle)
| |
| +--- user1 (Win-Home-Share user1)
| |
| +--- user2
| ...
|
+--- dir-links
|
+--- user1
| |
| +--- Link-Dir1 (dynamisch erzeugt)
| |
| +--- Link-Dir2 (dynamisch erzeugt)
| ...
|
+--- user2
| |
| +--- Link-Dir1 (dynamisch erzeugt)
| |
| +--- Link-Dir2 (dynamisch erzeugt)
| ...
Bei mir zeigte sich gleich zu Anfang das Problem, dass ich nicht auf das Share
zugreifen konnte. Es wurde der Anmeldename und das Passwort abgefragt, deren Eingabe
aber auch nicht zum Erfolg führten. Einzigster Fehler war das Nichtvorhandensein des
Userspezifischen Verzeichnisses unterhalb von "dir-links". Wenn dieses fehlt, hat
Samba keinen Bezugspunkt für das Verbinden. Also zuerst immer die Userspezifischen
Verzeichnisse anlegen.
|