Eine Samba-Freigabe erstellen
Samba ermöglicht Windows- und anderen Clients die Verbindung zu Dateifreigabeverzeichnissen auf Linux-Rechnern. Es implementiert das Server Message Block (SMB)-Protokoll. Diese Anleitung beschreibt die Einrichtung eines freigegebenen Dateiverzeichnisses auf einem Fedora-Rechner, auf das andere Computer im lokalen Netzwerk zugreifen können.
Samba installieren und aktivieren
Die folgenden Befehle installieren Samba und konfigurieren es so, dass es über systemctl ausgeführt wird. Außerdem wird die Firewall so eingestellt, dass der Zugriff auf Samba von anderen Computern erlaubt ist.
$ sudo dnf install samba
$ sudo systemctl enable smb --now
$ firewall-cmd --get-active-zones
$ sudo firewall-cmd --permanent --zone=FedoraWorkstation --add-service=samba
$ sudo firewall-cmd --reload
Freigabe eines Verzeichnisses in /home
In diesem Beispiel geben Sie ein Verzeichnis innerhalb Ihres Home-Verzeichnisses frei, auf das nur Ihr Benutzer Zugriff hat.
Samba verwendet nicht die Betriebssystembenutzer zur Authentifizierung. Daher muss Ihr Benutzerkonto in Samba dupliziert werden. Wenn Ihr Konto auf dem Host beispielsweise jane lautet, muss der Benutzer jane auch in Samba angelegt werden. Die Benutzernamen müssen übereinstimmen, die Passwörter können jedoch unterschiedlich sein.
Erstellen Sie einen Benutzer namens jane in Samba:
$ sudo smbpasswd -a jane
Erstellen Sie ein Verzeichnis, das als Freigabe für jane dienen soll, und legen Sie den korrekten SELinux-Kontext fest:
$ mkdir /home/jane/share
$ sudo semanage fcontext --add --type "samba_share_t" "/home/jane/share(/.*)?"
$ sudo restorecon -R ~/share
Die Samba-Konfiguration befindet sich in der Datei /etc/samba/smb.conf. Durch Hinzufügen des folgenden Abschnitts am Ende der Datei wird Samba angewiesen, für jane eine Freigabe namens „share“ im soeben erstellten Verzeichnis /home/jane/share einzurichten.
[share]
comment = My Share
path = /home/jane/share
writeable = yes
browseable = yes
public = yes
create mask = 0644
directory mask = 0755
write list = user
Starten Sie Samba neu, damit die Änderungen wirksam werden:
$ sudo systemctl restart smb
Freigabe eines Verzeichnisses für viele Benutzer
In diesem Beispiel geben Sie ein Verzeichnis (außerhalb Ihres Home-Verzeichnisses) frei und erstellen eine Gruppe von Benutzern, die Lese- und Schreibrechte für die Freigabe haben.
Beachten Sie, dass ein Samba-Benutzer auch Systembenutzer sein muss, um die Dateisystemberechtigungen zu berücksichtigen. In diesem Beispiel wird eine Systemgruppe myfamily für zwei neue Benutzer, jack und maria, erstellt.
$ sudo groupadd myfamily
$ sudo useradd -G myfamily jack
$ sudo useradd -G myfamily maria
|
Sie könnten diese Benutzer ohne Systempasswort anlegen. Dadurch würde der Zugriff auf das System über SSH oder lokale Anmeldung verhindert. |
Fügen Sie jack und maria zu Samba hinzu und erstellen Sie deren Passwörter:
$ sudo smbpasswd -a jack
$ sudo smbpasswd -a maria
Richten Sie das freigegebene Verzeichnis ein:
$ sudo mkdir /home/share
$ sudo chgrp myfamily /home/share
$ sudo chmod 770 /home/share
$ sudo semanage fcontext --add --type "samba_share_t" "/home/share(/.*)?"
$ sudo restorecon -R /home/share
Jede Freigabe wird durch einen eigenen Abschnitt in der Datei /etc/samba/smb.conf beschrieben. Fügen Sie diesen Abschnitt am Ende der Datei hinzu:
[family]
comment = Family Share
path = /home/share
writeable = yes
browseable = yes
public = yes
valid users = @myfamily
create mask = 0660
directory mask = 0770
force group = +myfamily
Erläuterung des Vorstehenden:
-
valid users: Nur Benutzer der Gruppefamilyhaben Zugriffsrechte. Das @ kennzeichnet einen Gruppennamen. -
force group = +myfamily: Dateien und Verzeichnisse werden mit dieser Gruppe anstelle der Benutzergruppe erstellt. -
create mask = 0660: Die Dateien in der Freigabe werden mit Berechtigungen erstellt, die es allen Gruppenbenutzern ermöglichen, von anderen Benutzern erstellte Dateien zu lesen und zu schreiben. -
directory mask = 0770: wie zuvor, aber für Verzeichnisse.
Starten Sie Samba neu, damit die Änderungen wirksam werden:
$ sudo systemctl restart smb
Samba-Benutzer verwalten
Ein Samba-Benutzerpasswort ändern
Wichtig: Die Passwörter für den Systembenutzer und den Samba-Benutzer können unterschiedlich sein. Der Systembenutzer wird benötigt, um die Dateisystemberechtigungen zu verwalten.
$ sudo smbpasswd maria
=== Einen Samba-Benutzer entfernen
$ sudo smbpasswd -x maria
Falls Sie den Systembenutzer nicht benötigen, entfernen Sie ihn ebenfalls:
$ sudo userdel -r maria
== Fehlerbehebung und Protokolle
Die Samba-Protokolldateien befinden sich in /var/log/samba/
$ sudo tail -f /var/log/samba/log.smbd
Sie können die Ausführlichkeit erhöhen, indem Sie Folgendes zum Abschnitt [global] der Datei /etc/samba/smb.conf hinzufügen:
[global]
loglevel = 5
Um die Syntax der Konfigurationsdatei /etc/samba/smb.conf zu überprüfen, verwenden Sie den Befehl testparm. Beispielausgabe:
Load smb config files from /etc/samba/smb.conf
Loaded services file OK.
Server role: ROLE_STANDALONE
Um die aktuellen Samba-Verbindungen anzuzeigen, verwenden Sie den Befehl smbstatus. Beispielausgabe:
Samba version 4.12.3
PID Username Group Machine Protocol Version Encryption Signing
----------------------------------------------------------------------------------------------------------------------------------------
7259 jack jack 192.168.122.1 (ipv4:192.168.122.1:40148) SMB3_11 - partial(AES-128-CMAC)
Service pid Machine Connected at Encryption Signing
---------------------------------------------------------------------------------------------
family 7259 192.168.122.1 Fri May 29 14:03:26 2020 AEST - -
No locked files
Einige Dinge, die Sie überprüfen sollten, wenn Sie nicht auf die Freigabe zugreifen können.
-
Stellen Sie sicher, dass der Benutzer sowohl als Systembenutzer als auch als Samba-Benutzer existiert + Suchen Sie
mariain der Samba-Datenbank: + [source, console]
$ sudo pdbedit -L | grep maria maria:1002:
+
Bestätigen Sie, dass maria auch als Systembenutzer existiert.
+
$ cat /etc/passwd | grep maria
maria:x:1002:1002::/home/maria:/bin/bash
+ . Prüfen Sie, ob das freigegebene Verzeichnis und die Unterverzeichnisse den korrekten SELinux-Kontext haben.
+
$ ls -dZ /home/share
unconfined_u:object_r:samba_share_t:s0 /home/share
+ . Prüfen Sie, ob der Systembenutzer die Zugriffsberechtigung für das freigegebene Verzeichnis besitzt.
+
$ ls -ld /home/share
drwxrwx---. 2 root myfamily 4096 May 29 14:03 /home/share
+
In diesem Fall sollte der Benutzer der Gruppe myfamily angehören.
-
Prüfen Sie in der Konfigurationsdatei
/etc/samba/smb.conf, ob der Benutzer und die Gruppe über die entsprechenden Zugriffsrechte verfügen.[family] comment = Family Share path = /home/share writeable = yes browseable = yes public = yes valid users = @myfamily create mask = 0660 directory mask = 0770 force group = +myfamilyIn diesem Fall sollte der Benutzer der Gruppe
myfamilyangehören.
-
Prüfen Sie in der Samba-Konfigurationsdatei, ob der Benutzer/die Gruppe Schreibberechtigungen besitzt. + [source, conf]
[family]
comment = Family Share
path = /home/share
writeable = yes
browseable = yes
public = yes
valid users = @myfamily
create mask = 0660
directory mask = 0770
force group = +myfamily
+
In diesem Beispiel sollte der Benutzer der Gruppe myfamily angehören.
-
Überprüfen Sie die Berechtigungen des Freigabeverzeichnisses.
$ ls -ld /home/share drwxrwx---. 2 root myfamily 4096 May 29 14:03 /home/shareDieses Beispiel setzt voraus, dass der Benutzer Teil der Gruppe
myfamilyist, die über Lese-, Schreib- und Ausführungsberechtigungen für das Verzeichnis verfügt.
Want to help? Learn how to contribute to Fedora Docs ›