Samba einrichten und Linux als Fileserver

Obwohl die Betriebssysteme Linux und Windows unterschiedlicher nicht sein können, da die Entwickler unterschiedliche Philosophien haben, ist es möglich, Linux-Rechner in einem Windows-Netzwerk (und umgekehrt) zu betreiben. Die Kommunikation zwischen beiden Betriebsystemen wird durch den so genannten SAMBA-Server bzw. SAMBA-Client ermöglicht, der auf einem bzw. mehreren Linux-Rechnern installiert wird und dafür sorgt, dass ein Linux-Rechner auf die Windows-Freigaben zugreifen kann bzw. dieser Freigaben für die Windows-Rechner erstellt.

SAMBA macht also nicht viel mehr als den Linux-Rechner bei einem Windows-Anwender in der Netzwerkumgebung erscheinen zu lassen und diesem dann zu ermöglichen, auf dessen Freigaben zuzugreifen. Auch ein Linux-Rechner kann mithilfe von SAMBA auf die Windows-Freigaben zugreifen. SAMBA ist so zusagen die Kommunikationsschnittstelle für beide Betriebssysteme, denn ohne SAMBA könnten beide schlichtweg nicht miteinander Daten austauschen.

Wie man anhand des Bildes sieht, erscheint in der Netzwerkumgebung von "mikey" (das ist ein Windows XP-Rechner) der Linux-Rechner "Tuxmobil", auf dessen Freigaben zugegriffen werden kann.

Das Mini-Projekt: 1 Linux- mit 1 Windows XP-Rechner verbinden

Bevor auf die zahlreichen Einstellungen und Vorbereitungen eigegangen wird, erst einmal ein Überblick von der Netzwerkkonfiguration. In diesem Workshop werden lediglich ein Windows XP-Rechner mit einem Linux-Rechner verbunden, um das Prinzip auf einfache Weise zu zeigen. Natürlich kann man mit Samba ein komplettes Netzwerk einrichten, man ist also nicht nur auf zwei Rechner beschränkt.

Vorweg muss man überprüfen, ob das Netzwerk auf jedem Rechner richtig installiert ist. D.h. dass ein Netzwerkadapter (Netzwerkkarte, WLAN-Karte, etc) auf dem jeweiligen PC vorhanden und installiert ist. Des Weiteren müssen die IP-Adressen und die Subnetzmasken eingetragen werden. Leider würde eine genaue Beschreibung, wie man die Hardware installiert und die Netzwerk-Adressen festlegt, den Rahmen dieses Artikels sprengen, so dass nicht weiter darauf eingegangen werden kann.

Der Windows XP-Rechner hat die IP-Adresse 192.168.0.1 und die Subnetmaske 255.255.255.0. Die Wahl der IP-Adresse bleibt jedem frei, man sollte zur besseren Übersichtlichkeit dem Server immer eine Adresse mit xxx.xxx.xxx.1 und den anderen Rechnern im Netz eine Adresse aus dem gleichen Netz geben, beispielsweise xxx.xxx.xxx.2. Zusätzlich sollte man darauf achten, dass die Subnetzmaske bei allen Rechnern identisch ist. In unserem Beispiel haben beide Rechner die Subnetzmaske 255.255.255.0. Fortgeschrittene müssen natürlich nicht die IP-Adressen festlegen, denn die oben erwähnte Netzwerkstruktur sollte auf einfache Weise ermöglichen, dass beide Rechner miteinander kommunizieren können.


Prinzip eines PING an einen anderen PC

Wenn man alles richtig eingestellt hat, sollte man den Rechner erfolgreich "anpingen" können. Dies macht man unter Linux und Windows mit dem Befehl "ping [IP-ADRESSE]". In unserem Beispiel wurde beim Linux-Rechner in die Konsole der Befehl "ping 192.168.0.1" eingeben, wobei folgende Antwort angezeigt wird:

bash-2.05b# ping 192.168.0.1
PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.
64 bytes from 192.168.0.1: icmp_seq=1 ttl=128 time=0.320 ms
64 bytes from 192.168.0.1: icmp_seq=2 ttl=128 time=0.332 ms
64 bytes from 192.168.0.1: icmp_seq=3 ttl=128 time=0.351 ms
64 bytes from 192.168.0.1: icmp_seq=4 ttl=128 time=0.351 ms

--- 192.168.0.1 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 2997ms
rtt min/avg/max/mdev = 0.320/0.338/0.351/0.022 ms

Wie man sieht, wurde der Windows-Rechner erfolgreich angesprochen (ping) und hat fleißig geantwortet. D.h. dass dieser über das Netzwerk erreichbar ist. Wir haben also die Grundlage geschaffen. Nun muss man noch dasselbe Prozedere beim Windows-Rechner durchführen. Hier öffnet man die MS-DOS-Eingabeaufforderung und tippt nun den PING-Befehl an den Linux-Rechner ein, also "ping 192.168.0.5".

Erhält man beim pingen keine Antwort, so hat man das Netzwerk bzw. die Hardware nicht korrekt eingerichtet.

Weitere Netzwerkeinstellungen

Ok, es mag zwar ein wenig öde sein, ein Netzwerk einzurichten, aber ein sauber konfiguriertes Netzwerk ist das A und O für das einwandfreie Arbeiten in einem LAN. Aus diesem Grund sollten beim Linux-Rechner noch folgende Systemdateien mit einem beliebigen Editor bearbeitet werden. Vergessen Sie nicht, dass man für die folgenden Dateien Root-Rechte benötigt.

/etc/hostname


Wie soll Ihr Computername lauten. Öffnen Sie einfach mit einem Editor diese Datei und schreiben Sie einfach einen Namen ein.

/etc/hosts


Computer arbeiten besser mit Zahlen, da diese für den Computer besser zu verarbeiten sind. Für den Menschen aber sind Zahlen nicht sonderlich gut geeignet, besser sind da Namen. Bis jetzt haben den anderen Rechner immer mit seiner IP-Adresse angesprochen, also für den Linux-Rechner "192.168.0.5" und für den Windows-PC "192.168.0.1". In einem kleinem Netzwerk sollte diese Adressen keine Probleme machen, doch in einem großen Netzwerk sind da richtige Namen besser. Um einen Rechner mit seinem Rechnernamen ansprechen zu können, benötigt man entweder einen DNS-Server (was jetzt auch wieder den Rahmen sprengen würde) oder man trägt die IP-Adressen in die Host-Datei ( /etc/hosts )ein.

127.0.0.1       localhost   
192.168.0.5 tuxmobil # Hier der Eintrag für den Linux-PC
192.168.0.2 Andre # Ein anderer Eintrag
192.168.0.1 mikey # Hier der Eintrag für den Windows-PC

Nun könnte man "ping tuxmobil" befehlen, um den Linux-Rechner anzupingen.

Samba einrichten

Den ersten wichtigen Schritt haben wir nun getan, denn beide Rechner können sich über das Netzwerk erreichen bzw. anpingen und die Namensauflösung funktioniert nun auch, damit wir die Rechner auch mit "richtigen" Namen ansprechen können. Jetzt kommen wir aber zum interessanten Teil, denn die Rechner können ich zwar über das Netzwerk erreichen, aber noch lange nicht auf die Freigaben des anderen zugreifen. Wie bereits am Anfang dieses Artikels beschrieben, benötigt man auf dem Linux-Rechner einen SAMBA-Server, der den gegenseitigen Zugriff ermöglicht.

Samba sollte natürlich auf dem Linux-Rechner installiert sein. Der Samba-Server sollte beim Starten des Rechners auch automatisch gestartet werden, was man mit dem Befehl "rc-update add samba default". Dann braucht man den SAMBA-Dämon nicht immer manuell starten, was auf die Dauer sehr nervig wird. Hat man diese beiden Sachen erledigt, muss man Konfigurationsdatei mit einem Editor bearbeiten. Sämtliche Konfigurationsdateien des SAMBA-Servers befinden sich in dem Verzeichnis "/etc/samba/". Der Name der Konfigurationsdatei lautet "smb.conf" und befindet sich ebenfalls in diesem Verzeichnis. Für SAMBA gibt es eine große Anzahl von Parametern, für die man sich aber in die Tiefen einarbeiten müsste. Folgende Grundkonfiguration sollte aber für einen sicheren Betrieb ausreichen:

[global]

;String, mit dem sich der Samba-Server meldet
;(%h = Hostname, %v = Samba-Version)
server string = Tuxmobil %v
comment = Samba 3.0.5
;Für "myworkgroup" den Namen der Arbeitsgruppe einsetzen,
;der auch auf dem Win-PC eingetragen ist
workgroup = ARBEITSGRUPPE

guest account = nobody
keep alive = 60
os level = 2
kernel oplocks = false
security = share

;Rechner eintragen, die auf die Freigaben zugreifen dürfen
hosts allow = 192.168.0.

encrypt passwords = yes
printing = bsd
printcap name = /etc/printcap
load printers = yes
socket options = TCP_NODELAY
map to guest = Bad User
wins support = no

;IP-Adressen der Interfaces, die Samba abfragen soll
interfaces = 192.168.0.5/255.255.255.0

Jetzt haben wir die Grundeinstellungen für den SAMBA-Server vorgenommen, so dass dieser bereits in dem Netzwerk erreichbar sein dürfte, sofern das Netzwerk ordnungsgemäß eingerichtet und der SAMBA-Server gestartet ist. Um sicher zu gehen, sollte man den SAMBA-Server mit dem Befehl "/etc/init.d/samba restart" erneut manuell starten. Diesen Befehl sollte man sich merken, denn jedes Mal, wenn man Änderungen an der Konfigurationsdatei des SAMBA-Servers vorgenommen hat, muss man diesen auch neustarten. Um nicht gleich den ganzen Rechner neuzustarten, startet man den SAMBA-Server einfach manuell in der Konsole:

bash-2.05b# /etc/init.d/samba restart
* samba -> stop: smbd ... [ ok ]
* samba -> stop: nmbd ... [ ok ]

* samba -> start: smbd ... [ ok ]
* samba -> start: nmbd ... [ ok ]

Wie man sieht, müssen die beiden SAMBA-Dämonen "smbd" und "nmbd" gestartet sein, damit man den Linux-Rechner via SAMBA erreichen kann. Nun hätten wir den zweiten großen Schritt getan, denn nach der Grundkonfiguration des Netzwerks haben wir nun auch den SAMBA-Server installiert, konfiguriert und gestartet. Nun könnten wir bereits von dem Linux-Rechner auf die Freigaben des Windows-Rechners zugreifen, aber darauf gehen wir gleich ein.

Freigaben auf dem Linux-Rechner

Nun kommen wir zu dem Kapitel, bei dem wir Freigaben auf dem Linux-Rechner einrichten. Diese macht man erneut in der Konfigurationsdatei "/etc/samba/smb.conf". Dabei schreiben wir einfach unter dem bereits notierten Einträgen unsere gewünschten Freigaben hinein und legen dort fest, welches Verzeichnis unter welchem Namen mit bestimmten Rechten freigeben wird. Diese erscheinen dann in der Netzwerkumgebung des Windows- und anderen Rechnern:

[Home] # Name der Freigabe
comment = Passwort benötigt! # Kommentar zur Freigabe
path = /home/chef # Verzeichnis, dass freigegen wird
user = chef # Benutzer, die darauf zugreifen dürfen
public = no # Ist das Verzeichnis öffentlich zugänglich?
writeable = yes # Man hat Schreibzugriff
   
[Freigabe] # Name der Freigabe
comment = Freigabe # Kommentar zur Freigabe
path = /home/chef/temp # Verzeichnis, dass freigegen wird
public = yes # Ist das Verzeichnis öffentlich zugänglich?
writable = yes # Man hat Schreibzugriff
chmod = 777 # Alle dürfen schreiben und ausführen
   
[Portage] # Name der Freigabe
comment = Gentoo-Portage # Kommentar zur Freigabe
path = /usr/portage/distfiles # Verzeichnis, dass freigegen wird
public = yes # Ist das Verzeichnis öffentlich zugänglich?
writable = yes # Man hat Schreibzugriff

Bei dem ersten Beispiel einer Freigabe (home) wurde das Verzeichnis /home/chef/ freigegeben. Diese Freigabe ist zwar für alle sichtbar, aber es kann nur der Benutzer "chef" darauf zugreifen. Wichtig ist, dass der User auch ein SAMBA-Benutzer ist (hat jetzt nichts mit dem Benutzerkonto von Windows bzw. Linux zu tun, sondern ist ein spezieller SAMBA-Benutzer). Damit man sich für dieses Verzeichnis authentifizieren kann, muss ein SAMBA-User namens Chef vorhanden sein. Wenn nicht, muss man einen solchen User auf dem Linux-Rechner anlegen. Das macht man wiefolgt:

smbpasswd -a maxmustermann # erstellt einen neuen SAMBA-User
smbpasswd -e maxmustermann # aktiviert den Account

Die zweite Freigabe hingegen ist frei für jederman zugänglich. Damit auch alle fleißig Daten schreiben, verändern und ausführen dürfen, wurde hier der Eintrag "chmod 777" gesetzt. Dies sollte man aber auch nur dann tun, wenn man sich darüber auch im Klaren ist, denn alle User haben vollen Zugriff auf dieses Verzeichnis.

Die eingetragenen Freigaben erscheinen nun im Netzwerk.
Man sollte aber nicht vergessen, den SAMBA-Server neuzustarten.

Das war es egentlich auch schon. Wenn man den SAMBA-Server einmal eingerichtet hat und diesen erfolgreich zum Laufen bewegt hat, sind die restlichen administrativen Aufgaben ein Kinderspiel. In diesem Beispiel sind wir nicht näher auf die Details eingegangen und nur die "lebensnotwendigen" Einstellungen vorgenommen, damit die beiden "doch so verfeindeten" Rechner freundlich miteinander kommunizieren können. Dabei ist leider der Sicherheitsaspekt so gut wie gar nicht angesprochen worden. Wer also öffentliche Linux-Server einrichten und betreiben möchte, der sollte sich dringenst weitere Informationen einholen.