staging.inyokaproject.org

Samba Client smbfs

Archivierte Anleitung

Dieser Artikel wurde archiviert. Das bedeutet, dass er nicht mehr auf Richtigkeit überprüft oder anderweitig gepflegt wird. Der Inhalt wurde für keine aktuell unterstützte Ubuntu-Version getestet. Wenn du Gründe für eine Wiederherstellung siehst, melde dich bitte in der Diskussion zum Artikel. Bis dahin bleibt die Seite für weitere Änderungen gesperrt.

Grundlegendes

Mit dem virtuellen Dateisystem smbfs 🇬🇧 können Freigaben wie ein Datenträger in das Dateisystem des Client eingebunden werden. Allerdings wird smbfs nicht mehr weiter entwickelt. Sein Nachfolger cifs-vfs 🇬🇧 bietet eine erweiterte Funktionalität und eine bessere Performance. Siehe dazu Samba Client/cifs.

Bis einschließlich Gutsy Gibbon (7.10) standen smbfs und cifs-vfs als zwei verschiedene virtuelle Dateisysteme zur Wahl. Seit Hardy Heron (8.04) ist smbfs nicht mehr implementiert, die Bezeichnung smbfs wird aber noch als Synonym für cifs weitergeführt. Damit sind dann Eigenschaften und Syntax für smbfs und cifs identisch.

Installation

Um smbfs verwenden zu können, muss nachfolgendes Paket installiert[1] werden:

  • smbfs

Mountpunkt erstellen

Um eine Freigabe einzubinden, muss zunächst ein Mountpunkt erstellt werden. Eine Freigabe kann wie eine Partition in einem Linux-System an einer beliebigen Stelle in der Dateisystemhierarchie eingebunden werden. Üblich sind jedoch die Verzeichnisse:

  • /media (es erscheint ein Icon auf dem KDE- oder GNOME-Desktop)

  • /mnt (es erscheint kein Icon auf dem KDE- oder GNOME-Desktop)

Mehr Informationen dazu findet man in den Artikeln mount und Datenverwaltung.

# Allgemein
sudo mkdir <mountpunkt>
# Beispiel
sudo mkdir /media/austausch 

Hinweis:

Zum Einbinden wird intern das Hilfsprogramm smbmount verwendet. Für smbmount gelten nicht durchweg die gleichen Parameter und Mount-Optionen wie bei cifs, NFS oder bei echten Dateisystemen.

Weitere Einzelheiten und zusätzliche Optionen findet man in der Manpage mittels

man smbmount 

Temporäres Einbinden

Möchte man eine Freigabe nur testen bzw. nur temporär einbinden, so erfolgt dies mit dem Befehl [2]:

# Allgemein
sudo mount -t smbfs -o username=<benutzer>,password=<passwort> //<server>/<freigabe> <mountpunkt>
# Beispiel
sudo mount -t smbfs -o username=otto,password=geheim //compaq/share /media/austausch 

Um sich auf eine Freigabe in einer Windowsdomäne zu verbinden, muss der Domänenname mit angegeben werden:

# Allgemein
sudo mount -t smbfs -o username=<benutzer>/<domäne>,password=<passwort> //<server>/<freigabe> <mountpunkt>
# Beispiel
sudo mount -t smbfs -o username=otto/office,password=geheim //compaq/share /media/austausch 

Achtung!

Wird das Passwort wie oben beschrieben offen in eine Befehlszeile eingefügt, so wird es auch in der Historie-Funktion der laufenden Shell gespeichert. So ist es leicht möglich, dass eine andere Person an das Passwort kommt. Deshalb sollte man - erst recht auf fremden Computern - Passwörter für sensible Daten niemals über die Option password angeben! Lässt man diese Option weg, so wird interaktiv nach dem Passwort gefragt, und die Eingabe erfolgt verdeckt.

Festes Einbinden

Zunächst wird wie oben beschrieben ein Mountpunkt erstellt. Um nun eine Freigabe fest in das System einzubinden, ist diese in die Datei /etc/fstab [3] einzutragen.

Wird ein Passwort für die Freigabe benötigt, so wäre es recht unsicher, das Passwort in die fstab zu schreiben, da jeder Benutzer des Systems Zugriff auf diese Datei hat. Daher sollte man Login-Daten in einer extra Datei hinterlegen und in den Mount-Optionen darauf verweisen.

Zunächst erstellt man eine Textdatei mit dem Namen .smbcredentials im eigenen Homeverzeichnis und trägt folgenden Inhalt ein.

username=<benutzer>
password=<passwort>

Damit die Datei nur vom Besitzer eingesehen werden kann, setzt man die Rechte[7] entsprechend

sudo chmod 600 ~/.smbcredentials 

Hierfür öffnet man die Datei /etc/fstab in einem Texteditor [3] und trägt die Freigabe ein

# Allgemein
//<server>/<freigabe> <mountpunkt> smbfs credentials=</pfad/zu/.smbcredentials> 0 0
# Beispiel
//compaq/share /media/austausch smbfs credentials=/home/otto/.smbcredentials 0 0

Auf diese Weise wird eine Freigabe beim Systemstart automatisch eingebunden.

Besitz- und Zugriffsrechte

Mit smbfs ist es grundsätzlich nicht möglich, Besitz- und Zugriffsrechte zwischen Server und Client zu übertragen. Dies gilt auch dann, wenn auf dem Server die CIFS-UNIX-Erweiterungen aktiviert sind. Die volle Funktionalität des Protokolls CIFS steht nur mit cifs-vfs zur Verfügung.

Werden im Mount-Befehl keine zusätzlichen Angaben gemacht, bindet smbfs auf dem Client alle Freigaben als Besitz desjenigen Benutzers ein, der sie gemountet hat, und überträgt eventuell vorhandene Schreibrechte nur auf diesen. Da das Einbinden in der Regel mit Root-Rechten (mittels sudo oder über /etc/fstab) erfolgt, hat dann also höchstens Root Schreibrechte.

Durch zusätzliche Angaben von uid, gid, fmask und dmask können beim Mounten andere Besitz- und Zugriffsrechte festgelegt werden (siehe dazu auch Benutzer und Gruppen). Dies geht sowohl beim temporären Einbinden:

# Allgemein
sudo mount -t smbfs -o username=<benutzer>,password=<passwort>,uid=<uid>,gid=<gid> //<server>/<freigabe> <mountpunkt>
# Beispiel
sudo mount -t smbfs -o username=otto,password=geheim,uid=1000,gid=1000 //compaq/share /media/austausch 

als auch bei Einträgen in /etc/fstab:

# Allgemein
//<server>/<freigabe> <mountpunkt> smbfs credentials=</pfad/zu/.smbcredentials>,uid=<uid>,gid=<gid>,fmask=<fmode>,dmask=<dmode> 0 0
# Beispiel
//compaq/share /media/austausch smbfs credentials=/home/otto/.smbcredentials,uid=1000,gid=1000,fmask=664,dmask=775 0 0

Werden zu fmask und dmask keine Angaben gemacht, so gelten die Default-Werte fmask=644 und dmask=755. Siehe hierzu auch Rechte sowie chmod.

Hinweis:

Bei smbmount bezeichnen fmask=...., dmask=.... Modes für Dateien und Ordner und nicht etwa Masken (wie z.B. bei umask)

Bei mount.cifs heißen deshalb die entsprechenden Bezeichnungen jetzt file_mode=...., dir_mode=.....

Die auf diese Weise festgelegten Dateiattribute werden nur auf dem Client simuliert. Sie haben keinen Einfluss auf die echten Dateiattribute auf dem Server.

Werden in einer Freigabe z.B. von einem anderen Benutzer neue Ordner oder Dateien angelegt, so gehören diese zunächst scheinbar diesem, und er hat damit auch Schreibrechte. Dies gilt aber nur für die betreffende Sitzung. Nach dem erneuten Mounten der Freigaben gelten auch für diese dann die im Mount-Befehl festgelegten Rechte.

Die beim Mounten mittels smbmount festgelegten Rechte bleiben auf dem Client bis zum Aushängen der Freigaben (üblicherweise beim Herunterfahren) verbindlich. Es ist nicht möglich, Dateiattribute nachträglich mit chown, chgrp, chmod oder über graphische Dialoge zu ändern.

Grafische Tools

Es gibt auch grafische Tools ("Frontends"), die Browsen (mit Namensauflösung) und Einbinden ins Dateisystem miteinander verbinden. Das Tool LinNeighborhood verwendet dabei ausschließlich smbfs; bei PyNeighborhood und beim KDE-Programm Smb4K kann man zwischen smbfs und cifs-vfs wählen.

Einzelheiten zur Installation und Anwendung finden sich auf den Wiki-Seiten dieser Programme.

Weitere Einzelheiten

Manuelles Einbinden als normaler Benutzer

Voraussetzung hierfür ist ein Eintrag für die betreffende Freigabe in /etc/fstab (siehe oben). Fügt man dort dann vor credentials noch noauto ein, so wird die Freigabe beim Systemstart nicht gleich eingebunden, sondern nur fürs Einbinden vorbereitet:

# Beispiel
//compaq/share /media/austausch smbfs users,noauto,credentials=/home/otto/.smbcredentials,uid=1000,gid=1000 0 0

Durch die Option users wird erreicht, dass zum eigentlichen Mounten keine Root-Rechte mehr nötig sind (d.h. kein "sudo"). Zum Mounten bzw. Aushängen genügt dann die einfache Befehlszeile

# Allgemein
mount <mountpunkt>
umount <mountpunkt>
# Beispiel
mount /media/austausch
umount /media/austausch 

Dies funktioniert aber nur dann, wenn für die Dateien smbmnt und smbumount das SUID-Bit gesetzt ist. Ab Gutsy Gibbon 7.10 ist dies standardmäßig der Fall. In früheren Versionen muss dies mit folgenden Befehlen (im Terminal) nachgeholt werden:

sudo chmod +s /usr/bin/smbmnt
sudo chmod +s /usr/bin/smbumount 

Achtung!

Der Einsatz des SUID-Bit ist eine mögliche Sicherheitslücke und sollte nur mit Bedacht verwendet werden. In besonders gefährdeten Umgebungen sollte man deshalb lieber auf das Mounten ohne Root-Rechte ganz verzichten und für smbmnt und smbumount das SUID-Bit mit sudo chmod -s ... löschen.

Umlaute und Sonderzeichen

Enthalten die Dateinamen in den Freigaben Umlaute und Zeichen wie ß, é usw., dann werden diese eventuell nicht richtig dargestellt. Seit Feisty Fawn 7.04 kann man auch mit smbfs durch die Optionen iocharset=utf8 und codepage=cp850 erreichen, dass die Umlaute richtig angezeigt und beim Schreiben von neuen Dateien auch richtige Umlaute erzeugt werden.

# Allgemein
//<server>/<freigabe> <mountpunkt> smbfs user,noauto,credentials=</pfad/zu/.smbcredentials>,iocharset=utf8,codepage=cp850,uid=<uid>,gid=<gid> 0 0
# Beispiel
//compaq/share /media/austausch smbfs user,noauto,credentials=/home/otto/.smbcredentials,iocharset=utf8,codepage=cp850,uid=1000,gid=1000 0 0

Bis einschließlich Edgy Eft 6.10 sind bei smbfs keine Angaben zu iocharset und codepage möglich. Man muss entweder cifs-vfs verwenden oder entsprechende Angaben auf dem Server in /etc/samba/smb.conf vornehmen.

Mit smbfs dürfen grundsätzlich in Namen nur solche Sonderzeichen verwendet werden, die auch in Windows erlaubt sind. Dies gilt auch für Freigaben auf Samba-Servern.

⚓︎

Probleme und Lösungen

Starten und beenden

Einträge in /etc/fstab werden beim Systemstart nicht eingebunden

Einträge in /etc/fstab sollten beim Systemstart automatisch eingebunden werden, wenn nicht noauto eingetragen ist. Bei Freigaben mit smbfs funktioniert dies manchmal nicht. Der Grund ist, dass die Netzwerk-Verbindungen noch nicht vollständig aktiviert sind, wenn die fstab abgearbeitet wird.

In diesem Fall müssen die Freigaben mit

sudo mount -a 

von einem Terminal aus nachträglich eingebunden werden. Man kann dies auch automatisieren, indem man in die Datei /etc/rc.local folgende Zeilen einfügt:

sleep 20
mount -a
exit 0
# die Zeile exit 0 ist schon vorhanden

Kompatibilität

smbfs und Hal

Unter Dapper Drake 6.06 und Edgy Eft 6.10 kommt es bei einigen Benutzern zu Problemen bei der Benutzung von smbfs in Verbindung mit Hal. Als Alternative empfiehlt sich cifs.

Verwandte Seiten

Extern

Diese Revision wurde am 14. Februar 2020 09:11 von Heinrich_Schwietering erstellt.