GNU/Linux >> LINUX-Kenntnisse >  >> Cent OS

So installieren und konfigurieren Sie Samba auf RHEL 8 / CentOS 8

Samba stellt Server- und Client-Software bereit, um die gemeinsame Nutzung von Dateien zwischen Linux- und Windows-Rechnern zu ermöglichen. Die Installation und Konfiguration unter RHEL 8 / CentOS 8 ist recht einfach. Lesen Sie weiter, um zu erfahren, wie Sie ein Verzeichnis mit Samba teilen und wie Sie den entsprechenden SELinux-Kontext darauf anwenden.

In diesem Tutorial lernen Sie:

  • So installieren Sie Samba auf RHEL8
  • So aktivieren und starten Sie die smb- und nmb-Daemons
  • So erstellen Sie eine Samba-Freigabe
  • Wie man die Firewall einrichtet, um den Zugriff auf die Samba-Freigabe zu erlauben
  • Wie man den richtigen SELinux-Kontext einrichtet, damit Samba richtig funktioniert

Samba-Freigaben auf RHEL 8 / CentOS 8

Softwareanforderungen und verwendete Konventionen

Softwareanforderungen und Linux-Befehlszeilenkonventionen
Kategorie Anforderungen, Konventionen oder verwendete Softwareversion
System Red Hat Enterprise Linux 8
Software Pakete für Samba, coreutils und policycoreutils-python-utils
Andere Berechtigung zum Ausführen des Befehls mit Root-Rechten.
Konventionen # – erfordert, dass bestimmte Linux-Befehle mit Root-Rechten ausgeführt werden, entweder direkt als Root-Benutzer oder durch Verwendung von sudo Befehl
$ – erfordert, dass bestimmte Linux-Befehle als normaler, nicht privilegierter Benutzer ausgeführt werden

Einführung in Samba

Samba ist, wie auf der Homepage des Projekts angegeben, eine Open-Source-Software, veröffentlicht unter GPL Lizenz, die es uns erlaubt, Dateien und Druckdienste über SMB/CIFS gemeinsam zu nutzen Protokoll.

Das Projekt stellt sowohl Server- als auch Client-Software bereit, um die Zusammenarbeit mit Windows-Rechnern zu ermöglichen, was die ideale Lösung in gemischten Umgebungen darstellt. In diesem Tutorial werden wir sehen, wie man Samba auf Red Hat Enterprise Linux 8 installiert, wie man eine Samba-Freigabe einrichtet, wie man die Firewall einrichtet, um den Zugriff auf freigegebene Ressourcen zu erlauben, und wie man den entsprechenden SELinux-Kontext anwendet.

Installation

Als erstes müssen wir Samba auf unserem Rechner installieren. Das Paket und die benötigten Bibliotheken sind in den offiziellen RHEL 8 / CentOS 8-Repositories verfügbar, daher können wir sie einfach mit yum oder dnf installieren. In dieser Version von RHEL/CentOS ist der erste Befehl nur ein „Link“ zum zweiten:

$ sudo dnf install samba samba-client

Das Paket samba-client wird nicht unbedingt benötigt, aber die von ihm bereitgestellten Dienstprogramme können nützlich sein. Sobald die Pakete installiert sind, müssen wir smb starten und aktivieren und das nmb Dämonen beim Booten. Der erste ist der Daemon, der sich um die eigentlichen Übertragungen und Freigabeoperationen kümmert, während der zweite das NetBIOS durchführt Namensauflösungen, sodass die Ressourcen beim Durchsuchen des Netzwerks unter Windows angezeigt werden. Wir können jetzt beide systemd-Dienste mit nur einem Befehl aktivieren und starten:

$ sudo systemctl enable --now {smb,nmb}

Firewall konfigurieren

Der nächste Schritt ist die Firewall-Konfiguration. Wir müssen die entsprechenden Ports öffnen, damit die von Samba gemeinsam genutzten Ressourcen von anderen Maschinen aus zugänglich sind. Die standardmäßige Firewall-Verwaltungssoftware auf RHEL 8/CentOS 8 ist firewalld.

Zum Glück müssen Ports nicht manuell geöffnet werden:Wir müssen lediglich den „samba“-Dienst zu unserer Zone hinzufügen. Ein „Dienst“ ist nur eine Abstraktion, mit der wir Datenverkehr durch alle von einem Dienst benötigten Ports zulassen können, indem wir auf den Dienstnamen verweisen, anstatt jeden von ihm verwendeten Port einrichten (und speichern) zu müssen. Falls wir Informationen über einen „Dienst“ sammeln möchten, können wir Folgendes ausführen:

$ sudo firewall-cmd --info-service samba
samba
  ports: 137/udp 138/udp 139/tcp 445/tcp
  protocols:
  source-ports:
  modules: netbios-ns
  destination:

Aus der Ausgabe des Befehls sehen wir, dass der Dienst Datenverkehr über die Ports 173/udp, 138/udp, 139/tcp und 445/tcp zulässt. Um den Dienst dauerhaft zur Standardzone hinzuzufügen, können wir Folgendes ausführen:

$ sudo firewall-cmd --permanent --add-service=samba

Beim Ausführen des Befehls haben wir den --permanent verwendet wechseln, um unsere Änderung dauerhaft zu machen. Wir haben auch den default angenommen Zone verwendet werden. Wenn wir eine andere Zone angeben wollten, auf die die Aktion angewendet werden soll, hätten wir --zone verwendet Option und den Zonennamen als Argument angegeben (z. B. –zone=external). Da unsere Änderung dauerhaft sein soll, müssen wir die Firewall-Konfiguration neu laden, damit sie wirksam wird:

$ sudo firewall-cmd --reload

Wir können überprüfen, ob der „samba“-Dienst jetzt Teil unserer Zone ist, indem wir Folgendes ausführen:

$ sudo firewall-cmd --list-services
cockpit dhcpv6-client http samba ssh

Wenn keine Zone angegeben ist, wird der Befehl erneut auf die Standardzone angewendet.

Konfigurieren eines freigegebenen Verzeichnisses, auf das Gäste zugreifen können

Angenommen, wir möchten ein Verzeichnis über Samba freigeben und Gastbenutzern freien Zugriff auf dieses Verzeichnis gewähren, ohne dass sie ein Passwort angeben müssen. Um das gewünschte Ergebnis zu erhalten, müssen wir einige Änderungen an /etc/samba/smb.conf vornehmen -Datei und fügen Sie eine „Strophe“ für unsere Freigabe hinzu. Öffnen Sie die Datei mit Ihrem bevorzugten Editor und in der [global] Abschnitt, fügen Sie den hervorgehobenen Text hinzu:

[global]
        workgroup = SAMBA
        security = user

        passdb backend = tdbsam

        printing = cups
        printcap name = cups
        load printers = yes
        cups options = raw
        map to guest = bad user

Die map to guest = bad user , ordnet Anmeldeversuche mit ungültigen Benutzernamen dem standardmäßigen Gastbenutzer zu, der standardmäßig nobody ist . Dies wird benötigt, um anonymen Zugriff zu ermöglichen, ohne ein Passwort angeben zu müssen.

Nach dieser Änderung müssen wir am Ende der Datei eine neue Strophe für unsere Freigabe anhängen. Wir nennen die freigegebene Ressource „linuxconfig“:

[linuxconfig]
        path = /mnt/shared
        guest only = yes

Mit dem obigen Setup haben wir erklärt, dass wir den Inhalt von /mnt/shared teilen wollen Verzeichnis, ohne dass eine Benutzerauthentifizierung erforderlich ist. Dieses Setup ist offensichtlich riskant und wird hier nur als Beispiel aufgeführt:In einem realen Szenario möchten Sie möglicherweise Gästen zumindest den Schreibzugriff verweigern (Sie können dies tun, indem Sie writeable = no hinzufügen Anweisung). Damit die Änderungen wirksam werden, müssen wir die Daemons neu starten:

$ sudo systemctl restart {smb,nmb}

Konfigurieren Sie eine Freigabe, auf die nur registrierte Benutzer zugreifen können

Um den Zugriff auf eine Ressource mit einer Anmeldeaufforderung zu schützen, müssen wir, wenn Samba als eigenständiger Server läuft, einen vorhandenen Benutzer zur Samba-Datenbank hinzufügen. Die Anmeldeinformationen dieses Benutzers sind für den Zugriff auf das freigegebene Verzeichnis erforderlich. Aus Sicherheitsgründen empfiehlt es sich, einen dedizierten Benutzer für diese Aufgabe zu erstellen, die Erstellung seines Home-Verzeichnisses wegzulassen und ihm eine gefälschte Shell zuzuweisen:

$ sudo adduser -M sambauser -s /sbin/nologin

Das -M Die an den Befehl übergebene Option ist die Kurzform für --no-create-home , was ziemlich selbsterklärend ist; das -s Lassen Sie uns stattdessen eine Shell angeben, in diesem Fall absichtlich eine ungültige:/sbin/nologin . Zu diesem Zeitpunkt muss der Benutzer nicht einmal ein Passwort auf unserem System festlegen.

Sobald der Benutzer erstellt ist, müssen wir ihn zur Samba-Datenbank hinzufügen:Wir können die Operation mit smbpasswd ausführen Befehl:

$ sudo smbpasswd -a sambauser
New SMB password:
Retype new SMB password:
Added user sambauser.

Nach dem Ausführen des Befehls werden wir aufgefordert, ein Passwort für den Benutzer zu vergeben und auch zu bestätigen:Dieses Passwort ist nur im Samba-Kontext gültig, hat nichts mit dem Benutzerkonto auf unserem System zu tun. Um die zuvor erstellte Freigabe einzuschränken, müssen wir im entsprechenden Abschnitt eine kleine Änderung vornehmen:

[linuxconfig]
        path = /mnt/shared
        guest ok = no

Wir können überprüfen, ob unser Setup gültig ist, indem wir testparm verwenden Befehl:

$ testparm
Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
Processing section "[homes]"
Processing section "[printers]"
Processing section "[print$]"
Processing section "[linuxconfig]"
Loaded services file OK.
Server role: ROLE_STANDALONE

Auch hier müssen wir das smb neu starten und nmb Daemons, damit unsere Änderungen wirksam werden. Auf das freigegebene Verzeichnis kann jetzt nur zugegriffen werden, nachdem die richtigen Anmeldeinformationen angegeben wurden.

Setup SELinux für Samba

SELinux wird oft als Komplikation angesehen und sofort deaktiviert. Dies ist nicht erforderlich:Wir müssen nur lernen, wie man es konfiguriert, und von der Verbesserung der Sicherheit profitieren, die es bietet. Damit unsere Samba-Freigabe funktioniert, wenn sich SELinux im „erzwingenden“ Modus befindet, müssen wir unserem gemeinsam genutzten Verzeichnis und den Dateien den entsprechenden Kontext zuweisen:

$ sudo chcon -R -t samba_share_t /mnt/shared

Im obigen Beispiel haben wir den chcon verwendet Befehl mit dem -t Option, um den TYPE zu ändern Abschnitt des SELinux-Kontexts zu samba_share_t . Wir haben auch das -R verwendet Schalter, um den Befehl rekursiv zu machen. Diese Änderung wird einen Neustart überleben, aber nicht eine Neubenennung des Systems, wenn eine Standardrichtlinie für unser Verzeichnis und unsere Dateien existiert, da in einem solchen Fall die Standardkonfiguration erneut angewendet würde.

Wenn wir möchten, dass unsere Änderung ein Umbenennungsereignis überlebt, müssen wir unsere Regel zur Richtlinie hinzufügen. Wir können dies tun, indem wir semanage verwenden Befehl:

$ sudo semanage fcontext -a -t samba_share_t "/mnt/shared(/.*)?"

Da wir den (/.*)? verwendet haben regex, wird die Regel auf den gesamten Inhalt des „freigegebenen“ Verzeichnisses und auf das Verzeichnis selbst angewendet. Wir können überprüfen, ob unsere Regel zur Richtlinie hinzugefügt wurde, indem wir die auf unserem System verwendeten Labels auflisten:

$ sudo semanage fcontext -l | grep /mnt/shared
/mnt/shared(/.*)?                                  all files          system_u:object_r:samba_share_t:s0

Wir sollten jetzt ein funktionierendes Samba-Setup haben. Um die Samba-Konfiguration weiter zu optimieren, müssen wir möglicherweise auch SELinux-Booleans manipulieren. Wenn wir beispielsweise bestehende Benutzer zu Samba hinzufügen, müssen wir den dedizierten SELinux-Booleschen Wert aktivieren, damit ihre Home-Verzeichnisse gemeinsam genutzt werden können. Um alle booleschen Werte aufzulisten, die sich auf Samba beziehen, können wir Folgendes ausführen:

$ sudo semanage boolean -l|grep samba
samba_create_home_dirs         (off  ,  off)  Allow samba to create home dirs
samba_domain_controller        (off  ,  off)  Allow samba to domain controller
samba_enable_home_dirs         (off  ,  off)  Allow samba to enable home dirs
samba_export_all_ro            (off  ,  off)  Allow samba to export all ro
samba_export_all_rw            (off  ,  off)  Allow samba to export all rw
samba_load_libgfapi            (off  ,  off)  Allow samba to load libgfapi
samba_portmapper               (off  ,  off)  Allow samba to portmapper
samba_run_unconfined           (off  ,  off)  Allow samba to run unconfined
samba_share_fusefs             (off  ,  off)  Allow samba to share fusefs
samba_share_nfs                (off  ,  off)  Allow samba to share nfs
sanlock_use_samba              (off  ,  off)  Allow sanlock to use samba
tmpreaper_use_samba            (off  ,  off)  Allow tmpreaper to use samba
use_samba_home_dirs            (off  ,  off)  Allow use to samba home dirs
virt_use_samba                 (off  ,  off)  Allow virt to use samba

In der obigen Ausgabe zeigt die zweite Spalte den aktuellen Wert des booleschen Werts an, während die dritte den Standardwert darstellt (beide sind in diesem Fall deaktiviert). Der boolesche Wert, den wir aktivieren möchten, um die gemeinsame Nutzung von Home-Verzeichnissen zu ermöglichen, ist samba_enable_home_dirs . Wir können die Operation ausführen, indem wir setsebool verwenden Befehl:

$ sudo setsebool samba_enable_home_dirs=1

Schlussfolgerungen

In diesem Tutorial haben wir gesehen, wie man Samba auf einem RHEL 8 / CentOS 8-System installiert. Wir haben auch gesehen, wie man ein Verzeichnis freigibt, Gästen Zugriff gewährt oder es auf authentifizierte Benutzer beschränkt. Wir haben auch gesehen, wie man die Firewall konfiguriert, damit die Freigabe von anderen Computern im Netzwerk aus zugänglich ist.

Schließlich haben wir gesehen, wie die erforderlichen Änderungen vorgenommen werden, um ein funktionierendes Samba-Setup mit SELinux im „erzwingenden“ Modus zu haben. Wenn Sie sich für SELinux interessieren, können Sie auch unseren Artikel zum Thema lesen.


Cent OS
  1. So installieren und konfigurieren Sie Nginx unter CentOS 7

  2. So installieren und konfigurieren Sie R auf einem Linux-System mit RHEL 8 / CentOS 8

  3. CentOS / RHEL 7 :So installieren und konfigurieren Sie Telnet

  4. So installieren und konfigurieren Sie Samba in CentOS / RHEL

  5. So installieren und konfigurieren Sie Telnet in RHEL / CentOS 5,6

So installieren und konfigurieren Sie den VNC-Server in CentOS 7 / RHEL 7

So installieren und konfigurieren Sie Samba unter CentOS 8

So installieren Sie Samba auf RHEL und CentOS Stream

So installieren und konfigurieren Sie Jenkins unter CentOS 8 / RHEL 8

So installieren und konfigurieren Sie MariaDB in CentOS / RHEL 7

So installieren und konfigurieren Sie VNC Server unter CentOS/RHEL 8