| Anleitung - Eine Windows-Freigabe unter Linux
mounten Copyright 2000 by Frank Gehde Achtung: Diese Anleitung gilt für SuSE Linux 6.4 mit dem Tool smbmount in der Version 2.0.7 ! Ich hab auf meinem Windows Rechner eine Partition mit
Grafikdateien, die ich oft benötige (irgendwelche Vorlagen oder
Logos). Wie an anderer Stelle bereits erläutert, läßt sich ein
FTP-Server unter Windows relativ leicht realisieren. Wie ich aber an
anderer Stelle schon einmal erwähnte, ist der Betrieb eines Servers
auf einem maskierten Rechner hinter einem Linux-Masquerading-Router
ziemlich blöd zu realisieren wenn man den Kernel 2.2 verwendet (mit
Kernel 2.4 wird das alles anders und ist dann sogar die
Optimal-Konfiguration). Fangen wir erst einmal mit der Windows Konfiguration an. Wenn Sie im Windows-Explorer einen Ordner mit der Maus markieren, und dann mit der rechten Maustaste das Kontextmenü aufrufen, müßte dort ein Eintrag "Freigabe" vorhanden sein. Ist er nicht? Dann lösen wir dieses erste mögliche Problem. Freigaben unter Windows98 aktivieren: Sehen Sie in der
Baumdarstellung des Windows-Explorers etwas weiter unten nach, und
wählen Sie dort Systemsteuerung an. Rechts finden Sie in der Liste
jetzt den Eintrag Netzwerk. Doppelklicken Sie darauf. Unterhalb der
Ausklappbox zur primären Netzwerkanmeldung finden Sie einen Button
"Datei- und Druckerfreigabe ...". Drücken Sie darauf. Sie haben in
der erscheinenden Dialogbox die Möglichkeit zwei Haken zu setzten.
Setzen Sie nur den Haken "Anderen benutzern soll der Zugriff auf
meine Dateien ermöglicht werden können". Im Kontextmenü taucht jetzt also die Option Freigabe auf. In
meinem Fall will ich eine ganze Partition freigeben, also gehe ich
im Windows-Explorer auf das entsprechende Laufwerk und wähle den
Punkt "Freigabe" im Kontextmenü aus. Unter Linux setzen wir jetzt einfach mal voraus, daß Sie SuSE
Linux 6.4 haben, und dort das Samba-Paket installiert ist (andere
Distributionen und Versionen gehen möglicherweise auch, sind aber
hier nicht getestet). Wenn nicht installieren Sie das Paket erstmal
nach. Außerdem setze ich voraus, daß Ihr Linuxrechner mit dem
Windowsrechner vernetzt ist. Und zwar korrekt. 192.168.100.20
win.haus.test win
Dabei heißt mein Windows Rechner "win", und die Linux-Kiste heißt "keeper" (die domain "haus.test" rundet nur einige Konfigurationen ab, ist aber sonst völlig belanglos. .test ist übrigens gemäß den RFC konform, um nicht existente Domainnamen trotzdem im privaten Netz verwenden zu können). Um die Netzwerkverbindung zu testen kann ich also "ping win" schreiben anstatt "ping 192.168.100.20". Und um Samba zu nutzen kann ich den Rechner nun auch als "win" ansprechen. Um zu testen, ob wir den Windows Rechner über das SMB-Protokoll ansprechen können, und das soeben freigegebene Laufwerk "graphics" sehen können, nutzen wir den ersten Samaba-Client "smbclient". Dazu geben wir ein smbclient -L win -N Darauf erhalten wir etwa folgende Ausgabe: Sharename Type Comment
Server
Comment Workgroup Master
Prima. Linux kann den Rechner sehen. Außerdem kann er die Freigabe "graphics" sehen. Der nächste Schritt, ist der manuelle Zugriff darauf mit dem "smbclient" um zu testen, ob wir auch auf die Dateien Zugriff haben. Dazu geben wir ein smbclient //win/graphics Bei der anschließenden Passwortabfrage gebe ich "hansi" ein, wie ich es oben erwähnte. Nun sehen wir unter Linux ein neues Prompt smb: \> um nun mal das Verzeichnis des Windows-Laufwerkes aufzulisten geben wir an diesem Prompt ls ein. Cool. Alles zu sehen, was zu sehen sein müßte. Wechseln wir nun in ein Unterverzeichnis, zB mit cd logos und führen wieder ein ls aus. Das klappt ja wie geschmiert. Wie kopiere ich denn nun beispielsweise eine Datei auf den Linuxrechner ? Da verhält sich smbclient ganz ähnlich wie der ftp-Befehl. Um eine Datei auf den Linux Rechner zu laden geben wir am SMB-Promt zB folgendes ein: get intranet_logo.jpg Und schon wird diese Datei in das Verzeichnis kopiert, in dem wir grade standen, als wir den smbclient gestartet haben. Um den smb-Client wieder zu verlassen können wir den Befehl exit eingeben. So, damit haben wir von dem Linux Rechner erfolgreich auf ein Verzeichnis oder ein Laufwerk von einem Windows-Rechner zugegriffen. Ist schon toll, oder ? Linux kann wirklich fast alles ! *ggg* Kommen wir nun zum aufregenden Teil. Wir mounten diese Freigabe
jetzt so, daß das freigegebene Laufwerk ein Teil unseres Linux
Dateisystems wird (mit gewissen, zunächst zu vernachlässigenden
Einschränkungen). Also irgendwie hab ich einige Anleitungen zum smbmount gelesen, und keines der Beispiele funktionierte. Und zwar hauptsächlich wegen Syntax-Problemen. Man muß beachten, daß es mindest zwei verscheidene smbmount Implementationen gibt. Die, die mit Samaba ausgeliefert wird, und die die mit dem smbfs-Filesystem ausgeliefert wird. Ich hab etwas herumprobiert, und unter meine SuSE 6.4 mit installiertem Samaba-Paket und kompilierter smbfs-Filesystem Unterstützung im Kernel funktionierte das folgende: smbmount //win/graphics /home/frankie/graphics (Laut Hinweisen, der Man-Page und SuSE ist das falsch und sollte
nicht gehen. Die richtige Variante funtioniert direkt über den
mount-Befehl. Das hier gezeigte geht aber in der smbmount Version
2.0.7 trotzdem). Das "graphics" Verzeichnis in meinem
gewöhnlichen Homeverzeichnis hatte ich vorher mit mkdir
graphics als User frankie (sagte ich schon, daß ich
den ganzen anderen Kram als root erledige ?) angelegt. Nach diesem
Befehl wurde das Freigabepasswort abgefragt, und danach war das
entsprechende Windows-Laufwerk wunderbar in meine
Linux-Verzeichnisstruktur eingebunden (mit den Einschränkungen, daß
Dateirechte anders funktionieren). umount /home/frankie/graphics So. Wir können also mounten und unmounten. Daß wir das Passwort für die Freigabe von Hand eintragen müßen ist aber doof. Mit den Optionen kommen wir weiter: smbmount //win/graphics /home/frankie/graphics -o password=hansi So würde es schon automatisch gehen. Aber wir sehen mal, was wir noch an Parametern gebrauchen können. Da ich das neue Laufwerk ja in mein privates home-directory mounte, könnte ich gut auch noch (als root) angeben, daß das gemountete Verzeichnis dem Nutzer frankie und seiner gruppe gehört. Außerdem bleibe ich noch dabei, daß ich das Laufwer ReadOnly (ro) mounte. Die resultierende Parameterzeile sieht so aus (für weitere Optionen sehen sie auch unter linux mit man smbmount nach): smbmount //win/graphics /home/frankie/graphics -o password=hansi,uid=512,gid=100,ro Lange Zeile (und zwar genau eine Zeile, falls Ihr Browser das
jetzt umbricht), aber nu ist das Windows Laufwerk für meine Zwecke
unter Linux optimal gemounted. Wechseln Sie unter Linux ruhig mal in
das Verzeichnis und stöbern Sie darin rum. Echtes Linux Feeling,
oder was? Obwohl es ein Teil der Windows-Festplatte ist.
Also, zuerst habe ich ein Skript geschrieben, welches konkret das graphics-Share mounted. Das Verzeichnis, in welches gemounted wird, wird dabei erst angelegt. Vorher wird überprüft, ob das Verzeichnis schon existiert (Das heißt, falls es jetzt aufgrund unserer Versuche noch existiert, müßen wir es erstmal löschen). Sehen wir uns erstmal das Skript namens "mountgraf" an: #!/bin/sh Der erste Test, sieht nach ob das Verzeichnis graphics existiert. Wenn ja, dann sagt das Programm, daß dem so ist, und tut nichts weiter. Existiert das Verzeichnis nicht, wird es angelegt und dem User frankie mit chown übereignet (ich hatte es mit "su" versucht, aber irgendwie funktionierte es nicht). Dann wird das bekannte smbmount-Kommando ausgeführt. Nun wird der Rückgabewert geprüft, ob das mounten erfolgreich war. War dies nicht der Fall, wird das Verzeichnis graphics gleich wieder gelöscht, damit es zu keinen zukünftigen Inkonsistenzen kommt. Als nächstes habe ich das folgende Skript namens "umountgraf" zum unmounten geschrieben: #!/bin/sh if test -d /home/frankie/graphics
Das ist relativ einfach. Wenn das Directory graphics existiert, dann ist auch das Share gemounted. Dieses wird also erst unmounted, und danach wird das Verzeichnis gelöscht. Andernfalls passiert nix weiter. Wie ich schon sagte, gab es insbesondere beim Herunterfahren Probleme. Daher wollen wir gerne beim Herunterfahren automatisch das umountgraf Skript ausführen. Die beiden eben genannten Skripte sind überigens unter /root/script/ gespeichert. #!/bin/sh # Rueckgabewert fuer echo (in rc.config
festgelegt) Eines meiner üblichen Bootscripte, welches im Verzeichnis /sbin/init.d/ gespeichert wird. Der Scriptname lautet "wingraf". Tatsächlich sind die Start und Statusabschnitte nicht vorhanden. Das liegt daran, daß ich ja nicht weiß, ob der Windows Rechner tatsächlich läuft, wenn ich den Linux-Rechner hochfahre. Wichtiger ist nur die Stop-Sequenz, um eben die Probleme beim Herunterfahren zu vermeiden. Um dafür zu sorgen, daß dieses Script auch ausgeführt wird, der Rechner heruntergefahren wird, muß ich im Unterverzeichnis rc2.d mit ln -s /sbin/init.d/wingraf K08wingraf noch einen Link anlegen. Er bekommt eine niedrige Nummer, damit
er beim Herunterfahren als allererstes ausgeführt wird. Jetzt kommt der Test, ob das ganze auch mit FTP funktioniert.
Dazu muß sichergestellt sein, daß der Ftp-Server läuft. Dies steht
in der Datei /etc/inetd.conf. Der FTP-Server darf nicht
auskommentiert sein. Ohne Kernel 2.4 (DNAT), ohne NFS und ohne redundante Daten kann ich also über meinen Linux-Router und FTP von außen prima auf die Daten des Windowsrechners zugreifen. Dies ist nur eine der unzähligen Varianten, aber sie war schnell einzurichten, und sie funktioniert ! Achtung!!!! Um sich einloggen zu können müssen Sambauser hinzugefügt werden. Für jeden User der sich unter Windows einloggt muss es den gleichnamigen User in Samba geben. Dies geschieht mit dem Befehl smbpasswd. Das geschieht als root mit smbpasswd -a username. zurück zur Linux Übersicht |