Samba, 
2. Auflage

Samba, 2. Auflage

Von Jay Ts, Robert Eckstein, and David Collier-Brown
2. Auflage, August 2003
O'Reilly Verlag, ISBN: 3-89721-359-1
www.oreilly.de/catalog/samba2ger/

Dieses Buch ist unter der GNU Free Documentation License (FDL) erschienen. Bitte beachten Sie den Text der GNU FDL.


TOC PREV NEXT INDEX

Kapitel 5

Unix-Clients

In Kapitel 3 haben wir Ihnen gezeigt, wie Sie Windows-Systeme für den Zugriff auf freigegebene Ressourcen sowohl auf Windows- als auch auf Samba-Servern konfigurieren. Dies hat Ihnen vermutlich eine völlig neue Rechnerwelt eröffnet - eine, in der Sie jedes Mal ein Windows-System starten müssen, wenn Sie eine Datei zwischen Unix und Windows kopieren wollen! In diesem Kapitel werden wir Ihnen die »andere Seite« präsentieren - wie Sie von Ihrem bevorzugten Unix-System aus auf SMB-Freigaben zugreifen.

Es gibt drei Möglichkeiten, von Unix aus auf SMB-Ressourcen zuzugreifen, je nachdem, was für eine Version von Unix Sie verwenden. Ein Programm namens smbclient, das in der Samba-Distribution enthalten ist, kann benutzt werden, um eine Verbindung zu einer Freigabe im Netzwerk herzustellen. Das funktioniert ungefähr auf die gleiche Weise wie ftp beim Übertragen von Dateien von oder zu einer FTP-Site.

Falls Sie auf Ihrem System Linux betreiben, können Sie das smbfs-Dateisystem einsetzen, um SMB-Freigaben wie eine Plattenpartition oder ein NFS-Dateisystem direkt auf Ihr Linux-Dateisystem aufzusetzen (zu mounten). Alle Programme, die auf dem Linux-System laufen, können dann auf die SMB-Freigaben zugreifen und sie manipulieren: Kommando-Shells, grafische Desktop-Programme und Anwendungssoftware.

Auf einigen BSD-basierten Systemen, einschließlich Mac OS X, können zwei Dienstprogramme namens smbutil und mount_smbfs verwendet werden, um SMB-Server abzufragen und Freigaben zu mounten.

Bei anderen Unix-Varianten kann smbsh gebräuchliche Shell-Befehle wie cd, ls, mv, wc und grep aktivieren, um auf Dateien und Verzeichnisse auf SMB-Freigaben zuzugreifen und diese zu bearbeiten. Dies erweitert im Prinzip den Wirkungsbereich der Unix-Shell und der Dienstprogramme über das Unix-Dateisystem hinaus in das SMB-Netzwerk.

Alle Unix-Clients können auf Freigaben zugreifen, die von Windows-Systemen oder Samba-Servern angeboten werden. Wir haben Ihnen bereits gezeigt, wie Sie eine Freigabe auf einem Samba-Server einrichten, und könnten dies als Beispiel für die weiteren Ausführungen nutzen. Es ist aber viel lustiger, die Unix-Clients mit Freigaben zu nutzen, die von Windows-Systemen angeboten werden. Bevor wir also die Unix-Clients genauer betrachten, werden wir Ihnen schnell zeigen, wie Sie Dateifreigaben auf Windows 95/98/Me- sowie auf Windows NT/2000/XP-Systemen einrichten.

Dateien unter Windows 95/98/Me freigeben

Wenn Sie Dateien unter Windows 95/98/Me freigeben, können Sie Benutzer auf zwei verschiedene Arten authentifizieren. Standard ist Sicherheit auf Freigabeebene. Diese Methode ist einfach zu einzusetzen. Sie ist jedoch nicht allzu sicher. Außerdem verlangt sie von den Benutzern, Kennwörter einzugeben, wenn diese sich an einer Freigabe anmelden. Ein besseres Sicherheitsmodell bietet Sicherheit auf Benutzerebene. Diese kann verwendet werden, wenn Sie die Benutzerauthentifizierung in Ihrem Netzwerk durch einen Samba- oder einen Windows NT/2000-Server erledigen lassen.

Um die Art der Zugriffskontrolle für Ihr System zu konfigurieren, öffnen Sie die Systemsteuerung, doppelklicken auf das Netzwerk-Symbol und klicken dann auf die Registerkarte Zugriffssteuerung. Sie sollten nun den Dialog aus Abbildung 5-1 sehen.
Abbildung 5-1
Die Registerkarte Zugriffssteuerung im Windows 98-Systemsteuerungsfenster Netzwerk

Klicken Sie je nach gewünschter Sicherheitsstufe auf den Radio-Button Zugriffssteuerung auf Freigabeebene oder Zugriffssteuerung auf Benutzerebene. Wenn Sie Zugriffssteuerung auf Benutzerebene auswählen, müssen Sie außerdem den Namen Ihrer Arbeitsgruppe oder Windows NT-Domäne angeben. Starten Sie anschließend den Rechner neu.

Um einen Ordner freizugeben, klicken Sie mit der rechten Maustaste auf sein Symbol und wählen Freigabe... Dies öffnet die Registerkarte Freigabe des Eigenschaften-Dialogs dieses Ordners. Klicken Sie auf den Radio-Button Freigeben als: und setzen Sie einen Namen für die Freigabe (vorgegeben ist der Name des Ordners) sowie eine Beschreibung ein, die den Benutzern angezeigt werden soll. Falls Sie nicht wollen, dass die Freigabe in der Netzwerkumgebung der anderen Windows-Clients zu sehen ist, wählen Sie einen Namen, der mit einem Dollar-Zeichen endet ($).

Abbildung 5-2 zeigt, wie die Freigabe-Registerkarte des Eigenschaften-Dialogs des Ordners aussieht, wenn Sie Sicherheit auf Freigabeebene verwenden. Die Sicherheitseinstellungen sind sehr einfach. Sie können einen Radio-Button für schreibgeschützten oder vollständigen (Lesen/Schreiben) Zugriff wählen oder die Zugriffsrechte des Benutzers (entweder schreibgeschützt oder Lesen/Schreiben) in Abhängigkeit vom verwendeten Kennwort einstellen. Entsprechend Ihrer Auswahl werden Sie aufgefordert, ein oder mehrere Kennwörter für die Freigabe zuzuweisen.
Abbildung 5-2
Das Register Freigabe des Eigenschaften-Dialogs des Ordners mit Sicherheit auf Freigabeebene

Ist Ihr System mit Sicherheit auf Benutzerebene konfiguriert, sieht die Registerkarte Freigabe des Eigenschaften-Dialogs des Ordners aus wie in Abbildung 5-3. Wie Sie sehen können, haben wir eine Freigabe namens DATA erzeugt und dann über Hinzufügen... Zugriffsrechte zugewiesen, die den schreibgeschützten Zugriff für alle Benutzer der Domäne sowie vollständigen Zugriff für jay gewähren.
Abbildung 5-3
Das Register Freigabe des Eigenschaften-Dialogs des Ordners mit Sicherheit auf Benutzerebene

Wenn Sie die Einstellungen für die Freigabe getroffen haben, klicken Sie auf den OK-Button. Die Freigabe wird den Benutzern auf den Netzwerk-Clients zur Verfügung gestellt. Sie können die Freigabe in der Netzwerkumgebung der Windows-Clients im Netzwerk sehen, es sei denn, der Name der Freigabe endet mit einem Dollar-Zeichen. Außerdem können Sie nun die in diesem Kapitel beschriebenen Unix-Clients verwenden, um eine Verbindung zu der Freigabe herzustellen.

Dateien unter Windows NT/2000/XP freigeben

Um eine Dateifreigabe unter Windows NT/2000/XP zu erzeugen, müssen Sie sich zuerst als ein Mitglied der Gruppen der Administratoren, Hauptbenutzer oder Server-Operatoren am System anmelden. Klicken Sie mit der rechten Maustaste auf einen Ordner, den Sie freigeben wollen, und klicken Sie im sich öffnenden Pop-up-Menü auf Freigabe... Die Registerkarte Freigabe des Eigenschaften-Dialogs des Ordners erscheint (siehe Abbildung 5-4). Klicken Sie auf den Radio-Button Diesen Ordner freigeben.
Abbildung 5-4
Das Register Freigabe des Eigenschaften-Dialogs des Ordners unter Windows 2000

Freigabename: ist standardmäßig der Name des Ordners; Sie können den Namen jedoch ändern. Ein Grund, einen anderen Namen für die Freigabe zu verwenden, wäre, dass die Freigabe nicht in Suchlisten auftauchen soll (die beispielsweise von der Netzwerkumgebung angezeigt werden). Dazu lassen Sie den Freigabenamen mit einem Dollar-Zeichen enden ($). Sie können im Kommentar:-Bereich eine Beschreibung der Freigabe angeben. Die Beschreibung ist für die Benutzer der Netzwerk-Clients sichtbar und hilft ihnen dabei, den Inhalt der Freigabe zu verstehen.

Durch Anklicken des Berechtigungen-Buttons können Sie auf Benutzerbasis Zugriffsrechte für die Freigabe festlegen. Dies entspricht der Sicherheit auf Benutzerebene unter Windows 95/98/Me. Microsoft empfiehlt für Windows NT/2000/XP, die Freigaberechte so einzustellen, dass allen Benutzern voller Zugriff gewährt wird, wobei die Rechte im Dateisystem auf Dateibasis mit Hilfe von Zugriffskontrolllisten (ACLs) gesteuert werden. Die den Netzwerk-Clients tatsächlich gewährten Rechte stellen eine Kombination aus den Freigaberechten und den Dateizugriffsrechten dar. Um die ACL für den Ordner zu bearbeiten, klicken Sie auf das Register Sicherheitseinstellungen. Nähere Informationen über ACLs finden Sie im Abschnitt »Windows NT/2000/XP-ACLs« in Kapitel 8.

Sie können die Zahl der Benutzer begrenzen, die sich gleichzeitig an einer Freigabe anmelden dürfen. Dazu verwenden Sie den Radio-Button Benutzerbegrenzung:. Der Button Neue Freigabe erlaubt es Ihnen, mehrere Dateifreigaben für den gleichen Ordner zu erzeugen, die jeweils ihren eigenen Namen, Kommentar, ihre eigene Benutzerbegrenzung sowie andere Parameter besitzen.

Wenn Sie fertig sind, klicken Sie auf den OK-Button. Der Ordner steht nun den anderen Clients im Netzwerk zur Verfügung.

smbclient

Das Samba-Team stellt smbclient als Grundbestandteil der Samba-Suite bereit. Auf den ersten Blick scheint es sich dabei nur um eine primitive Schnittstelle zum SMB-Netzwerk zu handeln, tatsächlich ist smbclient jedoch ein sehr vielseitiges Werkzeug. Es kann eingesetzt werden, um Freigaben auf dem Server zu durchsuchen, Konfigurationen zu testen, Fehler zu suchen, auf freigegebene Drucker zuzugreifen, freigegebene Daten zu sichern und administrative Aufgaben in Shell-Skripten zu automatisieren. Und im Gegensatz zu smbfs und smbsh funktioniert smbclient auf allen Unix-Varianten, die Samba unterstützen.

In diesem Kapitel konzentrieren wir uns vor allem auf smbclient als interaktive Shell, das heißt, wir verwenden seine ftp-artigen Befehle, um auf freigegebene Verzeichnisse im Netzwerk zuzugreifen. Die Verwendung von smbclient für den Zugriff auf Drucker und die Durchführung von Backups wird in Kapitel 10 behandelt.

Eine vollständige Referenz zu smbclient finden Sie in Anhang C.

Dienste auflisten

Die Option -L kann zusammen mit smbclient verwendet werden, um die Ressourcen auf einem Computer aufzulisten. Angenommen, der Samba-Server ist so konfiguriert, dass er die Rolle des Hauptsuchdiensts übernimmt. Wir können dann eine Liste der Computer in der Domäne oder Arbeitsgruppe beziehen:

$ smbclient -L toltec
 
added interface ip=172.16.1.1 bcast=172.16.1.255 nmask=255.255.255.0
 
Password:
 
Domain=[METRAN] OS=[Unix] Server=[Samba 2.2.5]
 

 
	Sharename      Type      Comment
 
	---------      ----      -------
 
	test           Disk      Bitte nur zu Testzwecken verwenden
 
	IPC$           IPC       IPC Service (Samba 2.2.5)
 
	ADMIN$         Disk      IPC Service (Samba 2.2.5)
 

 
	Server               Comment
 
	---------            -------
 
	MAYA                 Windows 98
 
	MIXTEC               Samba 2.2.5
 
	TOLTEC               Samba 2.2.5
 
	ZAPOTEC              
 

 
	Workgroup            Master
 
	---------            -------
 
	METRAN               TOLTEC
 

In der Spalte mit der Bezeichnung »Server« stehen maya, mixtec und zapotec zusammen mit toltec, dem Samba-Server. Die Dienste auf toltec sind unter »Sharename« aufgeführt. Die Freigaben IPC$ und ADMIN$ sind Standard-Windows-Dienste, die der Netzwerkkommunikation sowie administrativen Aufgaben dienen. Bei test handelt es sich um das Verzeichnis, das wir in Kapitel 2 als Freigabe angelegt haben.

Nachdem Sie nun die Namen der Computer in der Domäne erfahren haben, können Sie sich die Dienste auf einem beliebigen dieser Computer ausgeben lassen, wie beispielsweise die von maya, einer Windows 98-Workstation, angebotenen Dienste:

$ smbclient -L maya
 
added interface ip=172.16.1.1 bcast=172.16.1.255 nmask=255.255.255.0
 
Password:
 

 

 
	Sharename      Type      Comment
 
	---------      ----      -------
 
	PRINTER$       Disk      
 
	HP             Printer   HP 932C auf Maya
 
	D              Disk      D: auf Maya
 
	E              Disk      E: auf Maya
 

 
	ADMIN$         Disk      
 
	IPC$           IPC       Remote Inter Process Communication
 

 
	Server               Comment
 
	---------            -------
 

 
	Workgroup            Master
 
	---------            -------
 

Ein freigegebener Drucker ist an maya angeschlossen, deshalb sehen wir den administrativen Dienst PRINTER$ sowie die Freigabe HP für den Drucker selbst. Ebenfalls auf maya befinden sich die Freigaben D und E, die über das Netzwerk den Zugriff auf mayas Laufwerke D: und E: erlauben. Es ist normal, dass die Abschnitte Server und Workgroup leer sind, wenn die Dienste auf einem Windows-Client aufgelistet werden.

smbclient authentifizieren

Wie jeder andere SMB-Client muss auch smbclient einen Benutzernamen und ein Kennwort angeben, wenn es sich in einer Domänenumgebung authentifiziert oder einen Samba-Server anspricht, der mit Sicherheit auf Benutzerebene eingerichtet wurde. In einer Arbeitsgruppenumgebung ist zumindest ein Kennwort nötig, wenn eine Verbindung zu einer mit Kennwort geschützten Ressource aufgenommen wird.

Standardmäßig verwendet smbclient den Benutzernamen des ausführenden Benutzers und fragt dann nach einem Kennwort. Falls Sie smbclient oft verwenden, haben Sie vermutlich irgendwann keine Lust mehr, jedes Mal Ihr Kennwort eingeben zu müssen.

smbclient unterstützt einige alternative Methoden zum Angeben von Benutzernamen und Kennwort. Das Kennwort kann auf der Kommandozeile eingegeben werden:

$ smbclient //maya/e jayspassword
 

Sowohl der Benutzername als auch das Kennwort können ebenfalls mit Hilfe der Option -U angegeben werden, wobei Benutzername und Kennwort durch ein Prozentzeichen (%) voneinander getrennt werden:

$ smbclient //maya/e -U kelly%kellyskennwort
 

Diese Methode ist nützlich, wenn Sie an Ihrem System unter einem anderen Zugang angemeldet sind, der keinen Zugang auf Samba besitzt, oder wenn Sie testen wollen, wie Ihre Konfiguration einen anderen Benutzer behandelt. Bei beiden Methoden können Sie vermeiden, jedes Mal den Benutzernamen und/oder das Kennwort eingeben zu müssen, wenn Sie smbclient ausführen, indem Sie einen Alias für den Befehl erzeugen oder eine Shell-Funktion oder ein Shell-Skript einsetzen. Mit der bash-Shell ist es zum Beispiel möglich, eine solche Funktion zu definieren:

smbcl(  )
 
{
 
	smbclient $* -U jay%jayskennwort
 
}
 

Fügen Sie die Definition dem Start-Skript der Shell hinzu (für die bash wäre dies ~/.bash_profile), beeinflusst die Definition alle folgenden Shell-Sitzungen.

Eine andere Methode, die verwendet werden kann, um sowohl den Benutzernamen als auch das Kennwort anzugeben, besteht darin, die Umgebungsvariablen USER und PASSWD zu setzen. Sie setzen die Umgebungsvariable USER entweder mit Hilfe des Formats benutzername%kennwort, oder Sie setzen die Umgebungsvariable USER auf den Benutzernamen und PASSWD auf das Kennwort des Benutzers.

Es ist außerdem möglich, eine Credentials-Datei zu erzeugen, die den Benutzernamen auf der ersten Zeile und das Kennwort auf der zweiten Zeile enthält:

username = jay
 
password = jayskennwort
 

Anschließend wird smbclient mit der Option -A aufgerufen, mit der der Name der Datei festgelegt wird:

$ smbclient //maya/e -A ~/.smbpw
 

Von den in diesem Abschnitt beschriebenen Methoden ist nur eine wirklich sicher. Das ist die Standardmethode, bei der smbclient nach dem Kennwort fragen darf und das Kennwort dann ohne Wiedergabe auf dem Bildschirm eingetippt wird.
Wenn Sicherheit für Sie eine gewisse Wichtigkeit besitzt, sollten Sie es auf jeden Fall vermeiden, Ihr Kennwort auf der Kommandozeile anzugeben, da es sowohl für diejenigen, die Ihnen zufällig beim Tippen über die Schulter blicken, als auch jemanden, der die Befehls-History Ihrer Shell durchsucht, möglich ist, Ihr Kennwort auszuspähen.
Falls Sie Ihr Samba-Kennwort in einer Credentials-Datei, einer Shell-Startdatei oder einem Shell-Skript aufbewahren, müssen Sie sicherstellen, dass Dateizugriffsrechte es anderen Benutzern verbieten, die Datei zu lesen oder zu schreiben. (Benutzen Sie den Oktalwert 0600 für die Zugriffsrechte.) Sicherheitsexperten legen ihre Kennwörter niemals in Dateien ab, die Nicht-root-Benutzern gehören oder auf die von jemand anderem als dem Superuser zugegriffen werden kann. Als Teil ihrer Sicherheitsrichtlinien verbieten einige Einrichtungen das Speichern von Kennwörtern in Dateien. Sie sollten deshalb zuerst die Regeln prüfen, bevor Sie diese Methode anwenden.
Die Authentifizierungsmethode, die die Umgebungsvariablen USER und PASSWD verwendet, ist nicht sicherer. Umgebungsvariablen werden üblicherweise entweder auf der Kommandozeile oder in einer oder mehreren der Startdateien der Shell gesetzt. Diese Methode weist also die bereits genannten Schwachstellen auf. Darüber hinaus besitzt jedes Programm, das vom Benutzer ausgeführt wird, Zugriff auf die Umgebungsvariablen der Shell, wodurch ein Trojaner-Angriff auf die Variable PASSWD wirklich einfach gemacht wird!

Eine interaktive smbclient-Sitzung

Ein gebräuchlicher Anwendungsfall für smbclient ist sein Einsatz als ftp-artige Shell zum Zugriff auf SMB-Ressourcen im Netzwerk. Um eine Sitzung zu beginnen, muss smbclient auf der Kommandozeile die UNC einer Ressource im Netzwerk geliefert werden (die Sie mit Hilfe der Option -L ermitteln können):

$ smbclient //maya/e
 
added interface ip=172.16.1.3 bcast=172.16.1.255 nmask=255.255.255.0
 
Password: 
 
smb: \>
 

Schrägstriche werden von smbclient für die UNC der Freigabe akzeptiert, wodurch sich das Eingeben der UNC auf der Kommandozeile vereinfacht. Backslashes können ebenfalls benutzt werden. Sie müssen jedoch geschützt werden, es ist daher etwas aufwändiger, '\\maya\e' oder \\\\maya\\e einzutippen. Nach dem Anmelden an der Freigabe zeigt smbclient den smb: \>-Prompt und wartet auf die Eingabe eines Befehls. Die Befehle sind den Ihnen vertrauten Befehlen in ftp sehr ähnlich und gleichen in gewisser Weise auch Unix-Shell-Befehlen. Um eine Liste der smbclient-Befehle zu erhalten, verwenden Sie den Befehl help:

smb: \> help
 
ls             dir            du             lcd            cd             
 
pwd            get            mget           put            mput           
 
rename         more           mask           del            open           
 
rm             mkdir          md             rmdir          rd             
 
prompt         recurse        translate      lowercase      print          
 
printmode      queue          cancel         quit           q              
 
exit           newer          archive        tar            blocksize      
 
tarmode        setmode        help           ?              history        
 
!
 

Einige Befehle in der gezeigten Liste sind Synonyme für andere Befehle. So ist beispielsweise der Befehl ? ein Synonym für help. Sie können diesem Befehl den Namen eines anderen Befehls als Argument übergeben, um eine Zusammenfassung über die Funktionsweise des Befehls zu bekommen:

smb: \> ? ls
 
HELP ls:
 
        <mask> list the contents of the current directory
 

Der Begriff <mask> bezieht sich auf ein Suchmuster, das üblicherweise in Unix-Shells und Dienstprogrammen zu finden ist. So listet zum Beispiel

smb: \> ls *doc
 
  ms-ProfPol-wp.doc                   A      131  Tue Dec 18 09:12:34 2002
 
  smbclient.doc                       A    33969  Mon Dec 10 20:22:24 2002
 
  smbmount.doc                        A     7759  Mon Dec 10 20:20:00 2002
 

 
                      48590 blocks of size 524288. 40443 blocks available
 

alle Dateien auf, die im aktuellen Verzeichnis auf dem entfernten System auf »doc« enden. Die erste Spalte in dem Listing zeigt den Dateinamen. Von links nach rechts folgen die MS-DOS-Attribute der Datei, die Größe und der Zeitpunkt der letzten Änderung.

Wie jedes andere Unix-Dienstprogramm besitzt auch smbclient ein Arbeitsverzeichnis auf dem lokalen Host. Außerdem besitzt es ein weiteres aktuelles Verzeichnis auf der entfernten SMB-Share. Bei smbclient wird der Befehl cd verwendet, um im entfernten System zu navigieren:

smb: \> cd trans   
 
smb: \trans\>
 

Beachten Sie, wie die Änderung des Prompts das neue aktuelle Arbeitsverzeichnis anzeigt. Um auf dem lokalen System das aktuelle Verzeichnis zu wechseln, verwenden Sie den Befehl lcd:

smb: \trans\> lcd /u/snd
 
the local directory is now /u/snd
 

Die meisten der Befehle von smbclient dienen dazu, Operationen auf entfernten Dateien und Verzeichnissen auszuführen. Es gibt keinen Befehl zum Auflisten des Inhalts des lokalen Verzeichnisses. Allerdings erlaubt smbclient ein Shell-Escape. Jeder Befehl, dem ein Ausrufezeichen vorangestellt (!) ist, wird als Shell-Befehl interpretiert und in einer Subshell auf dem lokalen System ausgeführt. Ein Beispiel:

smb: \trans\> ! ls -l
 
total 16
 
drwxrwxr-x    2 jay      jay          4096 Jan 10 14:46 dr220-fet
 
drwxrwxr-x    2 jay      jay          4096 Sep 22 12:16 dr220-tube
 
-rw-rw-r--    1 jay      jay           131 Jan 10 02:22 readme.txt
 
drwxrwxr-x    7 jay      jay          4096 Jan 10 02:19 xl1
 

Dieser Befehl listet den Inhalt von /u/snd auf. Wenn smbclient-Befehle zum Arbeiten auf dem entfernten System und geschützte Shell-Befehle zum Arbeiten auf dem lokalen System verwendet werden, ist es möglich, Daten auf beiden Systemen zu manipulieren, ohne smbclient beenden oder ein anderes Shell-Fenster öffnen zu müssen.

Die Übertragung von Dateien wird mit Hilfe der Befehle get und put erledigt. Der get-Befehl überträgt eine einzelne Datei vom entfernten auf das lokale System. put wiederum kopiert eine Datei vom lokalen auf das entfernte System. Der folgende Befehl kopiert zum Beispiel die Datei readme.txt auf die SMB-Freigabe:

smb: \trans\> put readme.txt
 
putting file readme.txt as \trans\readme.txt (127.9 kb/s) (average 10.7 kb/s)
 

Im Gegensatz zu ftp kennt smbclient keine ascii- und binary-Befehle zum Einstellen des Typs der zu übertragenden Datei. Bevor Sie eine Textdatei von einem Unix-System auf ein Windows- oder Macintosh-System übertragen, sollten Sie daher den GNU-Befehl unix2dos einsetzen, um die Newlines in der Datei in der Weise neu zu formatieren, dass sie mit dem CRLF-Standard (Carriage Return Linefeed) funktionieren:
$ unix2dos text_file >text_file.txt
 
Anschließend übertragen Sie die CRLF-formatierte Version. Nach dem Übertragen einer Textdatei von einem Windows- oder Macintosh-System nach Unix können Sie mit dem GNU-Befehl dos2unix die entgegengesetzte Operation ausführen:
$ dos2unix text_file.txt >text_file
 

Um mehr als eine Datei mit einem einzigen Befehl zu übertragen, verwenden Sie die Befehle mget und mput, die eine Liste mit Dateinamen auf der Kommandozeile akzeptieren. Die Liste kann angegeben werden, indem Sie die durch Leerzeichen getrennten Dateinamen auf der Kommandozeile eintippen. Es ist auch möglich, wie in Unix-Shell-Befehlen eine Gruppe von Dateien mit einem Muster festzulegen. Der Befehl:

smb: \trans\> mget plain/*
 

kopiert alle Dateien aus dem Verzeichnis plain auf der SMB-Freigabe in das aktuelle Verzeichnis auf dem lokalen System. Standardmäßig fragt smbclient bei jeder Datei, ob Sie sie kopieren wollen:

smb: \trans\> mget plain/*
 
Get file tomm.wav? n
 
Get file toml.wav? n
 
Get file tomh.wav? n
 
Get file snare.wav? n
 
Get file rim.wav? n
 
Get file handclap.wav? n
 
Get file bassdrum.wav? n
 

Falls Sie sich sicher sind, dass Sie alle Dateien kopieren wollen, können Sie diese Nachfragen mit dem Befehl prompt deaktivieren:

smb: \trans\> prompt
 
prompting is now off
 

Durch die Angabe eines Verzeichnisnamens kopiert smbclient standardmäßig nicht den Inhalt des Verzeichnisses. Um den gesamten Inhalt eines Verzeichnisses zu übertragen, das Sie bei den Befehlen mput oder mget festgelegt haben, müssen Sie zuerst den Befehl recurse einsetzen:

smb: \trans\> recurse
 
directory recursion is now on
 

 

Wenn Sie nun alles mit den Befehlen prompt und recurse eingerichtet haben, können Sie folgendermaßen ein Verzeichnis kopieren:

smb: \trans\> mget acc
 
getting file tomm.wav of size 55494 as tomm.wav (2580.6 kb/s) (average 2087.3 kb/s)
 
getting file toml.wav of size 57220 as toml.wav (2660.9 kb/s) (average 2167.6 kb/s)
 
getting file tomh.wav of size 55936 as tomh.wav (2601.2 kb/s) (average 2220.8 kb/s)
 
getting file snare.wav of size 22132 as snare.wav (1200.7 kb/s) (average 2123.7 kb/s)
 
getting file rim.wav of size 8314 as rim.wav (1623.8 kb/s) (average 2110.8 kb/s)
 
getting file handclap.wav of size 14180 as handclap.wav (1978.2 kb/s) (average 2106.2 kb/s)
 
getting file bassdrum.wav of size 6950 as bassdrum.wav (2262.3 kb/s) (average 2108.5 kb/s)
 

Die Verzeichnisrekursion gilt für alle Befehle. Wird ein ls-Befehl ausgeführt, während die Verzeichnisrekursion aktiviert ist, werden alle Dateien in dem Verzeichnisbaum aufgeführt. Um die Verzeichnisrekursion wieder zu deaktivieren, geben Sie einfach den Befehl noch einmal ein. Gleichzeitig wollen Sie vermutlich das Nachfrageverhalten wieder in seinen ursprünglichen Zustand zurückversetzen:

smb: \trans\> recurse
 
directory recursion is now off
 
smb: \trans\> prompt
 
prompting is now on
 

Es gibt noch weitere smbclient-Befehle, die Sie nützlich finden werden. Der Befehl mkdir kann ein Verzeichnis anlegen, rmdir löscht ein Verzeichnis, rm löscht eine Datei, und rename ändert den Namen einer Datei. Diese Befehle verhalten sich ähnlich wie ihre Gegenstücke auf der Unix-Shell. Anhang C enthält eine vollständige Referenz zu smbclient und seinem Befehlssatz.

Um smbclient zu beenden, verwenden Sie die Befehle exit oder quit:

smb: \trans\> quit 
 

Mit smbclient programmieren

Die Option -c von smbclient erlaubt die Übergabe einer Liste mit Befehlen auf der Kommandozeile. Um die Datei \\maya\e\trans\readme.txt nach /u/snd/readme.txt zu kopieren, könnten wir diesen Befehl verwenden:

$ smbclient //maya/e -c "lcd /u/snd; cd trans; get readme.txt" -A ~/.smbpw
 

Alles, was smbclient wissen muss, um die Operation auszuführen, wurde in diesem Befehl angegeben. Es gibt keine interaktive Sitzung. Ein solcher Befehl kann daher in ein Shell-Skript oder ein Programm in einer anderen Programmiersprache aufgenommen werden.

Wenn Sie smbclient auf diese Weise einsetzen, ist es möglich, mit Hilfe von Shell-Funktionen, Skripten oder Aliasen eigene Befehle zu erzeugen. Nehmen Sie zum Beispiel an, Sie brauchen einen Befehl, um eine kurze Liste mit Dateien in einem freigegebenen Verzeichnis zu drucken. In der Liste sollen nur die Namen der Dateien auftauchen. Mittels einer bash-Funktion könnten Sie den Befehl smbls definieren:

smbls(  )
 
{
 
        share=`echo $1 | cut -d '/' -f '1-4'`
 
        dir=`echo $1 | cut -d '/' -f '5-'`
 
        smbclient $share -c "cd $dir; ls" -A ~/.smbpw | \
 
						grep "^  " | cut -d ' ' -f 3 - | sort
 
}
 

Anschließend setzen Sie smbls folgendermaßen ein:

$ smbls //maya/e
 
CD-images
 
lectures
 
ms-ProfPol-wp.doc
 
profile-map
 
readme.txt
 
RECYCLED
 
smbclient.doc
 
smbmount.doc
 
smbsh.txt
 
trans
 
$ smbls //maya/e/lectures
 
.
 
..
 
lecture1.mp3
 
lecture2.mp3
 
lecture3.mp3
 
lecture4.mp3
 
lecture5.mp3
 
lecture6.mp3
 
lecture7.mp3
 
lecture8.mp3
 
lecture9.mp3
 

Ein anderes Anwendungsgebiet von smbclient in Skripten besteht in der Ausführung administrativer Aufgaben. Stellen Sie sich eine Gruppe von Benutzern auf Windows-Clients vor, die als Teil eines Projekts, an dem sie arbeiten, Dateien gemeinsam nutzen. Anstatt zu erwarten, dass diese Benutzer die Erstellung täglicher Backups miteinander koordinieren, könnten Sie ein Skript schreiben, das die Freigabe auf den Samba-Server kopiert. Das Skript würden Sie dann jede Nacht als cron-Job ausführen. Das Verzeichnis auf dem Samba-Server könnte ebenfalls freigegeben werden. Dadurch würde es den Benutzern erlaubt, ein Backup einer ihrer Dateien zu beziehen, ohne extra den Administrator belästigen zu müssen.

Backups mit smbclient

Ein wichtiges Einsatzgebiet von smbclient ist die Erstellung und Wiederherstellung von Backups von SMB-Dateifreigaben. Die Backup-Dateien, die smbclient schreibt, liegen im tar-Format vor. Dadurch ist es einfach, mit ihnen zu arbeiten und sie auf andere Unix-Versionen zu übertragen. Die Benutzung von smbclient auf einem Unix-Server zum Erstellen von Netzwerk-Backups kann zu einer zentraleren und leichter zu verwaltenden Lösung zum Erhalten der Datenintegrität führen, da sowohl SMB-Freigaben als auch NFS-Dateisysteme auf dem gleichen System gesichert werden können.

Es gibt zwei Wege, um mit smbclient Backups auszuführen. Wenn Sie eine komplette Freigabe sichern, besteht die einfachste Methode darin, die Option -Tc auf der Kommandozeile einzugeben:

# smbclient //maya/e -A samba-domain-pw -Tc >maya-e.tar
 

Dies erzeugt ein tar-Archiv der Freigabe \\maya\e in der Datei maya-e.tar. Mit der Option -D kann an Stelle der ganzen Freigabe ein Verzeichnis aus der Freigabe gesichert werden:

# smbclient //maya/e -A samba-domain-pw -D trans -Tc >maya-e.tar
 

Dies veranlasst smbclient, in das Arbeitsverzeichnis trans der Freigabe \\maya\e zu wechseln, bevor mit dem Backup begonnen wird. Es ist auch möglich, den tar-Befehl von smbclient im interaktiven Modus zu verwenden:

# smbclient //maya/e 
 
added interface ip=172.16.1.3 bcast=172.16.1.255 nmask=255.255.255.0
 
Password:
 
smb: \> cd trans
 
smb: \trans\> tarmode full hidden system quiet
 
smb: \trans\> tar c maya-e-trans.tar
 

Mit dem gezeigten Code wird nur das Unterverzeichnis trans der Freigabe \\maya\e gesichert. Dazu werden die Einstellungen verwendet, die im Befehl tarmode festgelegt wurden. Damit diese Art von Backup automatisch über ein Skript ausgeführt werden kann, verwenden Sie die Option -c:

# smbclient //maya/e -A samba-domain-pw -c "cd trans; tarmode full hidden \
 
	system quiet; tar >maya-e-trans.tar"
 

Über die Kommandozeilen-Option -T oder den tar-Befehl von smbclient können zusätzliche Optionen angegeben werden. Es ist notwendig, entweder die Option c anzugeben, um ein Sicherungsarchiv zu erstellen, oder die Option x, um das Archiv wieder zu extrahieren.1 Die anderen Optionen können an den Options-String angehängt werden. Sie werden im Abschnitt über smbclient in Anhang C erläutert. Sie erlauben es Ihnen, inkrementelle Backups zu erzeugen sowie festzulegen, welche Dateien in das Backup aufgenommen oder aus ihm ausgeschlossen werden sollen, und legen eine Reihe weiterer Einstellungen fest. Stellen Sie sich beispielsweise vor, Sie wollen ein inkrementelles Backup einer Freigabe herstellen und setzen das Archiv-Bit auf den Dateien zurück, um alles für das nächste inkrementelle Backup einzurichten. Anstatt die interaktiven Befehle

smb: \> tarmode inc reset quiet
 
smb: \> tar c backup.tar
 

zu benutzen, könnten Sie entweder den interaktiven Befehl

smb: \> tar cgaq backup.tar
 

verwenden oder die Option -Tcgaq auf der smbclient-Kommandozeile einsetzen.

Ihre beste Strategie für die Benutzung von smbclient für Netzwerk-Backups hängt von Ihrer lokalen Konfiguration ab. Wenn Sie nur einige Windows-Systeme haben, die wenige Daten gemeinsam nutzen, könnten Sie ein Skript schreiben, das -Tc-Befehle des smbclient enthält, mit dem Sie jede Freigabe in einer eigenen tar-Datei sichern und die Dateien dann in einem Verzeichnis ablegen, das bei den normalen Sicherungszyklen des Unix-Systems gesichert wird. Haben Sie dagegen große SMB-Freigaben in Ihrem Netzwerk, ziehen Sie es möglicherweise vor, das Backup direkt auf ein Bandlaufwerk zu schreiben. Sie können dies mit smbclient erledigen. Das funktioniert genauso wie der Unix-Befehl tar:

# smbclient //maya/d -A samba-domain-pw -Tc >/dev/tape
 

Wenn Sie sich mit smbclient vertraut gemacht haben und Ihr automatisiertes Backup-System funktioniert, werden Sie feststellen, dass Sie sich mit Hilfe von Samba viel weniger Sorgen um die Integrität der Daten Ihres Netzwerks machen müssen. Die Autoren dieses Buches sind erfahrene Unix-Systemadministratoren. Wir empfehlen Ihnen, auf jeden Fall eine Backup-Strategie einzusetzen, die sorgfältig geplant, implementiert und - das ist wohl am wichtigsten - getestet und für gut befunden wurde.

smbfs

Unter Linux kann das smbfs-Dateisystem dazu verwendet werden, SMB-Freigaben auf eine Weise an das Linux-Dateisystem zu mounten, die ähnlich dem Mounten von Plattenpartitionen an NFS-Dateisystemen funktioniert. Das Ergebnis ist so transparent, dass Benutzer auf dem Linux-System es nicht einmal merken, dass sie über einen Windows- oder Samba-Server auf die Dateien zugreifen. Dateien und Verzeichnisse sehen genau so aus wie die anderen Dateien und Verzeichnisse auf dem lokalen Linux-System. Allerdings gibt es in Bezug auf die Eigentümerschaft und die Zugriffsrechte einige Unterschiede im Verhalten.2

smbfs basiert zwar auf dem Samba-Code, ist aber selbst kein Bestandteil der Samba-Distribution. Statt dessen ist es als normaler Bestandteil der Linux-Dateisystemunterstützung in Linux enthalten.

Die Programme smbmount und smbmnt gehören zur Samba-Distribution und werden auf dem Client benötigt, um smbfs-Dateisysteme zu mounten. Samba muss mit der Konfigurationsoption --with-smbmount kompiliert werden, um sicherzustellen, dass diese Programme kompiliert werden. Sie suchen in der smb.conf nach Informationen über das lokale System und die Netzwerkkonfiguration, Sie benötigen deshalb eine funktionierende smb.conf-Datei auf dem System, selbst wenn dieses nicht als Samba-Server arbeitet.

Ein smbfs-Dateisystem mounten

Der Befehl smbmount wird eingesetzt, um ein smbfs-Dateisystem an das Linux-Dateisystem zu mounten. Die grundlegende Syntax lautet:

# smbmount Freigabe-UNC Mount-Punkt -o Optionen
 

Ersetzen Sie Freigabe-UNC durch die UNC der SMB-Freigabe und Mount-Punkt durch den vollständigen Pfad zu dem Verzeichnis im Linux-Dateisystem, das als Mount-Punkt verwendet werden soll. Das Argument Optionen wird verwendet, um die genaue Art und Weise festzulegen, in der die Freigabe gemountet wird. Schauen wir uns das Beispiel eines smbmount-Befehls an:

# smbmount //maya/e /smb/e \
 
	-o "credentials=/home/jay/.smbpw,uid=jay,gid=jay,fmask=664,dmask=775"
 

Hier mounten wir die Freigabe \\maya\e eines Windows 98-Systems an den Mount-Punkt /smb/e auf dem Linux-System.


Enthält Ihr Linux-Kernel keine smbfs-Unterstützung, erhalten Sie folgende Fehlermeldung:
ERROR: smbfs filesystem not supported by the kernel
 
In diesem Fall müssen Sie einen neuen Kernel konfigurieren und kompilieren, um Unterstützung für smbfs zu integrieren. Wenn smbfs installiert und eine SMB-Freigabe gemountet ist, können Sie den Befehl
$ cat /proc/filesystems
 
ausführen und erhalten eine solche Zeile:
nodev   smbfs
 
in der Ausgabe des Befehls.

Der Mount-Punkt muss existieren, bevor smbmount ausgeführt wird. Er kann mit Hilfe des Befehls mkdir erzeugt werden:

# mkdir /smb/e
 

Das Argument der Option -o sieht vielleicht ein bisschen kompliziert aus. Es handelt sich dabei um eine durch Kommata getrennte Liste aus schlüssel=wert-Paaren. Der credentials-Schlüssel wird auf den Namen der Credentials-Datei gesetzt, die dazu dient, smbmount einen gültigen Benutzernamen und ein gültiges Kennwort zu übergeben, mit dem die Authentifizierung während der Anmeldung an einer Freigabe vorgenommen wird. Das Format ist identisch mit dem von smbclient verwendeten (wie im vorangegangenen Abschnitt erklärt), Sie können also für beide Clients die gleiche Credentials-Datei benutzen. Wenn Sie wollen, können Sie das schlüssel=wert-Paar username=name%kennwort verwenden, um den Benutzernamen und das Kennwort direkt im smbmount-Befehl festzulegen, obwohl die Sicherheit dadurch deutlich vermindert wird.


Der Befehl smbmount akzeptiert die gleichen Authentifizierungsmethoden wie smbclient. Die Kommentare in dem Abschnitt über smbclient bezüglich der Angabe von Kennwörtern auf der Kommandozeile - und dem Ablegen von Kennwörtern in Dateien und Umgebungsvariablen - gelten auch hier.

Die restlichen Optionen teilen smbmount mit, wie zwischen dem SMB-Dateisystem und dem Unix-Dateisystem übersetzt wird, die sich in der Handhabung der Eigentümerschaft und der Zugriffsrechte unterscheiden. Die Optionen uid und gid legen den Eigentümer und die Gruppe fest, die allen Verzeichnissen und Dateien in der gemounteten Freigabe zugewiesen werden.

Die Optionen fmask und dmask geben Bit-Masken für die Rechte von Dateien bzw. Verzeichnissen an. Diese Bit-Masken sind durch ein logisches UND mit den Rechten verknüpft, die vom Server gewährt werden, um die effektiven Zugriffsrechte auf dem Client-Unix-System zu erzeugen. Auf der Server-Seite hängen die gewährten Zugriffsrechte vom Betriebssystem des Servers ab. Bei einem Windows 95/98/Me-Server mit Sicherheit auf Freigabeebene kann auf einzelnen Dateien und Verzeichnissen das MS-DOS-Attribut Read-only gesetzt und mit den Zugriffsrechten Full Access oder Read-only auf der Freigabe als Ganzes kombiniert werden. Im Modus Sicherheit auf Benutzerebene kann Windows 95/98/Me ACL-artige Zugriffsrechte besitzen, die auf die gesamte Freigabe angewendet werden, wie in Kapitel 4 vorgestellt. Windows NT/2000/XP unterstützen ACLs auf einzelnen Dateien und Verzeichnissen mit den Zugriffsrechten Full Control, Change oder Read, die auf die ganze Freigabe angewendet werden können. Handelt es sich bei dem Server um einen Samba-Server, sind die Rechte identisch mit denen, die durch die Samba-Freigabe und das lokale Unix-System für die einzelnen Dateien und Verzeichnisse definiert sind. In jedem Fall dienen die Rechte, die auf die Freigabe angewendet werden, dazu, den Zugriff weiter einzuschränken - über das hinaus, was für die einzelnen Dateien und Verzeichnisse festgelegt wurde.


Möglicherweise glauben Sie, dass die Berechtigungsmasken fmask und dmask nur dazu verwendet werden können, die effektiven Zugriffsrechte auf Dateien und Verzeichnissen zu reduzieren. Das ist jedoch nicht immer der Fall. Nehmen Sie beispielsweise an, dass eine Datei von einem Windows 95/98/Me-Server mit Sicherheit auf Freigabeebene freigegeben wird und eine ganze Reihe von Benutzern das Kennwort für den vollständigen Zugriff auf die Freigabe erhalten hat. Wenn die Freigabe mit smbmount unter Benutzung eines fmask-Werts von 666 gemountet wird, werden die Lese-/Schreibrechte auf dem Unix-System nicht nur für den Eigentümer, sondern auch für jeden anderen Benutzer auf dem Unix-System gewährt!

Nach dem Mounten der Freigabe \\maya\d an /smb/e sieht der Inhalt von /smb/e folgendermaßen aus:

$ cd /smb/e ; ls -l
 
total 47
 
drwxrwxr-x    1 jay      jay           512 Jan  8 20:21 CD-images
 
drwxrwxr-x    1 jay      jay           512 Jan  6 21:50 lectures
 
-rw-rw-r--    1 jay      jay           131 Dec 18 09:12 ms-ProfPol-wp.doc
 
-rw-rw-r--    1 jay      jay            59 Dec 18 09:12 profile-map
 
-rw-rw-r--    1 jay      jay           131 Jan 15 05:01 readme.txt
 
drwxrwxr-x    1 jay      jay           512 Feb  4  2002 RECYCLED
 
-rw-rw-r--    1 jay      jay         33969 Dec 10 20:22 smbclient.doc
 
-rw-rw-r--    1 jay      jay          7759 Dec 10 20:20 smbmount.doc
 
-rw-rw-r--    1 jay      jay          1914 Dec 10 20:17 smbsh.txt
 
drwxrwxr-x    1 jay      jay           512 Jan 10 03:54 trans
 

Im Großen und Ganzen funktionieren die Dateien und Verzeichnisse, die in dem gemounteten smbfs-Dateisystem enthalten sind, genau so wie alle anderen, abgesehen von den Einschränkungen auf Grund der Natur der SMB-Netzwerke. So kann zum Beispiel nicht einmal der Superuser diese Operation ausführen:

# chown root lectures
 
chown: changing ownership of 'lectures': Operation not permitted
 

da SMB-Freigaben an sich den Gedanken der Eigentümerschaft nicht unterstützen. Das kann einige eigenartige Verhaltensweisen zur Folge haben. Beispielsweise erzeugt der Befehl:

# chmod 777 readme.txt
 

keine Fehlermeldung, obwohl sich nichts geändert hat. Bei der Datei readme.txt sind die Zugriffsrechte weiterhin auf 664 gesetzt:

# ls -l readme.txt
 
-rw-rw-r--    1 jay      jay           131 Jan 15 05:01 readme.txt
 

Abgesehen von Kleinigkeiten wie diesen kann das gemountete smbfs-Dateisystem zusammen mit praktisch jeder Anwendung benutzt werden. Sie werden angenehm überrascht sein, wie nahtlos es sich in Ihre Linux-basierte Arbeitsumgebung einfügt. Sie können im Unix-Dateisystem sogar symbolische Links erzeugen, die auf Dateien und Verzeichnisse innerhalb von SMB-Freigaben verweisen. Es ist jedoch nicht möglich, einen symbolischen Link innerhalb des gemounteten smbfs-Dateisystems zu erzeugen, es sei denn, der Server ist ein Samba-Server, der Unix-CIFS-Erweiterungen unterstützt.

smbfs-Dateisysteme automatisch mounten

Genau wie andere Arten von Dateisystemen kann auch ein smbfs-Dateisystem automatisch während des Systemstarts gemountet werden, indem ein Eintrag dafür in /etc/fstab erstellt wird. Das Format des Eintrags sieht so aus:

Freigabe-UNC Mount-Punkt  smbfs  Optionen 0 0
 

Ersetzen Sie Freigabe-UNC durch die UNC der Freigabe (im Format mit den Schrägstrichen) und Mount-Punkt durch den Namen des Verzeichnisses im Linux-Dateisystem, an das die Freigabe gemountet wird. Bei den Optionen verwenden Sie einfach den String, den Sie mit dem Flag -o im Befehl smbmount benutzt haben.

Sobald Sie die Argumente ermittelt haben, die zusammen mit dem Befehl smbmount eingesetzt werden, um die Freigabe auf die Art zu mounten, die Sie sich vorstellen, ist es eine sehr einfache Sache, den Eintrag für /etc/fstab zu erzeugen. Der Befehl smbmount, den wir verwendeten, um die Freigabe \\maya\e an /smb/e zu mounten, würde folgenden /etc/fstab-Eintrag ergeben:

//maya/e /smb/e  smbfs  
 
credentials=/home/jay/.smbpw,uid=jay,gid=jay,fmask=664,dmask=775 0 0
 

 
(Beachten Sie bitte, dass dies auf eine Zeile gehört.)
 

Wenn Sie einen Fehler beim Verändern der /etc/fstab machen, startet Ihr System möglicherweise nicht mehr richtig, und Sie müssen eventuell im Einbenutzermodus booten, um das Problem zu beheben. Bevor Sie die /etc/fstab bearbeiten, sollten Sie eine Sicherungskopie davon anlegen. Stellen Sie sich darauf ein, Ihr System wieder herzustellen, falls etwas schiefgeht.

Wenn der Eintrag hinzugefügt wurde, mountet das System die Freigabe beim Start automatisch. Der Systemadministrator kann die Freigabe aber auch manuell mounten oder abmounten. Dazu verwendet er diese Befehle:

# mount /smb/e
 
# umount /smb/e
 

Es ist möglich, mount und umount zu verwenden und diesen die UNC für die Freigabe im Format mit Schrägstrichen zu übergeben, wie in Ihrem /etc/fstab-Eintrag. Seien Sie dabei jedoch vorsichtig. Eine Freigabe könnte mehr als einmal in /etc/fstab aufgeführt sein, so dass sie auch an mehr als einer Stelle im Linux-Dateisystem gemountet werden kann. Wenn Sie die UNC verwenden, um die Freigabe festzulegen, die Sie mounten oder abmounten wollen, veranlassen Sie damit unter Umständen ein Mounten oder Abmounten an einem anderen als dem gewünschten Mount-Punkt.

Gängige smbmount-Optionen

Tabelle 5-1 zeigt schlüssel=wert-Paare, die zusammen mit der Option -o des Befehls smbmount oder im Optionenfeld des /etc/fstab-Eintrags für das smbfs-Dateisystem verwendet werden können. In der smbmount-Manpage finden Sie eine vollständige Liste der Optionen.

Tabelle 5-1
smbmount-Optionen 
Schlüssel
Wert
Funktion
username
String
Liefert zur Authentifizierung den Benutzernamen und optional das Kennwort und die Arbeitsgruppe.
password
String
Liefert das Freigabe- oder Domänenkennwort, falls dies noch nicht durch eine andere Methode angegeben wurde.
credentials
String
Name der Datei, die den Benutzernamen und das Kennwort enthält.
uid
String oder numerisch
Benutzer-ID, die auf alle Dateien und Verzeichnisse der gemounteten Freigabe angewendet wird.
gid
String oder numerisch
Gruppen-ID, die auf alle Dateien und Verzeichnisse der gemounteten Freigabe angewendet wird.
fmask
numerisch
Auf Dateien anzuwendende Zugriffsrechte. Vorgabewert basiert auf aktuellem umask-Wert.
dmask
numerisch
Auf Verzeichnisse anzuwendende Zugriffsrechte. Vorgabewert basiert auf aktuellem umask-Wert.
debug
numerisch
Protokollierungsstufe.
workgroup
String
Name der Arbeitsgruppe des entfernten Servers.
guest
(kein)
Unterdrückt Kennwortabfrage.
ro
(kein)
Mountet schreibgeschützt.
rw
(kein)
Mountet les-/schreibbar. Vorgabewert.
ttl
numerisch
Zeitdauer, während der der Inhalt der Verzeichnisse im Cache gespeichert wird. Vorgabewert ist 1.000 ms.

smbsh

Das Programm smbsh ist Teil der Samba-Suite und funktioniert auf einigen, nicht jedoch auf allen Unix-Varianten.3 Es fügt um die Kommando-Shell des Benutzers einen Wrapper hinzu, wodurch der Shell sowie gebräuchlichen Unix-Dienstprogrammen ermöglicht wird, neben Dateien und Verzeichnissen im lokalen Unix-System auch auf Dateien und Verzeichnissen in SMB-Freigaben zu agieren. Aus Sicht des Benutzers scheinen die SMB-Freigaben an das Unix-Dateisystem gemountet zu sein.

smbsh funktioniert, indem die Shell und die von ihr ausgeführten Programme in einer Umgebung laufen, aus der Aufrufe an die Standard-C-Bibliothek an die smbwrapper-Bibliothek umgeleitet werden, die Unterstützung für das Arbeiten auf SMB-Freigaben enthält. Diese Umleitung kann nur funktionieren, wenn das ausgeführte Programm dynamisch gebunden ist. Glücklicherweise sind in modernen Unix-Versionen die meisten üblichen Dienstprogramme dynamisch und nicht statisch gebunden.


Um festzustellen, ob ein Programm dynamisch oder statisch gebunden ist, versuchen Sie einfach, den Befehl file einzusetzen.

Um smbsh zu benutzen, muss Ihre Samba-Installation mit der Konfigurationsoption --with-smbwrapper konfiguriert sein.

Falls Sie eine ganze Reihe von Unix-Systemen mit dem gleichen Host-Betriebssystem und der gleichen Architektur haben und sich nicht mit einer kompletten Samba-Installation herumschlagen wollen, verschieben Sie einfach die folgenden Dateien auf die anderen Systeme:

/usr/local/samba/bin/smbsh
 
/usr/local/samba/bin/smbwrapper.so
 
/usr/local/samba/lib/smb.conf
 

Achten Sie darauf, dass /usr/local/samba/bin im Suchpfad Ihrer Shell steht. Die Datei smb.conf wird von smbsh nur benötigt, um die Arbeitsgruppe oder Domäne zu ermitteln. Sie muss deshalb nicht so kompliziert sein wie die Konfigurationsdatei Ihres Samba-Servers.

Eine interaktive Sitzung mit smbsh

Um smbsh zu starten, geben Sie am Shell-Prompt einfach den Befehl smbsh ein. Sie werden nach einem Benutzernamen und einem Kennwort gefragt, mit denen Sie sich am SMB-Netzwerk authentifizieren:

$ smbsh
 
Username: davecb
 
Password:
 
smbsh$
 

Während der Arbeit in der smbsh-Shell haben Sie ein virtuelles /smb-Verzeichnis. Dieses existiert im Unix-Dateisystem eigentlich nicht und wird innerhalb der smbsh nur unterstützt, um die SMB-Freigaben in einer Struktur zu organisieren, die Unix-Benutzern vertraut ist. Sie können den Inhalt des virtuellen /smb-Verzeichnisses auflisten und eine Liste der Arbeitsgruppen im lokalen Netzwerk erhalten, die ebenfalls als virtuelle Verzeichnisse präsentiert werden:

smbsh$ cd /smb ; ls
 
ZOOL PLANK BACIL
 

Wenn Sie Ihr Arbeitsverzeichnis in eines der virtuellen Arbeitsgruppenverzeichnisse verlegen, können Sie sich die Computer in der Arbeitsgruppe anzeigen lassen:

smbsh$ cd ZOOL ; ls
 
ANTILLES         DODO             MILO             SEAL
 
ARGON            HANGGLIDE        OSTRICH          SPARTA
 
BALLET           INFUSION         PLAQUE           THEBES
 
CHABLIS          JAZ              PRAETORIAN       TJ
 
COBRA            KIKO             RAYOPCI          TRANCE
 
COUGUR           MACHINE-HEADPCI  RUMYA            VIPERPCI
 
CRUSTY           MATHUMA          SCOT
 

Auf die gleiche Weise können Sie in eines der virtuellen Computerverzeichnisse wechseln und sich die Freigaben anzeigen lassen, die dieser Computer anbietet:

smbsh$ cd scot ; ls
 
ADMIN$      davecb      nc          np2s        pl
 
ace         dhcp-mrk03  np          nps         xp
 
cl          ep          np2         opcom
 

Dies ist die niedrigste Stufe des Systems der virtuellen Verzeichnisse von smbsh. Sobald Sie mit cd in eine Freigabe wechseln, befinden Sie sich innerhalb der SMB-Freigabe auf dem entfernten Computer:

smbsh$ cd davecb ; ls
 
Mail                                mkanalysis_dirs.idx
 
SUNWexplo                           nfs.ps
 
Sent                                nsmail
 
allsun.html                         projects.txt
 
bin                                 sumtimex
 

In der entfernten Freigabe funktionieren die meisten Dienstprogramme der Unix-Shell, und Sie können auf Dateien und Verzeichnissen genauso arbeiten wie in einem beliebigen Unix-System. Sie können sogar symbolische Links im Unix-Dateisystem erzeugen, die auf Dateien und Verzeichnisse in der SMB-Freigabe verweisen. Allerdings werden Versuche, symbolische Links in der SMB-Freigabe zu erzeugen, fehlschlagen, es sei denn, die Freigabe befindet sich auf einem Samba-Server mit Unterstützung für Unix-CIFS-Erweiterungen.

smbutil und mount_smbfs

Die Programme smbutil und mount_smbfs liefern SMB-Client-Funktionalität für FreeBSD, Darwin und Mac OS X. Keines der Programme ist Bestandteil der Samba-Distribution; wir führen sie hier dennoch auf, um Ihnen ein wenig Unterstützung zu liefern, falls Sie Systeme mit BSD-Unix in Ihrem Netzwerk betreiben.

smbutil

Das Programm smbutil stellt eine Funktionalität zur Verfügung, die ähnlich der einiger Kommandozeilen-Programme der Samba-Suite ist. Es kann verwendet werden, um die Freigaben auszugeben, die auf einem SMB-Server angeboten werden, oder um NetBIOS-Namensabfragen auszuführen.

Das erste Argument, das an smbutil übergeben wird, besteht aus einer Reihe von Unterbefehlen. Üblicherweise folgen den Unterbefehlen die notwendigen Argumente. Um beispielsweise die Ressourcen aufzuführen, die von einem Server angeboten werden, verwenden Sie den Unterbefehl view und geben bei der entsprechenden Aufforderung Ihr Server-Kennwort ein:

% smbutil view //vamana
 
Password:
 
Share		Type		Comment
 
-------------------------------------------------------------
 
public		disk
 
SS2500		printer		Stylus Scan 2500
 
IPC$		pipe		IPC Service (Samba 2.2.5)
 
ADMIN$		disk		IPC Service (Samba 2.2.5)
 
leonvs		disk		User Home Directories
 

 
5 shares listed from 5 available
 

Falls Sie sich an dem Server mit einem Benutzernamen anmelden wollen, der sich von dem auf Ihrem Client unterscheidet, können Sie diesen auf der Kommandozeile angeben. Dazu geben Sie vor dem Namen des Servers den Benutzernamen ein und trennen das Ganze mit einem at-Zeichen (@):

% smbutil view //leonvs@vamana
 

Sie können nach dem Benutzernamen auch das Kennwort eintippen. Als Trennzeichen wird in diesem Fall ein Doppelpunkt (:) verwendet. Dadurch vermeiden Sie die explizite Nachfrage nach dem Kennwort:

% smbutil view //leonvs:leonspassword@vamana
 

Es wird ausdrücklich davon abgeraten, das Kennwort derart offen einzugeben. Verwenden Sie lieber ein verschlüsseltes Kennwort. Dieses können Sie mit dem smbutil-Unterbefehl crypt erzeugen:

% smbutil crypt leonspassword
 
$$1625a5723293f0710e5faffcfc6
 

Dies kann dann an Stelle eines Klartextkennwort eingesetzt werden. Die Verschlüsselung ist allerdings nicht besonders stark und hält nur einer oberflächlichen Überprüfung stand. Wie bereits früher ausgeführt, ist die einzig wirklich sichere Methode der Angabe eines Kennworts die, bei der danach gefragt wird.

Während des Starts liest smbutil die Datei .nsmbrc im Home-Verzeichnis des Benutzers ein. Auch die Datei /usr/local/etc/nsmb.conf wird gelesen. Die Anweisungen in dieser Datei setzen diejenigen aus den ~/.nsmbrc-Dateien des Benutzers außer Kraft. Damit ist es den Administratoren möglich, einheitliche Einstellungen für alle Benutzer festzulegen. Die Anweisungen können in dieser Datei in einem ähnlichen Format aufgeschrieben werden wie in der Samba-Konfigurationsdatei, das heißt mit Abschnitten und Parametern. Eine Liste der gebräuchlichen Konfigurationsparameter finden Sie in Tabelle 5-2.

Um zum Beispiel Ihr Kennwort in Ihrer ~/.nsmbrc-Datei abzulegen, erzeugen Sie einen solchen Eintrag in der Datei:

[VAMANA:LEONVS]
 
	password=$$1625a5723293f0710e5faffcfc6
 

Die Abschnittsüberschrift in den eckigen Klammern gibt den NetBIOS-Namen des SMB-Servers sowie den Benutzernamen an, für den die folgenden Parameter-Einstellungen gelten. (Host- und Benutzername sollten in Großbuchstaben angegeben werden.) Abschnittsüberschriften können auch aus nur dem Hostnamen bestehen oder einen Freigabenamen als drittes Element enthalten, um Parameter festzulegen, die für eine einzelne Freigabe gelten sollen. Gibt es schließlich einen [default]-Abschnitt, werden die Einstellungen darin auf alle Verbindungen angewandt.

Die folgende .nsmbrc-Beispieldatei zeigt einige der anderen Parameter, die Sie verwenden könnten:

[default]
 
	username=leonvs
 
	# NetBIOS-Nameserver
 
	nbns=192.168.1.3
 

 
[VAMANA]
 
	# Server-IP-Adresse
 
	addr=192.168.1.6
 
	workgroup=TEST
 

 
[VAMANA:LEONVS]
 
	password=$$1625a5723293f0710e5faffcfc6
 

Mit dem Programm smbutil können Sie außerdem zwischen IP-Adressen oder DNS-Namen und NetBIOS-Namen übersetzen. So nimmt beispielsweise der Unterbefehl status eine IP-Adresse oder einen DNS-Hostnamen als Argument entgegen und liefert den NetBIOS-Namen und die Arbeitsgruppe des entsprechenden SMB-Servers zurück:

% smbutil status 192.168.1.6
 
Workgroup: TEST
 
Server: VAMANA
 

Der Unterbefehl lookup liefert die IP-Adresse zurück, die mit einem vorgegebenen NetBIOS-Hostnamen verknüpft ist. Ein NetBIOS-Name-Server kann optional mit dem Argument -w angegeben werden:

% smbutil lookup -w 192.168.1.3 VAMANA
 
Got response from 192.168.1.3
 
IP address of VAMANA: 192.168.1.6
 

mount_smbfs

Das Programm mount_smbfs führt im Wesentlichen die gleiche Funktion aus wie smbmount unter Linux. Es mountet eine SMB-Freigabe an ein Verzeichnis im lokalen Dateisystem. Auf die SMB-Freigabe kann dann wie auf jedes andere Verzeichnis zugegriffen werden; Unterschiede im Verhalten wurden bereits im Abschnitt »Ein smbfs-Dateisystem mounten« aufgezeigt.

Die Syntax für mount_smbfs lautet:

mount_smbfs [Optionen] Freigabe-UNC Mount-Punkt
 

wobei Freigabe-UNC folgende Form aufweist:

//[Arbeitsgruppe;][Benutzername[:Kennwort]@]Server[/Freigabe]
 

Zum Beispiel:

# mount_smbfs '//TEST;leonvs:$$1625a5723293f0710e5faffcfc6@vamana/leonvs' /
 
\Volumes/leonvs
 

Die Eigentümerschaft und die Zugriffsrechte des Mount-Punkts legen die vorgegebene Eigentümerschaft und die Zugriffsrechte für die Dateien und Verzeichnisse in der gemounteten Freigabe fest. Diese können mit Hilfe von Kommandozeilen-Argumenten modifiziert werden:

# mount_smbfs -u leonvs -g admin -f 0750 -d 0755 //leonvs@vamana/leonvs 
 
\/Volumes/leonvs
 

In diesem Beispiel gehören die Dateien und Verzeichnisse in der gemounteten Freigabe dem Benutzer leonvs und der Gruppe admin, wobei die Dateien und Verzeichnisse die Zugriffsrechte 750 bzw. 755 haben. (Wie üblich werden die Zugriffsrechte im oktalen Format angegeben, das auch vom Unix-Befehl chmod verwendet wird.)

Der Befehl mount_smbfs greift ebenfalls auf die Einstellungen in /usr/local/etc/nsmb.conf und ~/.nsmbrc zurück, wie bereits beschrieben. Eine Liste der gebräuchlichen Konfigurationsparameter und Kommandozeilen-Optionen finden Sie in Tabelle 5-2.

Tabelle 5-2
Gebräuchliche smbutil- und mount_smbfs-Optionen 
Kommandozeilen-Option
Parameter der Konfigurationsdatei
Beschreibung
-I hostname
addr
Führt keine NetBIOS-Namensauflösung durch und stellt die Verbindung zum Server mit dem angegebenen DNS-Hostnamen oder der IP-Adresse her.
-N
keiner
Fragt nicht nach einem Kennwort.
-R Zahl
retry_count
Gibt an, wie oft ein Verbindungsaufbau versucht wird, bevor aufgegeben wird.
-T Sekunden
timeout
Timeout, in Sekunden, pro Verbindungsanforderung.
-U Benutzername
username
Benutzername, der zur Authentifizierung verwendet wird; standardmäßig der Unix-Benutzername.
-W Arbeitsgruppe
workgroup
Name der Arbeitsgruppe des entfernten Servers.
-d Modus
keiner
Auf die Verzeichnisse in der gemounteten Freigabe anzuwendende Zugriffsrechte. Standardmäßig identisch mit den Dateizugriffsrechten, zusätzlich ein Ausführungs-Bit (Such-Bit), wenn das Lese-Bit gesetzt ist.
-f Modus
keiner
Auf die Dateien in der gemounteten Freigabe anzuwendende Zugriffsrechte. Standardmäßig identisch mit den Zugriffsrechten, die auf dem Verzeichnis gesetzt sind, das als Mount-Punkt verwendet wird.
-g Gruppe
keiner
Name oder numerische GID, die auf alle Dateien oder Verzeichnisse in der gemounteten Freigabe angewendet wird. Standardmäßig identisch mit der Gruppe des Verzeichnisses, das als Mount-Punkt verwendet wird.
-n lang
keiner
Deaktiviert Unterstützung für lange Dateinamen. Dateinamen werden auf den 8.3-Namensstandard beschränkt.
-u Benutzername
keiner
Benutzername oder numerische UID, die als Eigentümer für alle Dateien und Verzeichnisse in der gemounteten Freigabe verwendet wird. Standardmäßig identisch mit dem Eigentümer des Verzeichnisses, das als Mount-Punkt verwendet wird.
-w Hostname
nbns
Hostname oder IP-Adresse des NetBIOS-Name-Servers.
keine
password
Kennwort, das zur Authentifizierung verwendet wird.

Mac OS X

Neben smbutil und mount_smbfs enthält OS X eine grafische Schnittstelle zu der von diesen Programmen angebotenen Funktionalität. Um diese Schnittstelle zu benutzen, öffnen Sie das Menü Gehe zu und wählen den Menüeintrag Mit Server verbinden... An Stelle einer UNC verwenden Sie für die Angabe der Freigabe einen Uniform Resource Identifier (URI) mit dem Präfix smb://. Diesen Wert setzen Sie in das Feld Adresse ein, wie in Abbildung 5-5 demonstriert.
Abbildung 5-5
Der OS X-Dialog Mit Server verbinden

Sie können einen Server, eine Freigabe, eine Arbeitsgruppe, einen Benutzernamen und ein Kennwort (optional verschlüsselt mit smbutil crypt) in dem URI festlegen, und zwar im gleichen Format wie das UNC-Argument für mount_smbfs. Falls Sie den Freigabenamen im URI weglassen, wird Ihnen ein Fenster präsentiert, in dem Sie aus einer Liste verfügbarer Freigaben wählen können, zu sehen in Abbildung 5-6.
Abbildung 5-6
Auswahl einer Freigabe zum Mounten

Solange Sie sich nicht authentifiziert haben, werden lediglich Freigaben gezeigt, für die es nur Gastzugriff gibt. Nach dem Anklicken des Buttons Identifizieren werden Sie nach einer Arbeitsgruppe, einem Benutzernamen und einem Kennwort gefragt, wie in Abbildung 5-7 gezeigt. Diesen Dialog sehen Sie auch, wenn Sie zwar einen Freigabenamen in dem URI angeben, jedoch keinen Benutzernamen und kein Kennwort.4
Abbildung 5-7
Client-Authentifizierung

Wie bei Mac OS X üblich, werden die Freigaben unter /Volumes gemountet, sind aber im root-Bereich der Finder-Hierarchie zu sehen.

Falls Sie einen WINS-Server in Ihrem Netzwerk haben, können Sie die IP-Adresse des Servers im Programm Verzeichnisdienste angeben oder den Parameter wins server in /etc/smb.conf verwenden.
Abbildung 5-8
Suche im Netzwerk

Sollten Sie den Namen des Servers nicht kennen, an dem Sie sich anmelden wollen, können Sie ihn in der Suchliste ermitteln. Dazu benutzen Sie die grafische Schnittstelle des Befehls nmblookup, der mit Samba bereitgestellt wird. Klicken Sie auf den nach unten weisenden Pfeil im Dialogfeld Mit Server verbinden..., um eine hierarchische, spaltenorientierte Ansicht der verfügbaren Arbeitsgruppen und Server zu erhalten, ähnlich der in Abbildung 5-8 gezeigten. Wenn Ihr Client auch als SMB-Datei-Server agiert, wird er in seiner eigenen Suchliste nicht zu sehen sein.

1Eine Alternative zum Extrahieren des tar-Archivs direkt in die SMB-Freigabe besteht darin, den tar-Befehl des Unix-Systems einzusetzen, um das Archiv in ein Verzeichnis auf dem Unix-Server auszupacken. Anschließend werden die gewünschten Dateien in ein freigegebenes Verzeichnis kopiert. Dies bietet eine bessere Kontrolle über den Wiederherstellungsvorgang, etwa beim Beheben einer versehentlichen Löschung einer Datei oder beim Zurücksetzen von Dateien in einen früheren Zustand.
2Die Samba-Versionen 2.2.4 und später enthalten Unterstützung für die von Hewlett-Packard entwickelten Unix-CIFS-Erweiterungen, die in smbfs-Dateisystemen vollständige Unterstützung für die Unix-Eigentümerschaft, Gruppen und Zugriffsrechte hinzufügen, wenn zwei Samba-Systeme die Dateisysteme gemeinsam nutzen. Sie benötigen in Ihrem Linux-Kernel außerdem eine aktuelle Version von smbfs.
3Zu dem Zeitpunkt, als das Buch geschrieben wurde, funktionierte smbsh nicht unter HP/UX und Linux. Linux-Unterstützung könnte in der Zukunft jedoch hinzukommen.
4Falls Sie Ihre Authentifizierungsinformationen in einem Schlüsselbund gespeichert haben, werden Sie stattdessen nach dem Kennwort für den Schlüsselbund gefragt.

TOC PREV NEXT INDEX

Copyright © 2003 by O'Reilly Verlag GmbH & Co.KG