Good to Know Database

CentOS 6: Samba 3.5 einrichten


Samba ist ein Linux-Dienst, welcher Datei- und Druckdienste für Windows-Systeme zur Verfügung stellt beziehungsweise diese nutzen kann. Durch Samba werden das Server Message Block Protokoll (SMB) und das erweiterte Common Internet File System (CIFS) für Linux bereitgestellt.

Die folgende Anleitung soll Ihnen zeigen, wie Sie unter CentOS 6 mit Samba 3.5 einen einfachen Dateiserver für ein Windows-Netzwerk einrichten können.

Samba 3.5 installieren

Durch den folgenden Befehl installieren Sie die benötigten Pakete für Samba 3.5.

[root@centos6 ~]# yum install samba

Damit der Samba-Daemon aus dem Netzwerk erreichbar ist, müssen Sie mit den folgenden Firewall-Regeln die UDP-Ports 137 (NetBIOS Name Service) und 138 (NetBIOS Datagram Service) sowie die TCP-Ports 139 (NetBIOS Session Service) und 445 (Microsoft-DS SMB File Sharing) in der Firewall öffnen.

[root@centos6 ~]# iptables -I INPUT -p udp -m state --state NEW -m udp --dport 137 -j ACCEPT
[root@centos6 ~]# iptables -I INPUT -p udp -m state --state NEW -m udp --dport 138 -j ACCEPT
[root@centos6 ~]# iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 139 -j ACCEPT
[root@centos6 ~]# iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 445 -j ACCEPT

Speichern Sie die erstellten Firewall-Regeln mit dem folgenden Befehl dauerhaft in die /etc/sysconfig/iptables.

[root@centos6 ~]# service iptables save

SWAT installieren

Mit der webbasierten Konfigurationsplattform Samba Web Administration Tool (SWAT) können Sie den Samba-Daemon sehr leicht administrieren. In diesem Abschnitt soll gezeigt werden, wie Sie SWAT installieren und konfigurieren.

Die Installation von SWAT für Samba 3.5 erfolgt bei CentOS 6 mit dem folgenden Befehl.

[root@centos6 ~]# yum install samba-swat

Nach der Installation müssen Sie die Konfigurationsdatei /etc/xinetd.d/swat bearbeiten.

[root@centos6 ~]# vi /etc/xinetd.d/swat

In dieser Datei sollten Sie die Optionen only_from und disable anpassen. Mit only_from können Sie einer einzelnen IP-Adresse oder einem ganzen Subnetzwerk den Zugriff auf die Weboberfläche erlauben. In diesem Beispiel wollen wir dem ganzen lokalen Subnetzwerk 192.168.10.0 die Benutzung von SWAT erlauben. Damit SWAT aktiviert wird, müssen Sie die Option disable auf no setzen.

# default: off
# description: SWAT is the Samba Web Admin Tool. Use swat \
#              to configure your Samba server. To use SWAT, \
#              connect to port 901 with your favorite web browser.
service swat
{
        port            = 901
        socket_type     = stream
        wait            = no
        only_from       = 192.168.10.0
        user            = root
        server          = /usr/sbin/swat
        log_on_failure  += USERID
        disable         = no
}

Nachdem Sie die Konfigurationsdatei /etc/xinetd.d/swat gespeichert haben, starten Sie den xinetd neu.

[root@centos6 ~]# service xinetd restart

Sollte der xinetd noch nicht gestartet gewesen sein, ist er vermutlich auch noch nicht in den entsprechenden Runleveln eingetragen worden. Um dies nachzuholen und damit der xinetd beim nächsten Systemstart automatisch gestartet wird, führen Sie den nachfolgenden Befehl aus.

[root@centos6 ~]# chkconfig xinetd on

Um vom Netzwerk aus auf SWAT zugreifen zu können, müssen Sie noch den TCP-Port 901 in der Firewall öffnen.

[root@centos6 ~]# iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 901 -j ACCEPT
[root@centos6 ~]# service iptables save

Samba mit SWAT konfigurieren

Wie bereits erwähnt, läuft die Samba-Konfiguration mittels SWAT über eine Weboberfläche ab. Diese erreichen Sie mit einem Web-Browser unter der folgenden Adresse. Ändern Sie den Rechnernamen (hier server.home.lan) entsprechend Ihrer Konfiguration ab. Sollte die Namensauflösung in Ihrem Netzwerk nicht funktionieren, verwenden Sie anstelle des Rechnernamens die IP-Adresse des Samba-Servers.

http://server.home.lan:901

Wenn Sie auf die Weboberfläche zugreifen, müssen Sie sich mit einem Benutzernamen und einem Passwort anmelden. Zum Einrichten von Samba loggen Sie sich mit dem Benutzernamen root und dem Root-Passwort des Linux-Systems ein.

SWAT ist sehr übersichtlich aufgebaut, leicht zu bedienen und bietet zu jedem Parameter eine Online-Hilfe an. Da die wichtigsten Parameter auch im nächsten Abschnitt angesprochen werden, möchte ich hier nicht weiter auf die Benutzung von SWAT eingeben.

Samba 3.5 auf der Konsole konfigurieren

Die Konfiguration von Samba finden Sie in der Datei /etc/samba/smb.conf.

Benennen Sie zuerst die Beispiel-Konfiguration in smb.conf.original um.

[root@centos6 ~]# mv /etc/samba/smb.conf /etc/samba/smb.conf.original

Danach erstellen Sie eine neue smb.conf.

[root@centos6 ~]# vi /etc/samba/smb.conf

Eine einfache Konfiguration könnte wie folgt aussehen.

[global]
        workgroup = HOME
        netbios name = SERVER
        server string = SERVER.HOME.LAN

[public]
        path = /data/public
        valid users = georg
        read list = georg
        write list = georg
        read only = no
        create mask = 0664
        directory mask = 0775

Im Abschnitt [global] werden die allgemeinen Einstellungen für Samba vorgenommen. Mit dem Parameter workgroup gibt man die Arbeitsgruppe zu welcher der Samba-Server gehören soll an. Durch den Parameter netbios name wird in dieser Beispielkonfiguration der Rechnername festgelegt, welcher später in der Netzwerkumgebung erscheinen soll. Eine kurze Computerbeschreibung kann man mit dem Parameter server string angeben.

Nach den allgemeinen Einstellungen folgen die Abschnitte für die einzelnen Freigaben. Jede Freigabe muss einen eindeutigen Namen erhalten, welcher in eckigen Klammern angegeben wird und später in der Netzwerkumgebung angezeigt wird. Danach folgen die einzelnen Einstellungen für diese Freigabe. Mit dem Parameter comment können Sie einen kurzen Kommentar für die Freigabe eintragen, welcher später ebenfalls in der Netzwerkumgebung angezeigt wird. Durch path wird der Pfad zum lokalen Verzeichnis angegeben. Dieses Verzeichnis muss beim Starten des Samba-Daemons existieren und über die benötigten Rechte verfügen, damit die Benutzer die enthaltenen Dateien lesen, bearbeiten und neue Dateien anlegen können.
Mit dem Parameter valid users kann man die Benutzer angeben, welchen der Zugriff auf diese Freigabe gestattet wird. Die einzelnen Benutzer werden mit einem Komma und einem Leerzeichen getrennt aufgelistet. Sollten Sie Benutzer ausschließen wollen, geben Sie diese mit invalid users an. Durch die Parameter read list und write list kann man einzelnen Benutzern die Berechtigung zum Lesen und Schreiben geben. Jeder Benutzername, welchen Sie bei den Parametern valid users, invalid users, read list und write list angegeben haben, muss auf dem lokalen System und in der Benutzerdatenbank von Samba vorhanden sein. Sollten Sie hier Benutzer angeben, welche nicht existieren, können sich diese nicht am Samba-Daemon anmelden. Wie Sie die Benutzer anlegen und in die Benutzerdatenbank von Samba eintragen, wird im nächsten Abschnitt erklärt.
Wenn die Benutzer in der Freigabe Dateien anlegen oder bearbeiten können sollen, müssen Sie den Parameter read only auf den Wert no setzen. Durch create mask und directory mask legt man fest, mit welchen Linux-Rechten, Dateien und Verzeichnisse in dem lokalen Verzeichnis angelegt werden sollen.

Mit dem Programm testparm können Sie die Konfigurationsdatei /etc/samba/smb.conf auf Syntaxfehler überprüfen. Dies sollten Sie nach jeder manuellen Änderung durchführen um Syntaxfehler auszuschließen.

[root@centos6 ~]# testparm
Load smb config files from /etc/samba/smb.conf
rlimit_max: rlimit_max (1024) below minimum Windows limit (16384)
Processing section "[public]"
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions

[global]
        workgroup = HOME
        netbios name = SERVER
        server string = SERVER.HOME.LAN

[public]
        path = /data/public
        valid users = georg
        read list = georg
        write list = georg
        read only = No
        create mask = 0664
        directory mask = 0775

Nachdem Sie die Konfigurationsdatei auf Syntaxfehler überprüft haben, sollten Sie sicherstellen, dass alle lokalen Verzeichnisse existieren, welche Sie in der Konfigurationsdatei angegeben haben. Wenn dies nicht der Fall ist, erstellen Sie diese und ändern die Rechte entsprechend. In diesem Beispiel erstellen wir das Verzeichnis /data/public und ändern die Zugriffsrechte auf 775 damit wir beim ersten Test Probleme mit den Zugriffsrechten ausschließen können.

[root@centos6 ~]# mkdir -p /data/public
[root@centos6 ~]# chown root:users /data/public
[root@centos6 ~]# chmod 0775 /data/public

SELinux konfigurieren

Bei CentOS 6 ist standardmäßig SELinux (Security Enhanced Linux) aktiviert und läuft im Enforcing Modus. Falls Sie SELinux nicht deaktivert haben (siehe SELinux: SELinux deaktivieren) oder im Permissive Modus betreiben (siehe SELinux: SELinux-Betriebsmodus ändern), müssen Sie den Security Context für das Verzeichnis /data anlegen.

Damit Sie einen neuen Security Context erstellen können, benötigen Sie das Programm semanage. Dieses befindet sich im Paket policycoreutils-python und kann wie folgt installiert werden.

[root@centos6 ~]# yum install policycoreutils-python

Erstellen Sie jetzt einen neuen Security Context für das Verzeichnis /data. Dieser wird von semanage in der Datei /etc/selinux/targeted/contexts/files/file_contexts.local abgelegt.

[root@centos6 ~]# semanage fcontext -a -t samba_share_t '/data(/.*)?'

Anschließend versehen Sie das Verzeichnis /data und dessen Inhalt mit dem neuen Security Context.

[root@centos6 ~]# restorecon -R -v /data
restorecon reset /data context system_u:object_r:file_t:s0->system_u:object_r:samba_share_t:s0
restorecon reset /data/public context unconfined_u:object_r:file_t:s0->system_u:object_r:samba_share_t:s0

Überprüfen können Sie dies mit den folgenden Befehlen.

[root@centos6 ~]# ls -ldZ /data/
drwxr-xr-x. root root system_u:object_r:samba_share_t:s0 /data/
[root@centos6 ~]# ls -ldZ /data/public/
drwxrwxr-x. root users system_u:object_r:samba_share_t:s0 /data/public/

Hinweis: Sollten Sie SELinux im Enforcing Modus betreiben und Probleme mit Samba auftreten, überprüfen Sie bei der Fehlersuche auch die Logdatei /var/log/audit/audit.log.

Benutzeraccounts einrichten

Wie bereits erwähnt, müssen die in der Konfigurationsdatei /etc/samba/smb.conf eingetragenen Benutzer auch einen gleichlautenden Account auf dem Linux-System besitzen. Diese Benutzer-Accounts können Sie mit dem folgenden Befehl erstellen. Durch die Option -m wird automatisch ein privates Verzeichnis unter /home für den Benutzer angelegt. Durch -s /sbin/nologin wird verhindert, dass sich der Benutzer lokal an einer Konsole oder über SSH anmelden kann. Mit der Option -g wird der Benutzer zur Gruppe users hinzugefügt.

[root@centos6 ~]# useradd -m -s /sbin/nologin -g users georg

Durch den folgenden Befehl wird der Benutzer in die Benutzerdatenbank von Samba eingetragen. Dabei müssen Sie das Passwort festlegen, welches für den späteren Zugriff auf den Samba-Server benötigt wird.

[root@centos6 ~]# smbpasswd -a georg

Samba starten

Da Samba jetzt vollständig konfiguriert wurde, können Sie den Samba-Daemon und den NetBIOS Name Server starten.

[root@centos6 ~]# service smb start
SMB-Dienste starten:                                       [  OK  ]
[root@centos6 ~]# service nmb start
NMB-Dienste starten:                                       [  OK  ]

Wenn keine Probleme aufgetreten sind, tragen Sie den Samba-Daemon und den NetBIOS Name Server  in die entsprechenden Runlevel ein.

[root@centos6 ~]# chkconfig smb on
[root@centos6 ~]# chkconfig nmb on

Weiterführende Tutorials

Samba 3: Benutzerverwaltung mit smbpasswd
Samba 3: Konfigurationsdatei überprüfen
Samba 3: Bestehende Verbindungen anzeigen
Samba 3: Samba an bestimmte Netzwerkinterfaces binden
Samba 3: Samba als Local Master Browser (LMB) konfigurieren
Samba 3: Samba als Domain Master Browser (DMB) konfigurieren
Samba 3: Samba als WINS-Server konfigurieren
Samba 3: WINS-Server eintragen
Samba 3: Heimatverzeichnisse freigeben
Samba 3: Details zu Samba-Benutzern anzeigen lassen
Samba 3: Zugriffsrechte vererben
Samba 3: testparm meldet "rlimit_max: rlimit_max (1024) below minimum Windows limit (16384)"
Samba 3: Samba-Version auslesen
Samba 3: Sym-Links verfolgen
Samba 3: Log-Level einstellen
Samba 3: Authentifizierung mit LM-Hashes erlauben
Samba 3: SWAT meldet NT_STATUS_CONNECTION_REFUSED
Samba 3: Samba- und Unix/Linux-Passwort synchronisieren
Samba 3: Minimale Passwortlänge festlegen
Samba 3: Passwort-History einrichten
Samba 3: Gültigkeit der Samba-Passwörter festlegen
Samba 3: Benutzer-Accounts bei fehlerhaften Login-Versuchen sperren


Dieser Eintrag wurde am 26.08.2011 erstellt und zuletzt am 24.01.2016 bearbeitet.

Direkter Link zu dieser Seite: http://www.gtkdb.de/index_33_1356.html

[ Zur Startseite ]   [ Zur Kategorie ]


Valid XHTML 1.0 Transitional Valid CSS Valid Atom 1.0

© 2004-2018 by Georg Kainzbauer