| smbclient ist ein Software-Paket, welches auf jedem Linux-PC die Verwendung von Windows- oder Samba-Fileservern ermöglicht. | Jedes von einem Windows- oder Samba-Fileserver exportierte Dateisystem (Verzeichnisbaum) kann in Linux beliebig 'eingehängt' werden, Zugriffsrechte vorausgesetzt. |
LAMP
|
Standard-Server mit Linux - Apache - MySQL - PHP- Samba |
Samba
|
Windows-Fileserver auf Linux |
| SMB-Client | Linux-Zugriff auf einen entfernten Windows-Fileserver |
| Voraussetzungen | Ein Windows-Fileserver funktioniert und ist erreichnar |
| Einrichtung | Installation, Einrichtung und Netzwerk-Browser |
| Desktop-Link | Verknüpfung mit dem 'Netzlaufwerk' |
| Shell & smbclient | Das Konsolen-Programm smbclient |
| Windows-Share einhängen | Integration des Windows-Verzeichnisbaums in den Linux-PC |
| Systemstart | Windows-Verzeichnisbaum beim Systemstart automatisch einhängen |
SMB/CIFS-Client |
|
| ● Das Linux-Paket smbclient erlaubt es, jeden Linux-PC als Client eines Windows-PC, Windows-Servers oder → Samba-Servers so zu verbinnden. Damit kann der Linux-PC alle (freigegebenen) Dateien des Windows-PC verwenden. |
●
Die Rolle des 'gastgebenden' Windows-PC bezeichnet man als
Fileserver, jene des Linux-Gastes als
Client. ● Je nach den (am Windows-Fileserver) eingestellten Zugriffsrechten kann der Gast die entfernten Dateien lesen, öffnen, bearbeiten, ändern, erzeugen und löschen. |
|
● Linux-AnwenderInnen kennen diese Funktion unter dem Begriff 'einhängen' (mount): Damit kann man ganze Verzeichnis-Bäume des eigenen oder anderer Linux-PC an einer beliebigen Stelle zugänglich machen. |
●
Alle Funktionen zur Verbindung eines Linux-PC mit einem entfernten Windows-
oder → Samba-Fileserver
('Netzlaufwerk') sind entweder bereits im Software-Paket
samba (smb) enthalten oder getrennt davon im Paket
smbclient (evtl. auch smbfs ). Beide Pakete
sind in allen gängigen Linux-Distributionen enthalten. ● Um einen Linux-PC mit einem anderen Linux-PC zu verbinden, kann man auf den Umweg der Windows-Technik verzichten: In diesem Falle wird besser und schneller das Linux-Fileservice → NFS (Network File System) verwendet, welches in jeder gängigen Linux-Distribution enthalten ist. |
SMB(Server Message Block, NetBIOS) ist die ältere Bezeichnung des von Windows verwendeten FileServer-Dienstes. SMB verwendet → Port 139 zum Transport von Dateien und WINS (Windows Internet Naming Service) zur Namens-Auflösung (Zuordnung von → IP-Adressen ↔ Namen im lokalen Netzwerk.● Ältere Linux-Systeme verwenden smb als Vorsilbe und Wort für alle mit diesem Dienst zusammenhängenden Programme, Konfigurations-Dateien etc. |
CIFS(Common Internet File System) ist die Bezeichnung für eine neuere Version von SMB. CIFS verwendet Port 445.• Windows hält beide Begriffe von den AnwenderInnen fern, Linux unterscheidet zumindest bei der System-Administration streng zwischen SMB und CIFS. Die Unterstützung für SMB wird abgebaut, jene für CIFS nimmt zu. ● Neuere Linux-Systeme verwenden (meist aber nicht immer) cifs als Vorsilbe und Wort für alle mit diesem Dienst zusammenhängenden Programme und Dateien. |
Voraussetzungen |
|
|
Vor Einrichtung eines SMB-Clients müssen einige
Bedingungen erfüllt sein: ● Ein funktionierender Fileserver muss verfügbar sein. Dafür stehen zumindest 3 alternative Möglichkeiten offen: (1) Auf einem Linux-PC ist bereits ein Samba-Fileserver eingerichtet. Die Verbindung sollte getestet sein, d.h. sie haben bereits einen Windows-PC angemeldet und erfolgreich ein Netzlaufwerk erstellt. Details zu einem → Samba-Server. Notieren sie Name oder IP-Adresse des Samba-Server-PC und den 'Share-Namen' des Netzlaufwerks. Beispiel: Am Windows-PC haben sie ein Netzlaufwerk verbunden und im Feld 'Ordner' eingetragen: \\192.168.0.1\Public
In diesem Fall lautet die Server-Adresse 192.168.0.1
und der Share-Name Public Die gleichen Angaben können sie auch auf dem Linux-(Fileserver)-PC finden. Dazu müssen sie sich normalerweise als Administrator root anmelden. PC-Name und IP-Adresse ist auf SuSE-Linux unter YAST | Netzwerk-Geräte | Netzwerk-Karte eingetragen. Die Konfiguration des Samba-Fileservers ist in der Datei /etc/samba/smb.conf festgelegt. Die Namen aller freigegebenen 'Shares' sind dort in [] eingetragen. Außerdem sollten sie zumindest einen Samba-User angelegt haben, der zumindest eines der Shares auch benutzen darf (Details im → Samba-Kapitel). Im Zweifel legen sie auf beiden PC (am Linux-Server und am Windows-Client) einen Test-User mit dem gleichen Namen und dem gleichen Passwort (oder ohne Passwort) an. (2) Sie verfügen über einen Windows-Fileserver. Die Verbindung sollte getestet sein, d.h. sie haben bereits einen anderen Windows-PC an diesem Server angemeldet und dort erfolgreich ein Netzlaufwerk erstellt. Notieren sie Name oder IP-Adresse des Server-PC und den 'Share-Namen' des Netzlaufwerks (so wie oben beim Samba-Server gezeigt). |
(3) Sie verfügen über einen
beliebigen Windows-PC im lokalen Netzwerk (LAN). Auf jedem
Windows-PC kann man Verzeichnisse (Ordner) für die Verwendung im Netzwerk
freigeben. Damit wird der PC zu einem sehr einfachen Fileserver. • Erzeugen sie ein Verzeichnis (Neuer Ordner), z.B. C:\public und kopieren sie zumindest eine kleine Datei dorthin, damit man diese bei erfolgreicher Verbindung testen kann, z.B. eine Text-Datei C:\public\test.txt mit ein paar Worten Text. • Rechtsklicken sie das Verzeichnis C:\public und öffnen sie Eigenschaften | Freigabe Die weitere Vorgangsweise ist je nach Windows-Version verschieden - Für einen Test am besten ist die Freigabe für alle User ohne Beschränkung oder Passwort. Auf Windows-XP markieren sie z.B. 'Diesen Ordner im Netzwerk freigeben' und 'Netzwerkbenutzer dürfen Daten verändern'. Als Freigabe-Name (ShareName) tragen sie am besten den Verzeichnis-Namen ein, z.B. public • Nun benötigen sie noch den PC-Namen oder seine IP-(Netzwerk)-Adresse. Das erfahren sie am einfachsten mit einigen Konsolen-Befehlen. Öffnen sie ein Konsolen-Fenster (Eingabeaufforderung) bzw. starten sie das Programm (Start | Ausführen) cmd.exe. Geben sie diesen Befehl zur Ausgabe des PC-Namens:
C:\> set computername
Notieren sie den PC-Namen, z.B. MEINEDOSECOMPUTERNAME = MEINEDOSE Die IP-Adresse erhalten sie mit
C:\> ipconfig
Notieren sie die Adresse, z.B. 192.168.0.12.
Achtung: Wenn sich ihr Windows-PC in einem Netzwerk mit
→
DHCP-Server befindet, dann kann sich seine IP-Adresse gelegentlich ändern.
Verwenden sie in diesem Fall nur den Namen des PC.IP-Adresse . . . . . : 192.168.0.12 Kontrolle mit: C:\> net share
Der Share-Name und sein Pfad sollte in einer der Antwort-Zeilen angeführt sein.
|
● Test durch einen Windows-PC:Das ist keine Bedingung für smbclient, hat sich jedoch als Test bewährt. Schließlich ergibt ein Windows-Fileserver nur dann einen Sinn, wenn er im lokalen Netzwerk von mindestens einem Windows-Client verwendet wird.(1) Wenn sie über einen zusätzlichen Windows-PC im Netzwerk verfügen, dann sollten sie versuchen, von dort eine Verbindung zum Fileserver (s.o.) einzurichten: Öffnen sie ein beliebiges Verzeichnis, am besten den 'Arbeitsplatz' und erteilen sie den Menü-Befehl Extras | Netzlaufwerk verbinden. (2) Im Assistenten-Fenster wählen sie einen beliebigen noch nicht verwendeten Laufwerks-Buchstaben, z.B. T (für Test). (3) Im Feld 'Ordner' wird der Netzwerk-Pfad zum Fileserver eingestellt. Dazu versuchen sie zuerst den Button 'Durchsuchen'. Wenn der Server gefunden wird, dann wird der Pfad automatisch eingetragen. In kleinen privaten Netzwerken wird der Server nicht immer gefunden - In diesem Fall verwenden sie die Daten des Fileservers (s.o.) zur manuellen Eingabe des Pfades, z.B. \\susi\samba
In diesem Beispiel wird zu einem PC mit Namen susi verbunden,
auf dem das Share-Verzeichnis samba freigegeben ist.Alternativ können sie auch die IP-Adresse einsetzen: \\192.168.0.1\samba
Verbindet mit dem Server-PC der eingegebenen IP-Adresse.
|
(4) Markieren sie 'Verbindung bei der Anmeldung wiederherstellen'. In diesem Fall versucht der Windows-PC, sich bei ihrer Anmeldung (login) wieder mit dem Server zu verbinden. Klicken sie 'Verbindung unter anderem Benutzernamen herstellen', wenn sie sich Fileserver unter einem anderen user-Namen anmelden wollen als am Windows-PC. (5) Klicken sie 'Fertigstellen': Nun sollte die Verbindung klappen und das Netzlaufwerk in einem Fenster geöffnet werden. C:\> net use
In der Ausgabe-Liste muss das Netzlaufwerk mit seinem Buchstaben, Pfad, und
mit Status OK enthalten sein. Sie können beliebig viele Netzlaufwerke
verbinden, solange sie noch freie Laufwerks-Buchstaben haben.(6) Testen sie ihre Zugriffsrechte: Sie haben Lese-Rechte, wenn sie alle Dateien im 'entfernten Verzeichnis', d.h. am Server lesen können. Sie haben Schreib-Rechte, wenn sie eine neue Datei erstellen können. |
|
●
Die Netzwerk-Verbindung zum Fileserver muss funktionieren. Dazu öffnen sie am Linux-PC eine Konsole (Shell) und geben ein: # ping 192.168.0.1
Ersetzen sie 192.168.0.1 durch Name oder
Netzwerk-(IP)-Adresse ihres Fileservers. Oben finden sie unter 'funktionierender
Fileserver' Tipps, wie sie PC-Namen und Adressen herausfinden können.Als Antwort erhalten sie unendlich viele Zeilen - Beenden sie den Befehl durch Eingabe von Control-C oder durch Schließen des Shell-Fensters. So begrenzen sie die Ausführung auf 3 Versuche: # ping -c3 192.168.0.1
|
♣ Tipp: Versuchen sie einen ping in umgekehrte Richtung, d.h. vom Server zum Client. Wenn das funktioniert, dann ist vermutlich der Name oder die Adresse ihres Servers falsch. Ermitteln sie beide, z.B. wie oben angegeben. ♣ Tipp: Ein Hinweis auf eine funktionierende Hardware-Verbindung sind kleine Leuchtdioden direkt an den Netzwerk-Karten (PC-Rückseite) und am Verbindungs-Hub (wo die Netzwerk-Kabel von Server und Client angesteckt sind). Diese meist grünen LEDs leuchten (nur dann), wenn zumindest die Netzwerk-Hardware funktioniert. Allerdings bieten nicht alle Interface und Hubs diese Möglichkeit. |
Einrichtung von SMB-Client |
|
|
●
Kontrollieren sie die Installation des
Pakets smbclient In den meisten gängigen Linux-Distributionen ist es in der Grundversion bereits installiert. In SuSE | YAST | Software | Software installieren finden sie das Paket meist unter Produktivität | Netzwerk | Samba. |
Falls das Paket noch nicht installiert ist: ● Installieren sie das Paket smbclient (evtl. auch unter dem Namen smbfs ), allein oder als Samba-Bestandteil. (Details zur → Linux-Installation). Suchen sie auf neueren Versionen (SuSE >= 11) auch nach CIFS (ersetzt SMBFS). |
● Netzwerk-Dienste:Auf SuSE-Linux richten sie smbclient so ein:YAST starten, Menü Netzwerk-Dienste | Samba-Client. Tragen sie den Namen der Windows-Arbeitsgruppe oder -Domain ein. Dieser Name ist nicht unbedingt notwendig, sie können den Server auch per IP-Adresse erreichen. |
Runlevel Editor:Kontrollieren sie den Dienst: YAST | System | Runlevel Editor. Der smbclient erscheint in der Daemon-Liste als smbfs (SMB-Filesystem) sowie nmb und sollte mit 'Ja' / 'yes' aktiviert sein. Wenn noch kein entfernter SMB-Server definiert wurde, ist der Eintrag evtl. mit einem * Stern (unused) bezeichnet. |
● Netzwerk-Browser:Normalerweise richtet SuSE am Desktop einen 'Netzwerk-Browser' ein, ähnlich der Windows 'Netzwerk-Umgebung' neben dem 'Arbeitsplatz'. Falls nicht, kann man das Objekt selbst anlegen:Rechtsklick in den Desktop, Menü Neu | Datei | Verknüpfung. Als Name gibt man z.B. 'Netzwerk' ein, unter Adresse 'service:/', das Icon (anklicken) wählt man passend, z.B. 'slp'. |
Beim Öffnen zeigt das Fenster die Objekte 'Alle SLP-Dienste' und 'Windows-Netzwerk'. Im Windows-Netzwerk findet man einen Eintrag für jede gefundene Gruppe und Domain, darin deren Mitglieds-PC, deren Verzeichnisbaum, usw. Voraussetzung: Der LISA-Dienst (Lisa Network Scanner Demon) ist installiert und gestartet. |
Das Shell-Programm smbclient |
|
|
Verwenden sie das Konsolen-Programm /usr/bin/smbclient zum Test und zum Einrichten ihrer Windows-Verbindungen. Im Notfall können sie das Programm auch als Minimal-Variante zum Datei-Transfer verwenden, ähnlich wie das Shell-Programm ftp. ● Anzeige der angebotenen Shares:# smbclient --list 192.168.0.1
zeigt Informationen zum angegebenen SMB-Server an (ersetzen
sie 192.168.0.1 durch Name oder IP-Adresse des
SMB-Servers). Verlangt u.U. das Administrator-(root)-Passwort. Das ist sicherer als
der ↑
Netzwerk-Browser, denn damit erreicht man auch PC, die sich dort
nicht melden.
|
● Manuelle Verbindung mit einem Windows-Share:
# smbclient \\\\192.168.0.1\\sharename passwort
Jedes der Windows-eigenen backslash-\-Trennzeichen
muss mit je einem zusätzlichen '\' maskiert werden.# ls Danach kann man sich am Windows-Server bewegen, so ähnlich wie mit FTP (help eingeben). - Hier symbolisiert mit dem Befehl ls Es ist möglich, Dateien in beide Richtungen zu kopieren (Zugriffsrechte vorausgesetzt). Mühsam, klappt aber auch unter schwierigen Bedingungen. ● Hilfe zum Programm gibts auf der Shell-Konsole mit # man smbclient
|
Einhängen eines SMB-(Windows)-Shares |
|
|
Der Verzeichnisbaum des entfernten SMB-Fileservers lässt sich an jede beliebige
Stelle im Linux-Dateisystem 'einhängen' (mounten). Das ist die beste Lösung
für eine dauerhafte Einrichtung. Die hier vorgestellten Befehle werden in einem Konsolen-(Shell)-Fenster eingegeben. |
● mount-Punkt:Erstellen sie ein leeres Linux-Verzeichnis an jenem Punkt, wo das entfernte Windows-Volume eingehängt werden soll, z.B.# mkdir /srv/client/test
Das Verzeichnis sollte leer sein, denn sein Inhalt wird nach dem
mount durch den Windows-Verzeichnisbaum ersetzt !
|
● Manuelles mounten von CIFS/SMB-Shares:(auf SuSE <=10 ↓ smbfs verwenden: nächster Absatz)# mount -t cifs //192.168.0.1/sharename /srv/client/test
Option -t cifs bezeichnet das CIFS- bzw. SMB-Filesystem,
d.h. der mount-Befehl verwendet für alle nachfolgenden
Parameter das Hilfsprogramm smbmount //192.168.0.1 bezeichnet Name oder IP-Adresse des entfernten PC, /sharename den Namen, unter welcher das Windows-Share freigegeben ist. /srv/client/test ist der Pfad zu einem leeren (!) Linux-Verzeichnis, in welches das Windows-Filesystem eingehängt wird. Beim manuellen Mounten wird man als aktueller Linux-User angemeldet und nach dem Passwort gefragt. |
Hilfe zum Mount-Vorgang und seinen Optionen:
# man smbmount
# man mount.cifs ● Unmount mit # umount /srv/client/test
Damit wird die Verbindung mit dem Windows-Fileserver wieder gelöst.Test: Nach umount sollte der mount-Punkt wieder leer sein. ● Anzeige (Option 'list') aller eingehängten CIFS-Shares: # mount -l -t cifs
|
● Manuelles mounten von CIFS/SMBFS ohne Rückfrage:(auf SuSE <=10 ↓ smbfs verwenden)
# mount -t cifs -o username=name,password=geheim //192.168.0.1/sharename /srv/client/test
Name und Passwort werden im Klartext angegeben (Sicherheits-Problem !),
ohne " ".-Zeichen. Die zweite Zeile zeigt,
wie man ein öffentliches Share (ohne User-Name) verwendet. Das Passwort wird
durch ein CR-Zeichen ersetzt.# mount -t cifs -o password=\x0D //192.168.0.1/sharename /srv/client/test Ein Objekt wie //192.168.0.1/sharename wird in den Manuals [smb-]service genannt. Nur dann, wenn ein manueller Mount ohne Rückfrage erfolgreich abläuft, können sie das betreffende Windows-Share beim ↓ Systemstart automatisch einbinden ! |
|
● Manuelles mounten von CIFS-Shares:In neueren SuSE Systemen >=11 wird das SMB-Filesystem nicht mehr unterstützt. Auch einige der SMB-Werkzeug-Programme funktionieren nicht mehr. In den meisten Fällen kann man an Stelle des smbfs (SMB File System) das cifs (Common Internet File System) verwenden. |
Syntax: mount -t cifs //adresse/sharename /mountpoint # mount -t cifs //192.168.0.1/public /srv/client/test
|
● Manuelles mounten von CIFS ohne Rückfrage:
# mount -t cifs -o username=name,password=geheim //192.168.0.1/sharename /srv/client/test
Verwenden sie auf SuSE >=11 CIFS an Stelle von SMB.
# mount -t cifs -o password=\x0D //192.168.0.1/sharename /srv/client/test |
|
● TestWenn ein mount erfolgreich war, dann gelangt man beim Öffnen des Mount-Punktes direkt in das entfernte Windows-Verzeichnis.So öffnet man den Mount-Punkt, z.B.
# cd /srv/client/test
Die Verzeichnis-Liste (entspricht dem Windows-Befehl dir )
sollte angezeigt werden.
# ls |
● VerbreitungEin erfolgreich eingehängtes Share kann man an beliebiger Stelle weiter verwenden.• Um es z.B. einem Linux-User zur Verfügung zu stellen, erzeugt man einen SoftLink in dessen Home-Verzeichnis: # ln -s /srv/client/test /home/ich/win-test
Danach gelangt der Linux-User ich aus seinem
Home-Verzeichnis durch Öffnen von win-test
auf den entfernten Windows-Server (Zugangsrechte vorausgesetzt).• Wenn man den Link im Skelett anlegt, wird er automatisch für jeden neu angelegten Linux-User eingetragen: # ln -s /srv/client/test /etc/skel/win-test
|