GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

Installieren und konfigurieren Sie den Samba-Server unter Ubuntu für die Dateifreigabe

In diesem Tutorial lernen wir, wie man einen Samba-Server unter Ubuntu installiert und konfiguriert, um Dateien im lokalen Netzwerk freizugeben. Samba ist eine kostenlose und quelloffene SMB/CIFS-Protokollimplementierung für Unix und Linux, die die Datei- und Druckfreigabe zwischen Unix/Linux-, Windows- und macOS-Rechnern in einem lokalen Netzwerk ermöglicht.

Samba wird normalerweise unter Linux installiert und ausgeführt. Es umfasst mehrere Programme, die unterschiedlichen, aber verwandten Zwecken dienen, von denen die beiden wichtigsten sind:

  • smbd :bietet SMB/CIFS-Dienst (Dateifreigabe und Drucken), kann auch als Windows-Domänencontroller fungieren.
  • nmbd :Dieser Daemon stellt den NetBIOS-Namensdienst bereit und lauscht auf Nameserver-Anforderungen. Es ermöglicht auch, dass der Samba-Server von anderen Computern im Netzwerk gefunden wird.

So installieren Sie Samba Server auf Ubuntu

Samba ist in den meisten Linux-Distributionen enthalten. Um Samba auf Ubuntu zu installieren, führen Sie einfach den folgenden Befehl im Terminal aus.

sudo apt install samba samba-common-bin

Die neueste verfügbare stabile Version ist 4.12.0, veröffentlicht am 3. März 2019. Um Ihre Samba-Version zu überprüfen, führen Sie

aus
smbd --version

Beispielausgabe:

Version 4.7.6-Ubuntu

Um zu überprüfen, ob der Samba-Dienst läuft, führen Sie den folgenden Befehl aus.

systemctl status smbd nmbd

Um diese beiden Dienste zu starten, geben Sie den folgenden Befehl ein:

sudo systemctl start smbd nmbd

Einmal gestartet, smbd wird auf den TCP-Ports 139 und 445 lauschen. nmbd wird auf den UDP-Ports 137 und 138 lauschen.

  • TCP 139:Wird für Datei- und Druckerfreigabe und andere Vorgänge verwendet.
  • TCP 445:der NetBIOS-lose CIFS-Port.
  • UDP 137:Wird zum Durchsuchen des NetBIOS-Netzwerks verwendet.
  • UDP 138:Wird für den NetBIOS-Namensdienst verwendet.

Wenn Sie die UFW-Firewall auf Ubuntu aktiviert haben, müssen Sie die oben genannten Ports in der Firewall mit dem folgenden Befehl öffnen.

sudo ufw allow samba

Erstellen Sie eine private Samba-Freigabe

In diesem Abschnitt werden wir sehen, wie man eine private Samba-Freigabe erstellt, bei der der Client einen Benutzernamen und ein Passwort eingeben muss, um Zugriff zu erhalten. Die Hauptkonfigurationsdatei von Samba befindet sich unter:/etc/samba/smb.conf . Sie können es im Terminal mit einem Befehlszeilen-Texteditor wie nano bearbeiten .

sudo nano /etc/samba/smb.conf

In der [global] Stellen Sie sicher, dass im Abschnitt workgroup der Wert angegeben ist Dasselbe gilt für die Arbeitsgruppeneinstellungen von Windows-Computern.

workgroup = WORKGROUP

Sie finden die Einstellung auf Ihrem Windows-Computer unter Control Panel> System and Security> System .

Scrollen Sie dann zum Ende der Datei. (Im Nano-Texteditor können Sie dies erreichen, indem Sie CTRL+W drücken dann CTRL+V . ) Fügen Sie einen neuen Abschnitt wie unten hinzu.

[Private]

comment = needs username and password to access
path = /srv/samba/private/
browseable = yes
guest ok = no
writable = yes
valid users = @samba

Erklärung:

  • Private ist der Ordnername, der im Windows-Netzwerk angezeigt wird.
  • Der Kommentar ist eine Beschreibung für den freigegebenen Ordner.
  • Der Pfadparameter gibt den Pfad zum freigegebenen Ordner an. Ich verwende /srv/samba/private/ als Beispiel. Sie können auch einen Ordner in Ihrem Home-Verzeichnis verwenden.
  • browseable = yes :Anderen Computern im Netzwerk erlauben, den Samba-Server und die Samba-Freigabe zu sehen. Wenn auf no gesetzt, müssen Benutzer den Namen des Samba-Servers kennen und dann manuell einen Pfad im Dateimanager eingeben, um auf den freigegebenen Ordner zuzugreifen.
  • guest ok = no :Gastzugriff deaktivieren. Mit anderen Worten, Sie müssen den Benutzernamen und das Passwort auf dem Client-Computer eingeben, um auf den freigegebenen Ordner zuzugreifen.
  • writable = yes :Gewährt Clients sowohl Lese- als auch Schreibberechtigung.
  • valid users = @samba :Nur Benutzer in der Samba-Gruppe dürfen auf diese Samba-Freigabe zugreifen.

Speichern und schließen Sie die Datei. (Um die Datei im Nano-Texteditor zu speichern, drücken Sie Ctrl+O , und drücken Sie dann die Eingabetaste, um den zu schreibenden Dateinamen zu bestätigen. Um die Datei zu schließen, drücken Sie Ctrl+X .) Jetzt müssen wir einen Samba-Benutzer erstellen. Zuerst müssen wir mit dem folgenden Befehl ein Standard-Linux-Benutzerkonto erstellen. Ersetzen Sie username mit Ihrem gewünschten Benutzernamen.

sudo adduser username

Sie werden aufgefordert, ein Unix-Passwort festzulegen. Danach müssen Sie mit dem folgenden Befehl auch ein separates Samba-Passwort für den neuen Benutzer festlegen:

sudo smbpasswd -a username

Erstellen Sie die Samba-Gruppe.

sudo groupadd samba

Und fügen Sie diesen Benutzer der Samba-Gruppe hinzu.

sudo gpasswd -a username samba

Erstellen Sie den privaten Freigabeordner.

sudo mkdir -p /srv/samba/private/

Die Samba-Gruppe muss Lese-, Schreib- und Ausführungsberechtigung für den freigegebenen Ordner haben. Sie können diese Berechtigungen erteilen, indem Sie den folgenden Befehl ausführen. (Falls Ihr System nicht über die setfacl Befehl müssen Sie die acl installieren Paket mit sudo apt install acl .)

sudo setfacl -R -m "g:samba:rwx" /srv/samba/private/

Führen Sie als Nächstes den folgenden Befehl aus, um zu prüfen, ob syntaktische Fehler vorliegen.

testparm

Jetzt müssen Sie nur noch smbd neu starten und nmbd Dämon.

sudo systemctl restart smbd nmbd

So erstellen Sie eine öffentliche Samba-Freigabe ohne Authentifizierung

Um eine öffentliche Freigabe ohne Benutzername und Passwort zu erstellen, müssen die folgenden Bedingungen erfüllt sein.

  • Setzen Sie security = user im globalen Abschnitt der Samba-Konfigurationsdatei. Sie können jedoch mit security = share eine öffentliche Freigabe erstellen Modus, aber dieser Sicherheitsmodus ist veraltet. Es wird dringend empfohlen, share zu vermeiden Modus.
  • Setze map to guest = bad user im globalen Abschnitt der Samba-Konfigurationsdatei. Dies wird smbd verursachen um ein Gastkonto zu verwenden, um Clients zu authentifizieren, die kein registriertes Konto auf dem Samba-Server haben. Da es sich um ein Gastkonto handelt, müssen Samba-Clients kein Passwort eingeben.
  • Setze guest ok = yes in der Share-Definition, um den Gastzugriff zu erlauben.
  • Erteilen Sie nobody die Lese-, Schreib- und Ausführungsberechtigung für den öffentlichen Ordner Konto, das das Standard-Gastkonto ist.

Tatsächlich sind die ersten beiden Bedingungen bereits erfüllt, da Samba standardmäßig diese beiden Einstellungen verwendet.

Hier ist eine Schritt-für-Schritt-Anleitung zum Erstellen einer öffentlichen Freigabe. Öffnen und bearbeiten Sie zunächst die Samba-Konfigurationsdatei.

sudo nano /etc/samba/smb.conf

In der [global] Stellen Sie sicher, dass im Abschnitt workgroup der Wert angegeben ist Dasselbe gilt für die Arbeitsgruppeneinstellungen von Windows-Computern.

workgroup = WORKGROUP

Sie finden die Einstellung auf Ihrem Windows-Computer unter Control Panel> System and Security> System .

Scrollen Sie dann zum Ende der Datei und fügen Sie die folgenden Zeilen ein.

[public]

comment = public share, no need to enter username and password
path = /srv/samba/public/
browseable = yes
writable = yes
guest ok = yes

Speichern und schließen Sie die Datei. Als nächstes erstellen Sie /srv/samba/public/ Ordner.

sudo mkdir -p /srv/samba/public

Stellen Sie dann sicher, dass nobody Konto hat Lese-, Schreib- und Ausführungsberechtigung für den öffentlichen Ordner, indem Sie den folgenden Befehl ausführen. (Falls Ihr System nicht über die setfacl Befehl müssen Sie die acl installieren Paket mit sudo apt install acl .)

sudo setfacl -R -m "u:nobody:rwx" /srv/samba/public/

Starten Sie smbd und nmbd neu.

sudo systemctl restart smbd nmbd

Zugriff auf den freigegebenen Samba-Ordner von Windows aus

Öffnen Sie auf einem Windows-Computer, der sich im selben Netzwerk befindet, den Datei-Explorer und klicken Sie auf Network auf der linken Seite. Wenn Sie die folgende Meldung sehen, müssen Sie auf die Meldung klicken und die Netzwerkerkennung und Dateifreigabe aktivieren.

File sharing is turned off. Some network computers and devices might not be visible.

Geben Sie als nächstes \\ ein gefolgt von der IP-Adresse des Samba-Servers in der Adressleiste des Datei-Explorers, etwa so:\\192.168.0.102 . Sie sehen eine Liste der freigegebenen Ressourcen auf dem Samba-Server.

Doppelklicken Sie dann auf den freigegebenen Ordner. Um auf die private Freigabe zuzugreifen, müssen Sie den Samba-Benutzernamen und das Kennwort eingeben. Sie müssen dies nicht tun, um auf öffentliche Freigaben zuzugreifen.

Sobald die Verbindung hergestellt ist, können Sie Dateien im freigegebenen Samba-Ordner lesen, schreiben und löschen.

Verbindungsfehler

Wenn Sie die folgende Fehlermeldung erhalten:

You do not have permission to access \\hostname\share-name. Contact your network administrator to request access.

Sie können versuchen, sich über die Eingabeaufforderung mit der Samba-Freigabe zu verbinden. Öffnen Sie eine Eingabeaufforderung und führen Sie dann den folgenden Befehl aus, um die aktuelle Samba-Sitzung zu schließen.

net use \\samba-server-ip\share-name /delete

Verbinden Sie sich als Nächstes mit dem folgenden Befehl mit der Samba-Freigabe:

net use \\samba-server-ip\share-name /user:samba-username password

Sobald der obige Befehl erfolgreich ausgeführt wurde, gehen Sie im Datei-Explorer zur Registerkarte Netzwerk, und jetzt sollten Sie auf die Samba-Freigabe zugreifen können.

Laufwerkzuordnung unter Windows

Eine Funktion des Windows-Betriebssystems ist die Fähigkeit, einen Laufwerksbuchstaben (z. B. S:) einem Remote-Verzeichnis zuzuordnen. Um den Laufwerksbuchstaben S: zuzuordnen zur Samba-Freigabe, klicken Sie mit der rechten Maustaste auf den freigegebenen Samba-Ordner und wählen Sie Netzlaufwerk verbinden . Wählen Sie dann einen Laufwerksbuchstaben und klicken Sie auf Fertig stellen.

Sobald die Laufwerkszuordnung eingerichtet ist, können Anwendungen über den Laufwerksbuchstaben S: auf die Dateien in der Samba-Freigabe zugreifen . Und diese Samba-Freigabe wird automatisch gemountet, wenn Sie sich bei Ihrem Windows-Computer anmelden.

Zugriff auf den Samba-Freigabeordner im Nautilus-Dateimanager unter Linux

Wenn Sie den Nautilus-Dateimanager verwenden, klicken Sie auf Other Locations auf der linken Seite. Unten sehen Sie eine Option zum Server verbinden . Um auf Ihre Samba-Freigabe zuzugreifen, geben Sie smb:// ein gefolgt von der IP-Adresse des Samba-Servers und drücken Sie die Eingabetaste. Zum Beispiel:

  • smb://192.168.0.102

Sie sehen eine Liste der freigegebenen Ressourcen auf dem Samba-Server.

Wenn Sie auf den privaten freigegebenen Ordner klicken, müssen Sie den Samba-Benutzernamen und das Kennwort eingeben. Wenn Sie auf den öffentlichen freigegebenen Ordner klicken, wählen Sie die Verbindung als anonym.

Wenn Sie die folgende Fehlermeldung sehen,

failed to retrieve share list from server

Sie können versuchen, diesen Fehler zu beheben, indem Sie die Samba-Freigabe von der Befehlszeile aus mounten, was unten beschrieben wird.

Samba-Freigabe automatisch von der Befehlszeile unter Linux mounten

Hinweis :Automatisches Mounten der Samba share erfolgt auf Clients. Diese Befehle sollten auf einem Samba-Client ausgeführt werden, wenn der Samba-Client Linux ausführt. Sie sollten dies nicht auf dem Samba-Server selbst tun.

Wenn Sie die Samba-Freigabe beim Booten automatisch einhängen müssen, können Sie die Befehlszeile zum Einhängen verwenden und dann einen Eintrag in /etc/fstab hinzufügen Datei. Dazu müssen Sie die cifs-utils installieren Paket.

CentOS/RHEL

sudo dnf install cifs-utils

Debian/Ubuntu

sudo apt install cifs-utils

Erstellen Sie dann einen Einhängepunkt für die Samba-Freigabe.

sudo mkdir /mnt/samba-private

Jetzt können Sie den folgenden Befehl verwenden, um einen privaten freigegebenen Ordner zu mounten.

sudo mount -t cifs -o username=your_samba_username //192.168.0.102/private /mnt/samba-private/

Sie werden aufgefordert, das Samba-Passwort einzugeben. Danach wird es unter /mnt/samba-private/ gemountet Verzeichnis.

Um die Samba-Freigabe automatisch einzuhängen, bearbeiten Sie /etc/fstab Datei.

sudo nano /etc/fstab

Fügen Sie die folgende Zeile in die Datei ein.

//192.168.0.102/private  /mnt/samba-private   cifs    x-systemd.automount,_netdev,credentials=/etc/samba-credential.conf,uid=1000,gid=1000,x-gvfs-show   0   0

Wo:

  • //192.168.0.102/privat :die IP-Adresse des Samba-Servers und der Freigabename.
  • /mnt/samba-private :Einhängepunkt für die Samba-Freigabe.
  • cifs :Dateisystemtyp
  • x-systemd.automount :Diese Option weist systemd an, eine Automount-Einheit für das Dateisystem zu erstellen. Wir verwenden dies, weil es sicherstellt, dass das Remote-Dateisystem erst gemountet wird, nachdem ein Netzwerkzugriff besteht.
  • _netdev :Dies gibt an, dass der Mount ein Netzwerk benötigt.
  • Anmeldeinformationen= :Linux sollte nach Anmeldeinformationen in /etc/samba-credential.conf suchen Datei.
  • uid=1000,gid=1000 :Standardmäßig gehört das gemountete Dateisystem dem Root-Benutzer. Wir verwenden uid und gid um den Besitz des Dateisystems zu ändern. Normalerweise verwenden Sie Ihre eigene uid und gid , die beide standardmäßig 1000 sind.
  • x-gvfs-show :Wenn Sie die GNOME-Desktopumgebung oder ihre Derivate verwenden, können Sie diese Option verwenden, um das gemountete Dateisystem im Dateimanager anzuzeigen.

Speichern und schließen Sie die Datei. Erstellen Sie dann die Berechtigungsdatei.

sudo nano /etc/samba-credential.conf

Fügen Sie der Datei die folgenden Zeilen hinzu.

username=your_samba_username
password=samba_password
domain=WORKGROUP

Speichern und schließen Sie die Datei. Stellen Sie sicher, dass nur der Root-Benutzer diese Datei lesen kann.

sudo chmod 600 /etc/samba-credential.conf

Wenn Sie Ihren Linux-Rechner jetzt neu starten, wird die Samba-Freigabe automatisch gemountet. Sie können auch den folgenden Befehl ausführen, um die Samba-Freigabe ohne Neustart einzuhängen.

sudo mount -a

Wenn der Fehler „Berechtigung verweigert“ angezeigt wird und Sie die folgende Zeile finden können, indem Sie sudo dmesg ausführen Befehl,

VFS: cifs_mount failed w/return code = -13

es liegt wahrscheinlich daran, dass Sie einen Tippfehler in /etc/samba-credential haben Datei.

Kann nicht in die Samba-Freigabe schreiben?

Der oben beschriebene CIFS-Mount ermöglicht es Ihnen, auf die Samba-Freigabe zu schreiben. Wenn Sie beim Erstellen einer Datei den folgenden Fehler sehen:

Read-only file system

Prüfen Sie, ob Sie writable = yes eingestellt haben in der Samba-Konfigurationsdatei. Manchmal befindet sich der freigegebene Samba-Ordner auf einer externen Festplatte, stellen Sie dann sicher, dass Sie die externe Festplatte im Lese-/Schreibmodus auf dem Samba-Server mounten. Zum Beispiel habe ich mein btrfs gemountet Festplatte mit folgender Zeile in /etc/fstab.

LABEL=5TB   /mnt/5TB   btrfs   defaults   0   0

Es stellt sich heraus, dass die defaults Option erlaubt keine Schreiboperation. Um es beschreibbar zu machen, fügen Sie rw hinzu Option.

LABEL=5TB   /mnt/5TB   btrfs   defaults,rw   0   0

Hängen Sie dann die Festplatte aus. Sie müssen Ihren eigenen Einhängepunkt verwenden.

sudo umount /mnt/5TB

Und mounten Sie es erneut.

sudo mount -a

Tipp zur Fehlerbehebung

Wenn Ihr Samba-Server nicht wie erwartet funktioniert, können Sie die Protokolldateien unter /var/log/samba/ überprüfen Verzeichnis. Sie können die folgende Zeile im [global] hinzufügen Abschnitt von /etc/samba/smb.conf Datei, um die Protokollebene zu erhöhen, wenn Sie mehr Informationen protokollieren möchten.

log level = 2

Ubuntu
  1. So installieren und konfigurieren Sie einen NFS-Server unter Ubuntu 20.04

  2. So installieren und konfigurieren Sie VNC unter Ubuntu 20.04

  3. So installieren und konfigurieren Sie den DHCP-Server unter Ubuntu 20.04

  4. So installieren und konfigurieren Sie den Redis-Server in Ubuntu

  5. Wie installiere und konfiguriere ich Samba unter Ubuntu Linux?

So installieren und konfigurieren Sie LAMP Server unter Ubuntu

So installieren und konfigurieren Sie den OpenLDAP-Server unter Ubuntu 16.04

So installieren und konfigurieren Sie VNC auf Ubuntu Server 20.04

So installieren und konfigurieren Sie die Samba-Dateifreigabe unter Ubuntu 20.04

Installieren und konfigurieren Sie Virtualmin auf Ubuntu 20.04 / Debian 10 Server

So installieren und konfigurieren Sie Samba unter Ubuntu 20.04