Liebe Besucher, ein aktueller Hinweis in eigener Sache:
Es ist beabsichtigt, diese Seiten und die Domain im Januar/Februar 2004 auf
einen anderen Server umzuziehen. Es ist leider nicht auszuschließen,
daß es während des Umzugs zu technischen Problemen mit diesen
Seiten kommen wird. Insbesondere im eMail-Bereich wird es vermutlich Probleme
geben. Wenn Sie fragen haben oder mich sonstwie erreichen wollen empfehle
ich an rebel@snafu.de zu posten.
Nachdem der Umzug abgeschlossen ist, wird es allerdings auch inhaltliche Änderungen
während des ersten Halbjahrs 2004 geben. Keine Angst. Es werden keine
Inhalte verlorengehen, aber die Struktur der Seiten wird komplett geändert.
Diese Seite hat eben eine andere Entwicklung genommen seit 2000, als das Projekt
gestartet wurde ;-) Ich werde mich bemühen, daß bei ihnen vorhandene
alte Bookmarks wenigstens zu einem Verweis auf die Neustruktur führen,
und die gesuchten Inhalte für sie trotzdem leicht und schnell auffindbar
sein werden.
Die eigentlich zu dieser Seite gehörenden Domains ag-intra.com, ag-intra.org
und ag-intra.de werden von mir geschlossen bzw. gelöscht und unregistriert.
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).
Optimalerweise, stelle ich mir vor, daß ich mich per FTP auf meinem
Linux-Router anmelde, und die gewünschten Dateien runterladen kann.
Dazu müßte ich also meine Daten von dem Windows Rechner auf die
Linux-Kiste kopieren, und dort den FTP-Daemon entsprechend einrichten. Die
Idee find ich aber doof. Ich hätte zwar noch genügend Plattenplatz
auf dem Linux-Rechner, aber trotzdem wären die Dateien dann redundant
(also mehrfach vorhanden). Die Dateien auf dem Windowsrechner sind meine Arbeitsdateien.
Bei jeder Änderung müßte ich die Dateien wieder auf die Linux-Kiste
kopieren. Nein, so geht das nicht. Diese Lösung stinkt.
Fest steht für mich, daß ich in einem für FTP freigegebenen
Verzeichnis ein Verzeichnis als Mountpoint einrichten will. Zuerst fiel mir
NFS ein. NFS find ich aber aus verschiedenen Gründen nicht sooo prima.
Abgesehen davon, daß ich persönlich bisher keinen Windows98 fähigen
Client oder Server kenne.
Aber Samba müßte gehen. Ich will jetzt keinen Samba-Server auf
meiner Linux-Kiste einrichten, aber soweit ich weiß, gibt es auch Client-Tools
für das SMB-Protokoll, welches alle Windows-Rechner von Hause aus beherrschen.
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".
Verlassen Sie den Dialog, und gehen Sie in den Reitern des
Netzwerkdialoges auf den Punkt "Zugriffssteuerung". Setzen Sie dort die Option
"Zugriffssteuerung auf Freigabeebene". Wenn Sie die Dialoge jetzt verlassen
müssen Sie ggf. die Win98 CD noch einmal einlegen und anschließend
den Rechner neu starten. Tun Sie das. Wenn Sie jetzt wie oben beschrieben
das Kontextmenü eines Ordners öffnen, finden Sie dort auch den
Eintrag "Freigabe".
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.
Die Freigabe wird aktiviert durch das Wählen der Option "Freigeben als:".
Nun tragen wir einen beliebigen Freigabenamen ein. Diesen Namen verwenden
wir nachher auch unter Linux zum Mounten dieser Partition. Wählen Sie
deshalb einen prägnanten, aber kurzen Namen. Ich nehme "graphics".
Beim Zugriffstyp wähle ich jetzt erst einmal "Schreibgeschützt"
(Das können Sie nach Ihren Wünschen ändern wie Sie wollen.
Da ich ja nur per FTP Daten ziehen will, ist dies aus Sicherheitsgründen
für mich jedenfalls ersteinmal ausreichend). Als Kennwort für den
Schreibschutz-Zugriff gebe ich testweise erst einmal "hansi" ein.
Damit ist die Windows seitige Konfiguration abgeschlossen (Das war ja nun
pippi-einfach).
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.
Um uns die Dinge zu erleichtern, passen wir erst einmal die Datei /etc/hosts
an (falls Sie dies nicht irgendwann schon einmal gemacht haben, was sehr sinnvoll
wäre). Dort tragen wir die IP-Adressen der Rechner im privaten Netz
und deren Namen ein. Bei mir sieht das etwa so aus (Auszug):
192.168.100.20 win.haus.test
win
192.168.100.100 keeper.haus.test keeper
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.
.testist ü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
--------- ---- -------
GRAPHICS Disk
Server Comment
--------- -------
WIN
mein win rechner
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).
Noch eine Voraussetzung, die mir gerade einfällt. Ihr Kernel muß
das "smbfs"-Filesystem unterstützen. Bei mir ist das der Fall,
wenn bei Ihnen nicht, kümmern Sie sich jetzt darum.
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
verscheidenesmbmountImplementationen 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).
Um das ganze zu verfeinern, un-mounten wir das share jetzt wieder. Dazu geben
wir den ganz simplen umount-Befehl ein
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 mitman
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.
Achtung: Übrigens habe ich festgestellt,
daß es Probleme beim Herunterfahren gibt, wenn das Remote-System noch
gemounted ist. Es sollte daher vor dem Herunterfahren unmounted werden. Am
besten man fügt in das Wirrwar der Bootscripte etwas entsprechendes ein.
Ich habe dafür jetzt folgende Scripte für den Bootablauf geschrieben
(war mehr gefummel als ich dachte, weil sich zB die smbmount Version 2.0.7
signifikant von 2.0.5 unterscheidet).
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
# mounten des Windows-Shares "graphics"
if test -d /home/frankie/graphics
then
echo "Das Windows-Share GRAPHICS ist bereits
gemounted"
exit 1
else
mkdir /home/frankie/graphics
chown frankie.users /home/frankie/graphics
smbmount //win/graphics /home/frankie/graphics
-o password=hansi,uid=512,gid=100,ro #achtung, ist eine! zeile
if test $? -ne 0
then
rmdir /home/frankie/graphics
echo "Windows-Share mounten
fehlgeschlagen"
exit 1
else
exit 0
fi
fi
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 frankiemit 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 graphicsgleich 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
# Dieses Skript unmounted das Windows-Share graphics wieder
if test -d /home/frankie/graphics
then
umount /home/frankie/graphics
rmdir /home/frankie/graphics
exit 0
else
exit 1
fi
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
# Dieses Script beendet Windows-Shares und nutzt
dabei
# /root/script/umountgraf
# Rueckgabewert fuer echo (in rc.config festgelegt)
return=$rc_done
case "$1" in
start)
echo -n "Kein automatisches mounten von Windows-Shares"
;;
stop)
echo -n "Shutting down Window-Share-Mounting: "
/root/script/umountgraf
echo -e "$return"
;;
status)
echo -n "Windows-Shares: Keine Information verfügbar"
;;
*)
echo "Usage: $0 {start|stop|status}"
exit 1
;;
esac
test "$return" = "$rc_done" || exit 1
exit 0
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.dmit
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.
(Wer will kann für unser mountgraf-Script auch noch einen symbolischen
Link in /usr/sbin anlegen, um den persönlichen Win-mount Befehl
immer im pfad zu haben)
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.
Ich starte also auf dem Windows Rechner (was so ziemlich das gleiche sein
sollte, wie auf meinem Bürorechner) ein FTP Programm. Ich wähle
mich als User Frankie entsprechend auf meine IP ein. Und siehe da
... das gewünschte Verzeichnis ist vorhanden. Nicht nur das, ich habe
vollen Zugriff darauf und kann Dateien herunterladen.
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 !
zurück
zur Linux Übersicht |