SAMBA Einrichtung
UNIX und Windows:
Bevor wir mit der Konfiguration von SAMBA beginnen ein paar Anmerkungen zur Dateiverwaltung von UNIX und Windows.
Wenn sie bis jetzt ausschließlich mit DOS oder Windows gearbeitet haben, kennen sie nur Dateiatribute wie schreibgeschütz, versteckt und Archiv. Unter UNIX und NT gibt es zu jeder Datei auch einen Benutzer, bzw. Rechte für Benutzer oder Gruppen. Das bedeutet eine Datei gehört einem Benutzer “xy” der diese lesen, ändern (schreiben) oder starten (ausführen) kann. Ähnlich verhält es sich auch mit Verzeichnissen [1]. Weiterhin werden Benutzer (User) unter UNIX in Gruppen aufgeteilt, denen dann wiederum unterschiedliche Rechte auf Dateien und Verzeichnisse erteilt werden.
Natürlich unterscheidet sich die User- und Dateiverwaltung von Unixsystemen auch in der von NT-Systemen, worauf ich hier vorerst nicht weiter eingehe.
Wichtig ist hier zu wissen, daß wenn sie sich mit der Freigabe eines SAMBA-Servers verbinden. Selbst wenn ihnen SAMBA zugriff gewährt (richtiger User mit Paßwort) haben sie noch nicht das Recht eine Datei zu öffnen oder auszuführen. Sie müssen die Recht des Users auf dem Unixsystem haben, der das auch darf, bzw. der User sein.
Das wird einer der ersten Fehler sein, den sie mit SAMBA machen können, und um das Problem zu beseitigen, ihr SAMBA so konfigurieren, daß jeder User auf die Freigabe zugreifen kann. Das funktioniert zwar ausgezeichnet ist aber ein verheerender Sicherheitsfehler.
Der einzig Benutzer, der alle Rechte auf UNIX(Linux)-Systemen hat, ist “root”. Deshalb werden alle Konfigurationsarbeiten (und möglichst nur das) als root durchgeführt. Somit muß beim Login “root” und das Paßwort angegeben werden.
Konfiguration:
Zentraler Punkt bei der Konfiguration von SAMBA ist eine einzige Datei, die “smb.conf”. Diese ist wie bei UNIX’en üblich als ASCII-Datei [3] verfaßt und liegt üblicherweise im Verzeichnis “/etc”.
Diese Datei ist, ähnlich den Konfigurationsdateien von Windows 3.1, in mehre Sektionen aufgeteilt, wobei jede Einzelne (außer Global) eine Freigabe darstellt. Sonderstellung nehmen die Sektionen [global] , [homes] und [printers] ein, ,wobei erster unbedingt vorhanden sein muß, und die beiden anderen ausschließlich für den vorbestimmten Zweck verwendet werden dürfen. Also [global] bestimmt alle allgemeinen Parameter des Servers, [homes] ist für die Freigabe der Homeverzeichnisse der angemeldeten User und [printers] ist für die Konfiguration der freigegebenen Drucker bestimmt.
Am einfachsten läßt sich die Funktion der “smb.conf” an Hand eines Beispiels erklären. Die Datei kann mit “vi” (“vi /etc/smb.conf”), oder aber noch besser mit “mc” editiert werden. Zuvor muß ein Verzeichnis /public erstellet werden (“mkdir /public”)..
# diese Zeilen werden von Samba
; als Kommentare überlesen
[global]
workgroup = CPU
netbios name = FS01
server string = Samba Server2.0.7
encrypt passwords = yes
map to guest = bad user
guest account = gast
[homes]
comment = Home Verzeichnisse
read only = no
browseable = no
[printers]
comment = Alle Drucker
path = /var/spool/samba
print ok = yes
browseable = no
[tmp]
path = /tmp
read only = no
guest ok = nes
[public]
path = /public
read only = no
[cdrom]
comment = CD-ROM
path = /cdrom
guest ok = yes
workgroup -- bezeichnet die Windows Arbeitsgruppe oder Domäne
netbios name -- bezeichnet den netBIOS-Namen des Servers ohne Eintag wird der Name
des Servers unter UNIX verwendet
server srtring -- Kommentar zum Server (in Netzwerkumgebung zu sehen)
encrypt passwords -- verschlüsselte Paßwörter, wichtig für Win9x und NT ab Servicepack 3
guest account -- Gast-User-Konto [5], muß auf dem Server existieren
map to gast -- bestimmt, wann ein User Gastrecht erhält
comment -- Kommentar zur Freigabe
read only -- bestimmt ob auf Freigabe geschrieben werden darf
browsable -- bestimmt ob Freigabe in Netzwerkumgebung sichtbar ist
path -- Pfad zur Freigabe auf dem Server
print ok -- erzeugt Drucker
guest ok -- kann Gästen (unbekannter User) freigegeben werden
Wenn sie den Server unter seiner IP-Adresse (zB. 192.168.11.10) oder Namen (FS01) in der Netzwerkumgebung suchen, sehen sie die Freigaben “cdrom” und “public” wobei nur auf das CD-ROM zugegriffen werden kann. In dem Fall haben sie sich nicht beim Server authentifiziert und ihnen wir das Konto “Gast” zugewiesen..
Sicherheitsmodi
Um sich bei einem SMB-Server authentifizieren gibt es sowohl bei SAMBA als auch Windows prinzipiell zwei Möglichkeiten. Den Share-Modus und Usermodus. Wobei letztere unter SAMBA zusätzlich um Server- und Domain-Modus erweitert würde, um sich an anderen Servern oder Domänen zu authentifizieren. Was bedeutet, der SAMBA Server fragt bei einen anderen Server nach, User- und Paßwort-Daten.
Share.
security = share Sektion : global Standard: security = user
Ähnlich wie bei Windows9x wird für jede Freigabe ein Paßwort vergeben. SAMBA versucht, dann bei der Anmeldung des Clients, anhand des gesendeten Pawortes [6], den entsprechenden Unixuser zu erraten. Um de User zu finden, zu dem das gesendete Paßwort paßt, überprüft SAMBA folgende Dinge:
Wird ein Username beim Anmeldevorgang mitgeschickt? Der Name der Freigabe selbst wird als User zum Paßwort geprüft. Der Netbios-Name des Clients wird als Username überprüft. Zu letzt wir die UNIX-Userliste (alle Benutzer auf den UNIX-System) nach dem Paßwort durchsucht. Wird ein Benutzer zum Paßwort ermittelt, wird die Freigabe mit den Rechten dieses Users zu dem Client verbunden [7].
Um diesen zum Teil unsicheren Vorgang zu beschleunigen bzw. etwas sicherer zu machen, hier noch zwei weitere Befehle.
guest only = yes Sektion: Freigabe
“guest only =yes” gewährt jedem Zugriff auf die Freigabe, mit den Rechten des Users “gast”. Wenn wir kurz bedenken, was im Abschnitt “netbios” steht, kann unter Umständen jeder denkbare User der Welt auf ihre Date zugreifen!
users only = yes Sektion: Freigabe
Dabei wird die nur Userdatenbank des Unixsystems durchsucht, und die Freigabe mit den Userrechten verbunden, zu dem das übermittelte Paßwort paßt. Wird kein User gefunden, lehnt SAMBA den Verbindungsaufbau ab.
User:
security = share Sektion : global Standard: security = user
In unserm Beispiel (s.O.) läuft der Sambaserver im “Usermodus”. Da “security = user” der Satndardmodus ist, muß das nicht in der “smb.conf” eingetragen werden.
In diesem Modus muß sich der Client erst als ein gültiger User mit Paßwort beim Server anmelde, um auf die Freigaben zugreifen zu könne.
Bei der Authentifizierung wird nicht die Systemuserdatenbank (etc/passwd) befragt, den SAMBA besitzt eine Userdatei. In der “/etc/smbpasswd” stehen alle Sambauser und deren Paßwörter (verschusselt).
Um auf die Freigaben zugreifen zu können, benötigt man dennoch die Rechte eines existierenden Unixusers auf den Server. Um das zu realisieren, gibt es generell zwei Möglichkeiten.
Bei kleineren Netzwerken bietet es sich an, beide Userdatein sycron zu halte, das heißt zu jedem Windowsuser existiert auch ein User auf den Unixsystem. der Befehl “unix password sync = yes” erleichtert, bei den meisten Linuxdistributionen, diese Arbeit ungemein.
unix password sync = yes Sektion: global Standard: unix password sync = no
Wichtig: Dieser Parameter verhindert aber auch, daß ein User vom Client aus sein Paßwort ändern kann !
Dabei existiert ein Eintrag für den Unixuser in ”etc/passwd” und ein weiterer in “/etc/smbpasswd”, so daß sich ein authentifizierter SAMBA-(Windows)User am Server anmeldet, mit der Rechten, des gleichen Unixusers verbunden wird.
Wenn hehrere User auf den Server zugreifen, bedeutet das, daß eine große Menge User angelegt und verwaltet werden müssen.
Arbeiten z.B. in einem Unternehme 10 Sekretärinnen, 10 Kaufleute, und 5 Lagerarbeiter, kann man den Zugriff, da die Berufsgruppen untereinander die gleichen Rechte haben können, auf 3 Unixuser beschränken.
username map = datei Sektion :Global Beispiel : usermane map = /etc/users.map
“datei” ist hier ein Synonym für eine Asciidatei, die den oder die SAMBA-User auf eine Unixuser oder Unixgruppe abbildet. Der Inhalt der “users.map” könnte dann so aussehen:
kaufmann = verkauf1 verkauf2 hardwareverkauf softwareverauf
sekretaerin = chefsekretaerin empfang
lager = kleinteile laden hochlager
root = administrator admin supervisor
In diesen Beispiel werden Alle Kaufleute (verkauf1, verkauf2,..) mit den Rechten des Unixusers “kaufmann” verbunden. Die SAMBA-User müssen mit “”smbpasswd [9] angelegt werden
smbpasswd -a verkauf1 # danach zweimal das Paßwort angeben
Zusätzlich kann über die Authentifizierung die Freigebe geschützt werden
valid users = Unixuser Sektion : Freigabe/Global Beispiel: valid users = buchhaltung
Somit kann verhindert werden, daß z.B. ein Lagerarbeiter Einblick in betriebsinterne Daten bekommt.
Das sollte fürs erste ausreichen, um ein einfachen Server auf die Beine zu stellen. Näher Informationen zu Konfiguration stehen auf der änchsten Seite, wo die meisten Befehle der smb.conf in Deutsch kurz erläutert sind. An dieser Stelle möchte ich all jene, die sich näher mit SAMBA auseinander setzen wollen auf die Manpages [10] verweisen
Bei so viel Handarbeit schleichen sich leicht Fehler ein. Deshalb empfehle ich für den Anfang die “smb.conf” mit dem im Sambapaket enthaltenen Konfigurationstool SWAT .zu erstellen.
Zu Schluß, der ganzen Arbeit bleibt uns nur noch den SAMBA-Server zu starten.
/etc/rc.d/init.d/samba start # oder “smb start”
sollte bei dem meisten Linuxdistributionen zum Erfolg führen (geht aber auch mit SWAT, linuxconf usw...)
Abschließend erwartet sie noch die Einrichtung der Clients.
[1] Verzeichnisse können nicht gestartet werden, aber hier gibt es das Recht zum Erstellen von Unterverzeichnissen
[2] root -- Unter NOVELL - Supervisor (3.12) oder Admin, unter Windows NT - Administrator
[3] American Standart Code for Information Interchange; ASCII-Dateien lassen sich mit jedem gängigen Editor öffnen, ändern oder schreiben (wenn man die Rechte dafür hat :-)
[4] wenn SAMBA aus einem Quellpaket kompiliert wurde liegt die “smb.conf” evtl. unter “/usr/local/samba/lib”
[5] Um ein Gastkonto zuzuweisen, muß dieses evtl. erst auf dem Server erstellt werden mit “useradd gast”
[6] selbst wenn im share-modus nur ein Paßwort nötig ist senden die Winows-Clients immer auch den Usernamen
[7] Wen der User, auf den das Paßwort paßt, in der Freigabe keine Schreibberechtigung hat, wird SAMBA diese auch nicht gewähren! Sie können die Freigabe dann nicht beschreiben
[8] Das Anlegen von Usern kann unter Umständen mit “add user script” automatisiert werden
[9] das Paßwortprogramm zu SAMBA “smbpasswd” (/usr/bin)), ist nicht mit der Userdatenbank (etc/passwd) zu verwechseln