ubuntuusers.de

Hinweis: Dies ist ein statischer Snapshot unseres Wikis vom 25. März 2013 und kann daher nicht bearbeitet werden. Der aktuelle Artikel ist unter wiki.ubuntuusers.de zu finden.

Samba Client smbclient

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Dieser Artikel ist größtenteils für alle Ubuntu-Versionen gültig.

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

smbclient ist ein Konsolenclient für SMB/CIFS-Freigaben. Damit ist auch ein Zugriff auf Freigaben möglich, ohne diese in das Dateisystem einhängen zu müssen. Ursprünglich als Test- und Debugging-Tool konzipiert, ist smbclient auch zu einer universellen Shell geworden, deren Befehlsvorrat dem von ftp vergleichbar ist.

smbclient ist oft die erste Hilfe, wenn mit Samba Probleme auftreten. Es ist aber auch dann von Vorteil, wenn man nur schnell und unkompliziert auf der Konsole eine Datei von Samba oder Windows hoch- oder herunterladen möchte. Oder einfach, wenn man allgemein dem direkten Weg mit Konsole oder Terminal den Vorzug vor aufwändigen grafischen Hilsprogrammen gibt. Nicht umsonst nennt man smbclient gerne auch "das Schweizer Offiziersmesser für Samba".

Die wichtigsten Operationen, die sich mit smbclient ausführen lassen, sind:

  • Suche und Beseitigen von Fehlern

  • Übermitteln von Kommandos an einen Server

  • Interaktiver Datenaustausch (ähnlich ftp)

  • Interaktives Drucken mit über Samba freigegebenen Druckern

  • Austausch von Nachrichten im Netzwerk

Grob lässt sich die Anwendung von smbclient in zwei Bereiche einteilen:

  1. Eingabe und Übermittlung von Kommandos

  2. Arbeiten mit einer Freigabe (Share) über die smbclient-Shell

Es würde den Rahmen eines Wiki-Artikels sprengen, auf alle Optionen und Befehle von smbclient einzugehen. Deshalb werden hier nur einige gängige Beispiele aufgeführt.

Installation

smbclient befindet sich im Paket

  • smbclient

Dieses ist im Metapaket samba enthalten, kann aber auch getrennt installiert werden.

Kommandos eingeben

Über smbclient lassen sich sowohl Kommandos an den Client selbst als auch an einen CIFS-Server übergeben. Die genaue Syntax variiert je nach Kommando, entspricht aber im Wesentlichen folgendem Schema:

# allgemein:
smbclient Option Zusatzangabe
# Beispiel:
smbclient -R "host wins bcast" //notebook/Daten 

Die Option legt das Kommando fest. Sie kann (wie üblich) in Kurz- oder Langform angegeben werden. Die Zusatzangabe kann ein Parameter und/oder der Adressat des Kommandos sein und ggf. noch weitere sekundäre Optionen enthalten. Manche Optionen sind auch nur in Verbindung mit anderen Kommandos möglich. Das obige Beispiel legt die Reihenfolge beim Auflösen des Netbios-Name (name resolve order, Option -R) beim Zugriff auf die Freigabe //notebook/Daten fest.

Nach der Eingabe der Kommando-Zeile erfolgt eine verdeckte Abfrage des Samba-Passworts. Mit der Zusatzoption -N lässt sich die Passwort-Abfrage unterdrücken. Gibt man kein Passwort ein, dann wird das Kommando anonym übermittelt. Viele, aber nicht alle Kommandos können anonym ausgeführt werden. Nach der Ausführung des Kommandos kehrt smbclient automatisch wieder in die Linux-Shell zurück, was am Prompt zu erkennen ist.

Im Folgenden werden einige häufig gebrauchte Kommandos beschrieben.

Informationen eines SMB/CIFS-Servers abfragen

Um die Freigaben (Shares) eines Samba- oder Windows-Servers zu erfragen, kann folgender Befehl genutzt werden:

# allgemein:
smbclient -L //Server
# Beispiele:
smbclient -L //notebook/
smbclient -L //192.168.1.111/
smbclient -N -L //notebook/ 

Die Abfrage des Servers ist auch ohne Anmeldung (anonym) möglich. Unter Umständen sind dann aber nicht alle Freigaben zu sehen. Für den Server kann der Rechnername (netbios name) oder die IP angegeben werden. Man erhält dann eine Ausgabe folgender Art:

farber@PC-Farber:~$ smbclient -L //notebook
Password: 
Anonymous login successful
Domain=[HEIMNETZWERK] OS=[Unix] Server=[Samba 3.0.28a]

	Sharename       Type      Comment
	---------       ----      -------
	print$          Disk      Printer Drivers
	Daten           Disk      
	IPC$            IPC       IPC Service (Notebook server (Samba, Ubuntu))
	PDF             Printer   PDF
	DESKJET_930C    Printer   HEWLETT-PACKARD DESKJET 930C
Anonymous login successful
Domain=[HEIMNETZWERK] OS=[Unix] Server=[Samba 3.0.28a]

	Server               Comment
	---------            -------
	NOTEBOOK             Notebook server (Samba, Ubuntu)
	PC-FARBER            PC-Farber server (Samba, Ubuntu)

	Workgroup            Master
	---------            -------
	HEIMNETZWERK         PC-FARBER
farber@PC-Farber:~$ 

Anmeldung mit Benutzername und Kennwort

Mit der Option -U kann man sich persönlich anmelden. Das Kommando zur Anmeldung wird dem auszuführenden Kommando vorangestellt:

# allgemein:
smbclient -U benutzername -L //Server
# Beispiel:
smbclient -U Simon -L //notebook/ 

Der angegebene Benutzername muss nicht mit dem aktuellen Benutzernamen auf dem Client übereinstimmen, muss aber auf dem Server in der Samba-Datenbank eingetragen sein (mittels smbpasswd).

Arbeiten mit der smbclient-Shell

Mit der Befehlszeile

# allgemein
smbclient //Server/Freigabe
# Beispiele
smbclient //notebook/Daten
smbclient //192.168.1.111/Daten 

kann man sich mit einer Freigabe auf dem angegebenen Server verbinden und dort eine smbclient-Shell öffnen. Man erhält dann eine Ausgabe folgender Art:

farber@PC-Farber:~$ smbclient //notebook/Daten
Password: 
Domain=[NOTEBOOK] OS=[Unix] Server=[Samba 3.0.28a]
smb: \> 

Verzichtet man auf die Eingabe eines Passwortes, erfolgt die Anmeldung anonym, und man hat dann nur die Rechte, die bei der Freigabe einem Gast zukommen. Es ist aber auch möglich, sich mit Benutzername und Kennwort anzumelden:

smbclient -U Simon //notebook/Daten 

Der Prompt smb: \> macht deutlich, dass Samba eine Verbindung zwischen Linux und Windows herstellen möchte. In der smbclient-Shell ist für Pfadnamen sowohl die Windows-Syntax mit Backslash (\) als auch die Linux-Syntax mit Slash (/) zulässig.

Häufig benutzte Shell-Befehle

  • Folgende Befehle haben in der smbclient-Shell eine entsprechende Bedeutung wie in DOS oder in der Linux-Shell (Bash): cd, del, dir, history, ls, md, mkdir, more, rd, rm, rmdir.

  • get entfernter-Dateiname [lokaler-Dateiname]: kopiert eine Datei von der Freigabe auf den Client (Download). Fehlt die Angabe für lokaler-Dateiname, so wird der Dateiname beibehalten.

  • put lokaler-Dateiname [entfernter-Dateiname]: kopiert eine Datei vom Client auf die Freigabe (Upload). Fehlt die Angabe für entfernter-Dateiname, so wird der Dateiname beibehalten.

  • setmode Dateiname [+|\-]rsha: setzt DOS-Dateiattribute (wie DOS-Befehl attrib)

  • exit, quit: Rückkehr zur Linux-Shell (Bash).

Spezielle Befehle für die cifs-UNIX-Extensions

Werden sowohl vom Server als auch vom Client die cifs-UNIX-Extensions unterstützt (bei Windows-Servern nicht der Fall), dann lassen sich zusätzlich noch folgende Befehle verwenden:

  • chown, chmod, stat: wie Linux-Shell (Bash)

  • getfacl Dateiname: Ausgabe der Besitz- und Zugriffsrechte einer Datei

  • link Quelle Ziel: Erstellen eines Hardlinks auf dem Server

  • symlink Quelle Ziel: Erstellen eines symbolischen Links auf dem Server.

Besonderheiten der Syntax

Leerzeichen in Namen oder Parametern

Weil in Dateipfaden wahlweise Slash (/) oder Backslash (\) zulässig sind, kann ein Backslash nicht - wie in Linux üblich - zum "Escapen" von Leerzeichen oder anderen besonderen Zeichen verwendet werden. Zeichenketten, die solche Zeichen enthalten, müssen deshalb in (doppelte) Anführungszeichen gesetzt werden (Beispiel: cd \Daten\"neue Datei").

Syntaxfehler

Bei Syntaxfehlen verschiedener Art erfolgt in der smbclient-Shell meist die wenig informative Fehlermeldung

 Not enough '\' characters in service

Es lohnt sich, zu überlegen, ob der Fehler nicht vielleicht von ganz anderer Art ist.

Verwandte Befehle

Wenn man smbclient zur Fehlersuche und zum Beheben von Problemen einsetzt, benötigt man häufig noch weitere Informationen über das Netzwerk oder die Netzwerk-Verbindung. Hierbei sind folgende weiteren Befehle hilfreich:

  • findsmb - Gibt Informationen über die im Netzwerk vorhandenen Rechner und ihre Funktionen.

  • smbtree - Gibt in einer Baumstruktur gegliedert Informationen über das Netzwerk aus.

  • nmblookup - Gibt Informationen über die Auflösung von Compunternamen (netbios names) in IP-Adressen (Syntax: nmblookup [Optionen] netbios_name).

  • net - ein sehr vielseitiges Administrations-Programm in der Art des gleichnamigen Windows-Programms

Einzelheiten zu diesen Befehlen finden sich in den entsprechenden Manpages.

Nützlich sind oft auch die logfiles, die sich im Verzeichnis /var/log/samba/ befinden.

Artikel zu verwandten Themen

  • Samba - Grundlegende Informationen mit vielen weiteren Links

  • Samba Client cifs - Einbinden von Windows- und Samba-Freigaben ins lokale Dateisystem

  • FTP - ein Netzwerkprotokoll zur Übertragung von Dateien

Ergänzende Informationen

ubuntuusers.local › WikiSamba Client smbclient