|
Samba bietet die Möglichkeit, unter
Linux Dateien und Drucker für Windows-Computer freizugeben. So kann beispielsweise
ein älterer Rechner in einem Windows-Netzwerk als Datei- und Druckserver dienen. Zusätzlich bietet Samba die Möglichkeit,
von Linux aus auf von Windows-Computern freigegebene Dateien zuzugreifen.
Allgemeines
Samba ist in allen gängigen Linux-Distributionen enthalten und kann gegebenenfalls
über die Installationsroutine der jeweiligen Distribution nachinstalliert
werden. Jeweils aktuelle RPM-Pakete für diverse SuSE Versionen sowie Red
Hat Enterprise Linux können über den FTP-Server
von SerNet heruntergeladen werden. Auf
dieser Seite findet sich auch ein Tutorial
zur Installation dieser Pakete.
Ist Samba eingerichtet, sollte doch sichergestellt werden, dass es beim Systemstart
automatisch geladen wird. Unter SuSE-Linux lässt sich dies beispielsweise
über den in YaST2 integrierten Runlevel-Editor bewerkstelligen, indem die
Dienste smb und nmb aktiviert werden:

Konfiguration über die Datei smb.conf
Samba wird über die Datei smb.conf konfiguriert. Diese findet
sich im Verzeichnis /etc oder /etc/samba. Sie lässt
sich unter dem Benutzer root mit einem beliebigen Texteditor bearbeiten.
Die Datei ist nach dem Format Option = Wert aufgebaut, wobei in jeder
Zeile eine Option steht. Zeilen, die mit den Zeichen # oder ; beginnen werden
als Kommentare behandelt. Um eine besonders lange Zeile auf zwei Zeilen aufzuteilen,
kann am Ende einer Zeile das Zeichen \ eingefügt werden, um diese mit der
darauffolgenden Zeile zu verbinden.
Die Datei ist in sogenannte Sektionen unterteilt, wobei eine Sektion jeweils
durch einen in eckige Klammern eingefassten Sektionsnamen (z.B. [global])definiert
wird. Die Sektionen global, printers sowie homes sind reserviert und haben eine
eigene Funktion.
Hier der Inhalt unserer Beispieldatei:
[global]
#Allgemeine Einstellungen
socket options = SO_KEEPALIVE TCP_NODELAY IPTOS_LOWDELAY
unix extensions = Yes
#Einstellungen zum Drucksystem
printing = CUPS
printcap name = CUPS
#Einstellungen für den Server
netbios name = linux
server string = Linux-Server
workgroup = tanmar
encrypt passwords = yes
#Vorgaben für Freigaben
writeable = yes
create mode = 664
directory mode = 775
[printers]
create mask = 0600
browseable = yes
comment = All Printers
printable = yes
public = yes
guest ok = yes
path = /var/tmp
use client driver = yes
[data]
comment = Allgemeine Daten
path = /data/data
[dmarco]
comment = Marco's Daten
valid users = marco
path = /data/dmarco
create mode = 700
directory mode = 700
[mail_tanmar]
comment = TanMar Mails
valid users = marco,@tanmar
path = /data/mail-tanmar
|
Allgemeine Einstellungen im Abschnitt [globals]
Der Abschnitt [globals] enthält allgemeine Einstellungen und Vorgaben
für die Freigaben. Die Optionen socket options, unix
extensions, printing und printcap name
sind in der Regel durch die Distribution schon mir sinnvollen Werten belegt,
so dass hier in der Regel keine Änderungen notwendig sind.
Einstellungen für den Server
Folgende Parameter beeinflussen, wie sich der Samba-Server im Windows Netzwerk
verhält:
| netbios name |
Dieser Parameter bietet die Möglichkeit, den Namen zu setzen, über
den der Samba-Server im Netzwerk angesprochen wird. Wird er nicht angegeben,
so verwendet Samba den Hostnamen, der im System gesetzt ist. |
server string
|
Über diesen Parameter wird die Beschreibung gesetzt, die für
den Computer in der Netzwerkumgebung als Kommentar angezeigt wird. |
| workgroup |
Über workgroup wird festgelegt, in welche Arbeitsgruppe sich Samba
eingliedern soll. |
| encrypt passwords |
Windows 9x überträgt Kennwörter für Freigaben unverschlüsselt.
Windows NT/2000/XP verschlüsseln diese aber. Wenn das Netzwerk also
nicht ausschließlich aus Computern mit Windows 9x besteht, ist es
erforderlich, die Verschlüsselung der Kennwörter zu aktivieren.
Andernfalls ist kein Zugriff auf die Freigaben von Samba möglich. |
Vorgaben für Freigaben
Neben den allgemeinen Einstellungen können über den Abschnitt [globals]
auch Vorgaben für die angelegten Freigaben definiert werden. Einstellungen
für Freigaben, die hier mit aufgenommen werden, gelten automatisch für
alle Freigaben, so lange bei einer Freigabe nicht die selbe Option separat angegeben
wird, um die Standardeinstellung zu überschreiben. In unserer Beispielkonfiguration
werden also die Optionen writeable, create mode
und directory mode als Standard für alle Freigaben gesetzt
und somit automatisch übernommen. Zur Bedeutung der Parameter gleich mehr.
Berechtigungen
Bevor die Definition von Freigaben beschrieben wird einige
Anmerkungen zu den Zugriffsrechten. Es ist wichtig zu wissen, dass die
Berechtigungen für den Zugriff auf eine Freigabe zweischichtig sind:
- Zum Einen kann über die Konfiguration von Samba festgelegt
werden, wer sich mit der Freigabe verbinden darf und ob auf der Freigabe geschrieben
werden darf.
- Andererseits darf man nicht vergessen, dass Linux selbst
Freigaberechte auf Dateien und Verzeichnisse verwaltet. Ein Benutzer, der
auf der Konsole nicht in ein freigegebenes Verzeichnis schreiben darf, der
darf es auch über die Freigabe nicht.
Es empfiehlt sich also vorher zu überlegen wer wo schreiben können
soll und den freigegebenen Verzeichnissen unter Linux entsprechende Berechtigungen
zu geben. SelfLinux bietet eine gute Einführung in Verwaltung
von Berechtigungen unter Linux.
Die einfachste und zugleich unsicherste Lösung ist natürlich die betroffenen
Verzeichnisse mit chmod 777 verzeichnis für alle Benutzer
freizugeben.
Dateifreigaben
Freigaben werden jeweils in einem eigenen Abschnitt definiert, wobei der Name
des Abschnitts den Namen der Freigabe festlegt. [data] definiert also eine Freigabe
namens data. Es folgen eine Reihe von Optionen, die festlegen, was freigegeben
werden soll und wer auf die Freigabe zugreifen darf.
| path |
Eine Freigabe gibt wie unter Windows ein Verzeichnis auf der Festplatte
zum Zugriff über das Netzwerk frei. Über den Parameter path
wird festgelegt, auf welches Verzeichnis sich die Freigabe bezieht. |
comment
|
comment definiert eine Beschreibung der Freigabe, die in der Netzwerkumgebung
von Windows angezeigt wird. |
| writeable |
Legt fest, ob auf die Freigabe geschrieben werden darf. Auf diese Art
lassen sich Freigaben erzeugen, von denen grundsätzlich nur gelesen
werden darf. |
| valid users |
Über valid Users lässt sich steuern, wer die Freigabe
verbinden darf. Benutzer werden durch Kommata getrennt angegeben. Über
das Zeichen @ können auch Benutzergruppen in die Definition mit aufgenommen
werden. marco,@tanmar würde bedeuten, dass der Benutzer marco sowie
die Mitglieder der Gruppe tanmar auf die Freigabe zugreifen dürfen. |
| invalid users |
Durch invalid Users lassen sich Benutzer gezielt vom Zugriff auf eine
Freigabe ausschließen. |
| create mode |
Wie bereits erwähnt hängen die Zugriffsrechte auf freigegebene
Dateien nicht nur von der Definition der gültigen Benutzer ab sondern
auch von den Dateirechten. Ein Benutzer kann durchaus das Recht haben,
auf eine Freigabe zuzugreifen aber nicht das Recht, eine Datei auf der
Freigabe zu lesen bzw. zu schreiben.
Über den Parameter create mode wird festgelegt, mit welchen Zugriffsrechten
Samba eine Datei anlegt, die über die Freigabe geschrieben wird.
Die Standardvorgabe ist 744. Das bedeutet, dass der Besitzer alles
darf während die Mitglieder der Gruppe und alle anderen nur lesen
dürfen. Wenn also mehrere Benutzer auf eine Freigabe zugreifen und
auch Dateien verändern dürfen sollen, die von anderen Benutzern
angelegt wurden, so sollte der create mode zumindest auf 764 geändert
werden, wenn sich alle Benutzer in einer Gruppe befinden. Andernfalls
sollte 766 gewählt werden. |
| directory mode |
Analog zu create mode wird über directory mode festgelegt, mit
welchen Rechten Verzeichnisse durch Samba angelegt werden. Es gelten die
selben Überlegungen, wobei es zu beachten gilt, dass bei Verzeichnissen
das Execute-Bit gesetzt sein muss, damit darauf zugegriffen werden kann.
Für den Vollzugriff durch die Gruppe wäre hier also 775 und
für den Vollzugriff durch alle Benutzer 777 notwendig. |
Druckerfreigaben
Über den Abschnitt [printers] werden die auf dem Linux-Computer eingerichteten
Drucker im Netzwerk für Windows-Computer freigegeben. Die Standardeinstellungen,
die durch die Distribution vorgegeben sind, reichen hier in der Regel aus.
Benutzerverwaltung
Samba führt seine eigene Passwortdatenbank. In ihr sollte jeder Benutzer
aufgeführt sein, der von einem Windows-Computer aus auf Freigaben von Samba
zugreifen soll.
Voraussetzung dafür ist allerdings, dass die Benutzer bereits unter
Linux definiert sind. Um einen Benutzer neu anzulegen muss also beispielsweise
unter SuSE Linux zuerst über den Befehl useradd oder das
Konfigurationsprogramm der jeweiligen Distribution (z.B. YaST2 bei SuSE) ein
Linux-Benutzer angelegt werden.
Für einem bestehenden Linux-Benutzer wird mit dem Befehl smbpasswd
-a Benutzername ein Eintrag in der Benutzerdatenbank von Samba angelegt.
Das hier angegebene Kennwort muß mit dem Windows-Kennwort des jeweiligen
Benutzers übereinstimmen. Das Passwort lässt sich jederzeit mit smbpasswd
Benutzername wieder ändern.
Ein erster Test
Die bearbeitete Konfigurationsdatei smb.conf lässt sich mit dem Befehl
testparm auf Fehler überprüfen. Erbringt diese Überprüfung
keine Beanstandungen, so muss Samba gestartet bzw. neu geladen werden, damit
die Konfiguration aktiv wird. Nachdem Samba wie eingangs erwähnt aus zwei
Diensten (nmb und smb) besteht, müssen beide geladen bzw. neu gestartet
werden.
Auf der Konsole lässt sich dies über die Befehle /etc/init.d/smb
start bzw. /etc/init.d/smb restart und /etc/init.d/nmb
start bzw /etc/init.d/nmb restart bewerkstelligen.
Alternativ kann natürlich auch hier das Konfigurationsprogramm der Distribution
(wie z.B. der Runlevel-Editor von YaST2) verwendet werden.
Auf Dateifreigaben zugreifen
Ist Samba erfolgreich gestartet, so sollte der Linux-Computer jetzt in der
Netzwerkumgebung sichtbar sein:

Es kann allerdings auch einige Zeit in Anspruch nehmen, bis der Computer über
die Netzwerkumgebung sichtbar wird. Um sicher zu gehen, dass die Samba-Konfiguration
funktioniert, ist deshalb die Funktion "Computer suchen" der Netzwerkumgebung
oftmals nützlich. Wird der Linux-Computer so nicht gefunden, ist entweder
auf dem Linux-Computer eine Firewall aktiv, die die Verbindung unterdrückt,
oder die Netzwerkverbindung funktioniert nicht korrekt.
Wird der Linux-Computer im Netzwerk gefunden, so sollten sich auch die Freigaben
verbinden lassen. Dies kann entweder über den Windows-Explorer erfolgen
oder auf der Eingabeaufforderung mit dem Befehl net use x: \\computername\freigabename.

Auf freigegebene Drucker zugreifen
Oft ist es sinnvoll den Treiber für den Drucker vorab unter Windows zu
installieren. Dies ist besonders dann der Fall, wenn der Treiber über ein
eigenes Installationsprogramm erfügt. Dann ist es nämlich oft nicht
möglich, die Verbindung zum Netzwerkdrucker direkt bei der Installation
herzustellen.
Der einzige Ausweg ist dann bei der Installation des Treibers vorzugeben, er
sei lokal an LPT1 angeschlossen. Dieser Drucker kann dann sofort nach der Installation
wieder gelöscht werden. Der Druckertreiber verbleibt dabei im System.
Anschließend kann über Start -> Einstellungen -> Drucker
-> Neuer Drucker der Netzwerkdrucker eingerichtet werden:

Die Adresse des Druckers hat dabei die Form \\Computername\Drucker.
Der Drucker raw ist hier in der Regel die beste Wahl, da dieser die Druckdaten,
die er bekommt einfach an den Drucker weiterreicht.

Im nächsten Schritt will Windows wissen, welchen
Treiber es für den Drucker verwenden soll. Hier kann man nun aus der Liste
den Treiber auswählen, den man zuvor installiert hat.
|