- Installation
- Benutzer
- Benutzer und deren Einschränkungen
- Benutzerverzeichnisse
- Einhängen einer Freigabe
Aufgrund seiner Herkunft ist das gelieferte Dateisystem nicht POSIX-kompatibel und kann darum die Dateieigenschaften eines Linux- oder UNIX-Systems nur unzugreichend abbilden. Wird ein Dateiserver im POSIX-Umfeld benötigt, ist das Network File System (NFS) das Mittel der Wahl.
Installation
Samba kommt in jeder Linux-Distribution vor. Unter Debian, Ubuntu und Linux Mint wird sie mit dem Befehl apt installiert. Dazu müssen Sie Administratorrechte besitzen.
server # apt install samba
Konfiguration
Die installierte Konfigurationsdatei schiebt man sich am besten zur Seite, da in den Kommentaren viele Hilfestellungen stehen. Für unsere Zwecke fangen wir mit einer sehr kleinen Konfigurationsdatei an.server # cd /etc/samba server # mv smb.conf smb.conf.orig
man smb.conf
server # vi smb.confEs gibt einen globalen Bereich, der sich auf den ganzen Server bezieht. Es folgen, mit rechteckigen Klammern gekennzeichnet, sogenannte Shares, also Freigaben von Verzeichnissen.
[global] workgroup = WILLEMER [foto] path = /var/samba/foto read only = noAchten Sie darauf, dass es den Pfad, der hinter path genannt wird, auch wirklich gibt. Ändern Sie die Rechte so, dass jeder Benutzer darin lesen und schreiben kann. Am einfachsten geschieht das mit dem folgenden Befehl:
server # mkdir /var/samba server # mkdir /var/samba/foto server # chown 777 /var/samba/fotoMit dem Befehl testparm können Sie sich Ihre Konfiguration anschauen.
server # testparmAnschließend können Sie den Server des SMB-Dienstes starten, der smbd (für Samba-Demon) heißt.
server # systemctl restart smbd
Benutzer
Für den Zugriff auf die Freigaben muss sich der Benutzer ausweisen. Das wird üblicherweise über User und Passwort erledigt. Als Basis für einen Samba-Benutzer wird immer ein Benutzer des Linux-Servers benötigt. Der wird wie üblich mit dem Befehl adduser angelegt.server # adduser muellerEs wird nach einem Passwort gefragt. Anschließend noch ein paar Eingaben wie Telefonnummer oder Büro, die ignoriert werden können. Anschließend wird der Linux-Benutzer mueller angelegt.
Der Benutzer benötigt explizit ein SMB-Passwort, das mit dem Befehl smbpasswd -a angelegt wird.
server # smbpasswd -a muellerEine Liste der SAMBA-User erhält man mit dem Befehl pdbedit -L.
Test über einen Linux-Client
Sie können auf die Freigabe direkt über einen Linux-Dateimanager wie Caja oder Nautilus zugreifen. Doppelklicken Sie den persönlichen Ordner. Dann geben Sie smb:// gefolgt von der IP-Adresse oder dem Namen Ihres Servers in die Adresszeile ein. Wenn der Dateimanager keine Adresszeile anzeigt, drücken Sie [Strg]+[L].Anschließend sollten Sie den Namen Ihrer Freigabe sehen (hier foto). Klicken Sie darauf doppelt, können Sie diese anonym oder durch Eingabe von Benutzer und Passwort öffnen.
Test über einen Windows-Client
Öffnen Sie einen Explorer ([Windows]+[E]). Geben Sie zwei Backslashzeichen ein, gefolgt von der IP-Adresse oder dem Namen Ihres Servers. Anschließend sollten Sie den Namen Ihrer Freigabe sehen (hier foto). Klicken Sie darauf doppelt, Sie werden nun aufgefordert, Benutzer und Passwort einzugeben.Benutzer und deren Einschränkungen
Wenn mehrere Benutzer mit verschiedenen Rechten auf Dateien und Verzeichnissen zugreifen, kann es schnell zu Konflikten führen.Gäste willkommen?
Eine Freigabe kann auch ohne Passwort verwendet werden, wenn der Freigabe Gäste erlaubt.
[foto] guest ok = Yes path = /var/samba/fotos read only = No
Linux verwendet für den Gastzugang des SMB den Benutzer nobody und die Group nogroup.
Da hier die Freigabe pauschal auf read only = no gesetzt ist, dürfen auch Gäste schreiben. Sollen Gäste nur lesen dürfen, aber nicht schreiben, sollte statt dem pauschalen read only (bzw writeable) eine write list angelegt werden.
Anonymes Anmelden ohne Passwort gelingt mit dem Dateimanager des Linux-Desktops MATE problemlos, da er eine entsprechende Option anbietet. Der Windows-Explorer dagegen will ein Passwort sehen.
Allgemein gilt, dass viele SMB-Clients Benutzer und Passwörter einfordern, obwohl der Server sie grundsätzlich nicht erfordern würde.
Der Gastzugang kann ausgeschlossen werden:
[global] ... map to guest = bad user
Konflikte zwischen Benutzerrechten
Problematisch kann es werden, wenn unterschiedliche Benutzer und Gäste Dateien oder Verzeichnisse anlegen. Hier hat der SMB-Benutzer erna ein Verzeichnis huhu angelegt.
# ls -la insgesamt 248 drwxrwxrwx 3 root root 4096 Nov 24 15:14 . drwxr-xr-x 3 root root 4096 Nov 24 09:32 .. drwxr-xr-x 2 erna erna 4096 Nov 24 15:14 huhu
Würde der Benutzer mueller im Verzeichnis huhu eine Datei anlegen wollen, würde er den Fehler "Permission denied" erhalten, weil nur erna darin schreiben darf.
Lösungsansätze
- Die Direktiven create mask und directory mask können
festlegen, mit welchen Rechten die Dateien angelegt werden.
Werden beide auf 777 gesetzt, dürfen alle Benutzer der Maschine frei
lesen und schreiben.
[foto] create mask = 666 directory mask = 777
- Unschön ist, dass nun alle Benutzer, auch nobody lesen und schreiben
dürfen. Hier könnte man alle SMB-Benutzer einer gemeinsamen Gruppe
zuweisen (beispielsweise sambashare).
# /etc/group sambashare:x:136:erna,mueller
Die Gruppen-ID von sambashare wird dann als Standardgruppe in der /etc/passwd für jeden SMB-User verwendet.erna:x:1001:136:,,,:/home/erna:/bin/bash mueller:x:1002:136:,,,:/home/paul:/bin/bash
Die Masken in den Freigaben werden entsprechend zurückgenommen.[foto] create mask = 664 directory mask = 775
- Die dritte Lösung ist, dass man die Dateioperationen durch einen
Stellvertreter erledigen lässt, beispielsweise hier paul.
[foto] force user = paul
Das heißt, egal unter welchem Konto man sich bei SAMBA anmeldet, alle Dateioperationen erfolgen über paul, der sich natürlich nicht selbst blockieren kann.
Benutzerlisten
Eine Freigabe kann nur für bestimmte Benutzer freigegeben werden, indem die zugelassenen Benutzer hinter der Option valid users aufgelistet werden. Es können auch einzelne Benutzer mit invalid users ausgeschlossen werden.valid users = johannes, paul, georg, richard invalid users = michael, robertMit einer ähnlichen Liste lassen sich die Schreibrechte auf bestimmte Benutzer einschränken. Die Option heißt write list.
write list = paul, georg
Benutzerverzeichnisse
Jeder der SAMBA"=Anwender besitzt auch ein Benutzerkonto unter Debian und dementsprechend auch ein dazugehöriges Benutzerkonto. Dieses wird von SAMBA dem jeweiligen Anwender zugeordnet, aber nur gegen Anmeldung freigegeben. Das Benutzerverzeichnis wird in der Datei smb.conf durch den Freigabenamen homes konfiguriert.[homes] comment = Freigabe des Home-Verzeichnisses valid users = %U write list = %UDer Parameter %U steht für den Namen des angemeldeten Benutzers. In einigen Dokumentationen finden Sie an dieser Stelle auch %S. Das steht für den Freigabenamen, der im Falle von homes mit dem des Benutzernamens identisch ist. Die Freigabe trägt jeweils den Namen des Benutzers. Der Benutzer georg wird sein Benutzerverzeichnis über den Pfad smb://server/georg aufrufen.
Einhängen einer Freigabe
Das dauerhafte Einhängen von Freigaben als Erweiterung des lokalen Datei- und Verzeichnisraums ist natürlich sehr bequem und hat sich darum auch in weiten Teilen von Firmennetzwerken etabliert.Man sollte aber nicht außer Acht lassen, dass genau solche Netzwerkstrukturen die Verbreitung und die Gefährlichkeit von Ransom-Viren fördert.
Einhängen einer Freigabe in Linux
Eine Freigabe kann mit dem Befehl mount in den Verzeichnisbaum eingebunden werden, wie man es auch bei Festplatten tut. Dazu wird die Option -t cifs oder der Befehl mount.cifs aufgerufen.
client # mount -t cifs //193.175.188.253/foto /mnt -o user=mueller Password for mueller@//193.175.188.253/foto: ***Prinzipiell kann mit den Optionen des mount-Befehls eine Einbindung in der /etc/fstab erfolgen. Allerdings muss User und Passwort in einer Credential-Datei abgelegt werden.
# /etc/fstab //server/foto /media/foto cifs credentials=/home/mueller/.smbcredentials 0 0Die Datei .smbcredentials muss mit chmod 600 vor den neugierigen Blicken anderer Benutzer verborgen werden. Die Datei enthält Benutzername und Passwort
username=mueller password=gehtdichgarnichtsan
Das Aushängen funktioniert wie bei Festplatten auch über den Befehl umount.
client # umount /mnt
Einhängen einer Freigabe als Windows-Laufwerk
Unter Windows kann die Freigabe als virtuelles Laufwerk (hier U:) mit dem Befehl \befehl{net use} eingebunden werden:net use u: \\192.168.0.114\foto erna /user:erna