Anstatt die mit einem Automatismus versehene Option username level zu verwenden, ist es in vielen Fällen sinnvoller, eine einfache Abbildung einer Menge von Namen unterschiedlicher Schreibweise auf einen Namen vorzunehmen. Speziell DOS- und Windows-Clients sind nicht besonders präzise bei der Schreibweise der eigenen User-Namen, und da kann es schon zu erfolglosen Einwählversuchen eines Clients kommen, obwohl ein Account für diesen auf der Server-Seite vorliegt. Wenn sich nur wenige DOS-Clients im Netz befinden, kann die Substitution dieser Alias-Namen dem Parameter selbst mitgegeben werden (siehe Beispiel 1.14). So werden im Beispiel 1.14 die Namen admin und administrator beide auf den User root abgebildet:
root = admin administrator
Sind jedoch viele solcher Clients zu einer Workgroup zusammengeschlossen, ist es sinnvoller, die Abbildungen der einzelnen User-Namen in einer editierbaren Datei vorzunehmen (siehe Beispiel 1.15).
username map = /etc/users.map
Syntax der Map-Datei
Die Map-Datei wird Zeile für Zeile gelesen, wobei jede Zeile auf der linken Seite einen gültigen User-Namen enthalten muss. Danach folgt ein =-Zeichen, gefolgt von einer Menge von paarweise verschiedenen User-Namen. Wie bereits mehrfach erläutert, weist das Meta-Zeichen @ die Interpretation des Parameters an, den folgenden Namen als Gruppennamen zu interpretieren (siehe Seite ). Wird ein solches Zeichen erkannt, so werden alle User-Namen der User, die zu dieser Gruppe gehören, auf den links stehenden Namen abgebildet. Wildcards sind erlaubt, so wird mit dem User-Namen * immer Übereinstimmung festgestellt. Mit derartigen User-Namen sollte aus Gründen der Systemsicherheit vorsichtig umgegangen werden. Das Zeichen ! (das nur am Beginn der rechten Seite stehen darf) weist den Daemon nmbd an, die Auswertung abzubrechen, sobald die erste Übereinstimmung gefunden wurde.
Das folgende Beispiel (Beispiel 1.16) bildet die User-Namen franca und olaf auf den Unix-User-Namen sys ab. Die zweite Zeile (wenn es sich um eine map-Datei handelt, ansonsten muss der Ausdruck in eine Zeile geschrieben werden, siehe Beispiel 1.17) bildet alle anderen User-Namen auf den Namen guest ab. Diese Funktionalität kann nur deshalb erreicht werden, weil in der ersten Zeile vor dem Ziel-Namen ein !-Zeichen steht. Die Auswertung der Namensabbildung bricht ab, wenn einer der beiden Namen (franca oder olaf) als Login-Name erkannt wird.
sys = franca olaf
guest = *
sys = franca olaf guest = *
Die maximale Länge der Anweisung pro Zeile beträgt 1023 Zeichen. Sie wird von links nach rechts ausgewertet, indem sie den übergebenen Namen mit der Liste der Namen, die rechts vom =-Zeichen stehen, vergleicht.
Wird eine Übereinstimmung festgestellt, so wird der Name auf der rechten Seite der Gleichung durch den Namen auf der linken Seite ersetzt. Klingt kompliziert, ist es aber nicht, wie man an Beispiel 1.17 erkennen kann.
Die map-Datei darf auch Kommentare enthalten. Eine Kommentarzeile wird durch ein #- oder ;-Zeichen eingeleitet. Der folgende Text gilt dann bis zum Ende der Zeile als Kommentar, kann also 1022 Zeichen lang sein.
sys = @system
Der Einsatz einer map-Datei ist dem der Angabe von Usern hinter dem Parameter vorzuziehen, da die map-Datei leichter erweitert werden kann (die beiden Daemons smbd und nmbd brauchen nicht angehalten zu werden).
Man kann außerdem auch User-Namen mit Leerzeichen in ein mapping mit einbeziehen, man muss dann nur den entsprechenden User-Namen, der Leerzeichen enthält, wie bei Dateinamen gewohnt, die Leerzeichen enthalten, durch Anführungszeichen einschließen (siehe Beispiel 1.19).
Falls der eigene Server die NIS NETGROUP-Option unterstützt, so werden die Mitglieder von Gruppen (@-Zeichen) zuerst in der netgroup-Datenbasis gesucht, bevor die /etc/group-Datenbasis analysiert wird.
tridge = Andrew Tridgell
Diese mapping-Möglichkeit ist, mathematisch ausgedrückt, injektiv, das bedeutet, eine Rückabbildung ist nicht möglich. Wenn beispielsweise ein Client auf der Server-Maschine \\ delcarlo\ olaf eingewählt ist und der Name olaf in der map-Datei auf franca abgebildet wird, so muss sich der Client olaf mit dem Password des Clients franca authentifizieren, anderenfalls erhält er keinen Zugang zu den angeforderten shares. Das kann ziemlich verwirrende Zustände schaffen. Wenn sich freilich ein Password-Server im Netz befindet, also ein Server, der die User-Name/Password-Auflösung netzweit übernimmt, dann wird der User-Name immer als ungemapped dem Password-Server übergeben, und dann muss sich Client olaf auch mit seinem eigenen Password authentifizieren.
Ein weiteres, allerdings weniger wichtiges Detail gilt es anzufügen: Wie schon bemerkt, ist die Abbildung injektiv, eine Rückabbildung ist daher nicht möglich. Wenn ein Windows for Workgroups-Client einen Druck-Job in Auftrag gegeben hat, so kann es sein, dass dieser Auftrag zwar angenommen und auch abgewickelt wird, wenn der Client diesen Job jedoch löschen will, dann wird er nicht als Besitzer dieses Jobs betrachtet und erhält daher auch nicht die Berechtigung, den Job zu löschen. Problematisch wird das aber erst, wenn mehr als 100 Seiten gedruckt werden. Das gilt aber nur für Windows for Workgroups-Clients, dürfte also in der Zukunft immer weniger ein Problem darstellen, da diese Art Clients am Aussterben begriffen ist.
Die Mapping-Eigenschaft dient aber nicht nur dazu, der Unix-Server-Maschine die etwas antiquierte Schreibweise von DOS-Clients transparent zu machen, sie kann auch dazu verwendet werden, mehrere User auf einen Namen abzubilden, so dass diese die Dienste des Servers effizient nutzen können.
Voreinstellung:
Keine Angabe