Samba
Konfiguration eines Samba-Fileservers auf Freigabe- und Benutzerebene mit einer Suse 8.0 Distribution zum Zugriff

Inhalt

1. Einleitung
2. Installation /Starten der Dienste
    2.1. Installation
    2.2. Starten der Dienste
3. Samba als Fileserver (Shares)
    3.1. Shares auf Freigabeebene
    3.2. Shares auf Benutzerebene
4. Weitere Informationsquellen


Einleitung

Samba ist eine Implementierung des Server Message Block (SMB) Protokolls von Micrososft unter Linux. SMB wird unter Windows genutzt, um den gemeinsamen Zugriff auf Laufwerke und Drucker zu gestatten (sogenannte Freigaben oder Shares).

Mit der Sammlung der Samba-Tools besteht die Möglichkeit, dass sich Unix Rechner (also auch Linuxrechner) Freigaben und Drucker mit Windowsrechnern teilen.

Weiterhin ist es möglich, einen kompletten Windows NT/2000 – Primary Domain Controller mit Samba aufzubauen. Dies wird allerdings hier nicht näher beschrieben.

Diese Dokumentation beinhaltet eine Anleitung zum Konfigurieren von Freigaben für alle Benutzer (auf Freigabeebene) und nur einige Benutzer (auf Benutzerebene).

Beschrieben wird die Installation auf einer SuSE 8.0 Distribution. Allerdings lassen sich die Einstellungen meist direkt auf alle gängigen Distributionen übertragen.
 


2. Installation /Starten der Dienste

2.1. Installation

Voraussetzung für diese Anleitung ist eine lauffähige SuSE 8.0 (oder höher) Distribution, mit konfiguriertem Netzwerk. Die Konfiguration muss unter dem Benutzer root erfolgen.

Als erstes muss, wenn nicht schon vorhanden, das Paket „samba“ mit yast nachinstalliert werden.
Das „samba-client“ Paket ist meist schon vorinstalliert, dient aber nur dazu, auf bestehende Windows-Freigaben zuzugreifen, ist also nicht der Dienst um Freigaben zu ermöglichen.

folgende Dateien sind für die Konfiguration relevant:

/etc/samba/smb.conf
/etc/samba/smbpasswd
/etc/samba/smbusers

Logfiles, falls man die Systemmeldungen benötigt liegen standardmäßig in:

/var/log/samba/log.smbd

2.2. Starten der Dienste

Zuerst sollte man nachsehen, ob die Dienste smbd und nmbd schon gestartet sind, meist ist dies jedoch nicht der Fall. Dies kann man mit ps –ax|grep smbd nachschauen.

Falls die Dienste bereits laufen (ps –ax|grep smbd liefert eine Prozessnummer für smbd), kann mit der Konfiguration begonnen werden.
Ansonsten müssen die Dienste gestartet werden:

Dazu müssen in die Konfigurationsdatei /etc/inetd.conf folgende Zeilen eingetragen werden (wenn nicht schon vorhanden):

# SAMBA NetBIOS services (for PC file and print sharing) 
netbios-ssn stream tcp nowait root /usr/sbin/smbd smbd
netbios-ns dgram udp wait root /usr/sbin/nmbd nmbd

Anschließend muss der inetd – Dienst neu gestartet werden (als root):

root@localhost $> ps –ax|grep inetd 

liefert die Prozessnummer
 

root@localhost $> kill Prozessnummer
beendet den Prozess
root@localhost $> inetd
startet den Prozess erneut

3. Samba als Fileserver (Shares)

die Konfigurationsdatei /etc/samba/smb.conf öffnen (z.B. mit vi)

Diese Datei ist in verschiedene Abschnitte gegliedert. Jeder beginnt mit einem Titel in eckigen Klammern. Vorgegebene Abschnitte sind unter anderem:

[global] hier werden globale Einstellungen gemacht, die für die gesamte Konfiguration gelten
[homes] sind Freigaben für lokale Benutzer
[printers] Druckerfreigaben

Je nach Distribution stehen schon Beispieleinträge in der Datei, allerdings sind diese teils auskommentiert (mit „#“ oder „;“).


3.1. Shares auf Freigabeebene

Freigabeebene bedeutet, dass die Shares für die Benutzer OHNE Passwortabfrage freigegeben werden.

Beispielkonfiguration hier

Hinweis: In unseren Beispielen wurden alle vorgegebenen Einstellungen (außer denen im Abschnitt [global]) auskommentiert.

Abschnitt [global]
[global]
netbios name = LINUX
server string = LinuxSambaServer Version %v
workgroup = ARBEITSGRUPPE
os level = 2
security = share
encrypt passwords = Yes
guest account = Nobody
map to guest = Bad User
# This tells samba to write log files per machine.
log file = /var/log/samba/log.test

workgroup: hier wird der Name der Arbeitsgruppe festgelegt, unter der der Samba-Server später erscheinen soll.

netbios name: hier wird festgelegt, unter welchem Namen der Rechner aufgerufen werden kann, alternativ zur IP. (unter windows z.B. \\linux oder \\ipnummer)

server string: gibt an, was in der Titelleiste erscheinen soll

security: gibt an, ob der Rechner einen Share auf Freigabeebene (security = share) oder Benutzerebene (siehe oben) verwalten soll.

guest account: welcher Benutzername unter Linux verwendet werden soll, wenn ein Gastbenutzer das Share benutzt (normalerweise nobody)

log file: gibt den Pfad zum Logfile an, in das die Systemmeldungen von Samba aufgelistet werden. (in unserem Beispiel die /var/log/samba/log.test). Diese Datei wird automatisch angelegt.

os level: Gibt an welche "Wichtigkeit" der Server im Netz hat. Der Computer mit der höchsten "Wichtigkeit" steht in der Netzwerkhierarchie an erster Stelle. (os level = 64)

Abschnitte für Freigaben

[testfreigabe]
   path = /home/testfreigabe
comment = Verzeichnis zum lesen
read only = yes
guest ok = yes
hosts allow = 192.168.
browseable = yes
available = yes

path: Pfad unter dem das Freigabeverzeichnis liegt. Das Verzeichnis muss auf dem Linuxrechner existieren.

comment: Kommentar für den Benutzer (wird unter Windows bei Details angezeigt)

read only: setzt Nur-Lese (= yes) oder Lese-Schreib-Recht (= no).

Achtung: Dem Verzeichnis müssen die Rechte trotzdem noch gegeben werden (mit chmod)!

guest ok: legt fest, ob auch fremde Benutzer (nobody) Zugriff haben. (Sollte auf „guest ok = yes“ stehen, wenn das Share auf Freigabeebene verwaltet wird).

hosts allow: nur Rechner mit dieser IP haben Zugriff auf das Share.
Achtung: Sollte hier kein Eintrag gemacht werden, hat kein Rechner Zugriff!

browseable: gibt an, ob das Share sichtbar ist (=yes) oder nicht.

available: gibt an ob der Share verfügbar ist (=yes) oder nicht.

Mit unserer Beispielkonfiguration sehen die Shares folgendermaßen aus (unter Windows):

Zu sehen sind hier testfreigabe und testfreigabe2. Da in [testfreigabe3] browseable auf no gesetzt wurde, ist es hier nicht sichtbar, aber trotzdem vorhanden.

Der Zugriff würde dann folgendermaßen aussehen (nur direkt über Eingabe von \\192.168.0.1\testfreigabe3):


3.2. Shares auf Benutzerebene

Shares auf Benutzerebene sind im wesentlichen gleich wie Shares auf Freigabeebene, mit dem Unterschied, das man ein Benutzername/Passwort benötigt um auf ein Share zuzugreifen. Man kann also festlegen, welche Benutzer auf welche Shares Zugriff haben.

Beispielkonfiguration hier

Abschnitt [global]
[global]
netbios name = LINUX
server string = LinuxSambaServer Version %v 
workgroup = ARBEITSGRUPPE
os level = 2

security = user 
encrypt passwords = Yes
guest account = Nobody
map to guest = Bad User

Dieser Abschnitt entspricht bis auf die Änderung des Eintrags „security = user“ dem der Konfiguration auf Freigabeebene.
Allerdings muss man bei den Freigabeeinträgen gewisse Änderungen vornehmen:

Abschnitte für Freigaben
[testfreigabe]
path = /home/testfreigabe
comment = Verzeichnis zum lesen
read only = yes 
guest ok = no
hosts allow = 192.168.
browseable = yes
available = yes
valid users = smbuser
invalid users = bla

Hier ändern sich folgende Einträge im Vergleich zur Freigabeebene:

guest ok = no keine Gastzugriffe mehr zulassen

valid users mit Komma getrennte Benutzernamen, denen der Zugriff erlaubt ist.

invalid users mit Komma getrennte Benutzernamen, denen der Zugriff nicht erlaubt ist.

Die bei „valid users“ und „invalid users“ angegebenen Benutzer müssen zunächst dem Linuxsystem bekannt gemacht werden.

root@localhost $>useradd smbuser
root@localhost $>useradd bla

Ausserdem müssen sie auch dem Samba Server bekannt gemacht werden. (Dieser hat eine eigene Benutzerverwaltung in der /etc/samba/smbpasswd).

root@localhost $>smbadduser –a smbuser
root@localhost $>smbadduser –e smbuser

Damit werden die Benutzer für Samba angelegt (Option –a) und aktiviert (Option –e). Weitere Optionen, z.B. zum Ändern der Passwörter kann man mit dem Kommando

root@localhost $>smbadduser –h

nachlesen. Parallel dazu ist es weiterhin möglich Shares für alle Benutzer freizugeben:

[testfreigabe2]
path = /home/testfreigabe2
read only = no
guest ok = yes
hosts allow = 192.168.
browseable = yes
available = yes

Hier werden die Einträge „valid/invalid users“ weggelassen und guest ok wieder auf yes gesetzt.
Wenn man auf das mit Passwort geschützte share zugreift, erscheint mit unserer Konfiguration ein Abfragefenster, das zur Eingabe von Benutzernamen und Passwort auffordert.


4. Weitere Informationsquellen

http://www.samba.org
http://www.linuxnetmag.com/de/issue6/m6samba1.html
http://www.linux-praxis.de/linux3/samba1.html
http://www.linuxhilfen.org/netz/sambaserver.html#0
http://www.tldp.org/HOWTO/SMB-HOWTO.html
http://www.samba-howto.de/DE-Samba2-HOWTO.html#toc4

Autor: Squirrel/Baitronic