GNU/Linux >> Znalost Linux >  >> Cent OS

Jak nainstalovat a nakonfigurovat sambu na RHEL 8 / CentOS 8

Samba poskytuje serverový a klientský software umožňující sdílení souborů mezi počítači se systémem Linux a Windows. Instalace a konfigurace na RHEL 8 / CentOS 8 je docela snadná. Pokračujte ve čtení, abyste se dozvěděli, jak sdílet adresář se sambou a jak na něj použít vhodný kontext SELinux.

V tomto tutoriálu se naučíte:

  • Jak nainstalovat sambu na RHEL8
  • Jak povolit a spustit démony smb a nmb
  • Jak vytvořit sdílení samby
  • Jak nastavit bránu firewall tak, aby umožňovala přístup ke sdílení samba
  • Jak nastavit správný kontext SELinux pro sambu, aby správně fungovala

Samba sdílí na RHEL 8 / CentOS 8

Požadavky na software a použité konvence

Softwarové požadavky a konvence příkazového řádku systému Linux
Kategorie Požadavky, konvence nebo použitá verze softwaru
Systém Red Hat Enterprise Linux 8
Software Balíčky Samba, coreutils a policycoreutils-python-utils
Jiné Oprávnění ke spuštění příkazu s právy root.
Konvence # – vyžaduje, aby dané linuxové příkazy byly spouštěny s právy root buď přímo jako uživatel root, nebo pomocí sudo příkaz
$ – vyžaduje, aby dané linuxové příkazy byly spouštěny jako běžný neprivilegovaný uživatel

Představujeme Sambu

Samba, jak je uvedeno na domovské stránce projektu, je software s otevřeným zdrojovým kódem, vydaný pod GPL licence, která nám umožňuje sdílet soubory a tiskové služby pomocí SMB/CIFS protokol.

Projekt poskytuje serverový i klientský software umožňující spolupráci s počítači se systémem Windows, což představuje ideální řešení ve smíšených prostředích. V tomto tutoriálu uvidíme, jak nainstalovat Sambu na Red Hat Enterprise Linux 8, jak nastavit sdílení samby, jak nastavit firewall pro umožnění přístupu ke sdíleným zdrojům a jak použít vhodný kontext SELinux.

Instalace

První věc, kterou musíme udělat, je nainstalovat sambu na náš počítač. Balíček a potřebné knihovny jsou k dispozici v oficiálních repozitářích RHEL 8 / CentOS 8, takže je můžeme nainstalovat pouze pomocí yum nebo dnf. V této verzi RHEL/CentOS je první příkaz pouze „odkaz“ na druhý:

$ sudo dnf install samba samba-client

Balíček samba-client není nezbytně nutný, ale nástroje, které poskytuje, mohou být užitečné. Jakmile jsou balíčky nainstalovány, musíme spustit a povolit smb a nmb démoni při startu. První je démon, který se stará o provádění skutečných přenosů a operací sdílení, zatímco druhý provádí NetBIOS rozlišení názvů, umožňující zobrazení zdrojů při procházení sítě v systému Windows. Nyní můžeme povolit a spustit obě služby systemd jediným příkazem:

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

Konfigurace brány firewall

Dalším krokem je konfigurace firewallu. Musíme otevřít příslušné porty, aby zdroje sdílené sambou byly přístupné z jiných strojů. Výchozí software pro správu firewallu na RHEL 8 / CentOS 8 je firewalld.

Naštěstí pro nás není potřeba otevírat porty ručně:vše, co musíme udělat, je přidat službu „samba“ do naší zóny. „Služba“ je pouze abstrakce, která nám umožňuje povolit provoz přes všechny porty, které služba potřebuje, odkazem na název služby, místo abychom museli nastavovat (a pamatovat si) každý port, který používá. V případě, že chceme získat informace o „službě“, můžeme spustit:

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

Z výstupu příkazu vidíme, že služba umožní provoz přes porty 173/udp, 138/udp, 139/tcp a 445/tcp. Chcete-li službu trvale přidat do výchozí zóny, můžeme spustit:

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

Při spouštění příkazu jsme použili --permanent přepnout, aby naše změna byla trvalá. Také jsme předpokládali default zóna, která se má používat. Pokud bychom chtěli specifikovat jinou zónu pro akci, na kterou se má použít, použili bychom --zone a zadali název zóny jako argument (např. –zone=external). Protože je naše změna nastavena jako trvalá, aby se projevila, musíme znovu načíst konfiguraci brány firewall:

$ sudo firewall-cmd --reload

Můžeme ověřit, že služba „samba“ je nyní součástí naší zóny, spuštěním:

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

Opět platí, že pokud není zadána žádná zóna, příkaz se použije na výchozí zónu.

Konfigurace sdíleného adresáře přístupného hostům

Řekněme, že chceme sdílet adresář prostřednictvím samby a chceme umožnit volný přístup k tomuto adresáři uživatelům typu host, aniž by museli zadávat heslo. Abychom získali požadovaný výsledek, musíme provést nějaké změny v souboru /etc/samba/smb.conf a přidejte „stanzu“ pro náš podíl. Otevřete soubor pomocí svého oblíbeného editoru a v [global] přidejte zvýrazněný text:

[global]
        workgroup = SAMBA
        security = user

        passdb backend = tdbsam

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

map to guest = bad user instrukce, mapuje pokusy o přihlášení se špatnými uživatelskými jmény na výchozího uživatele hosta, což je ve výchozím nastavení nobody . To je nutné pro umožnění anonymního přístupu bez nutnosti zadávat heslo.

Po této změně musíme na konec souboru připojit novou stanzu věnovanou našemu sdílení. Sdílený prostředek pojmenujeme „linuxconfig“:

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

S výše uvedeným nastavením jsme deklarovali, že chceme sdílet obsah /mnt/shared adresář, bez nutnosti autentizace uživatele. Toto nastavení je zjevně riskantní a je zde uvedeno pouze jako příklad:ve scénáři reálného světa možná budete chtít alespoň odepřít přístup pro zápis hostům (můžete to udělat přidáním writeable = no návod). Aby byly změny účinné, musíme restartovat démony:

$ sudo systemctl restart {smb,nmb}

Nakonfigurujte sdílenou složku přístupnou pouze registrovaným uživatelům

Abychom ochránili přístup ke zdroji pomocí výzvy k přihlášení, když samba běží jako samostatný server, musíme do databáze samby přidat stávajícího uživatele. Pro přístup ke sdílenému adresáři budou nutné přihlašovací údaje tohoto uživatele. Z bezpečnostních důvodů je dobrým zvykem vytvořit pro tento úkol vyhrazeného uživatele, vynechat vytváření jeho domovského adresáře a přiřadit mu falešný shell:

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

-M volba předaná příkazu je zkrácená forma pro --no-create-home , což je docela samovysvětlující; -s místo toho zadejte shell, v tomto případě záměrně neplatný:/sbin/nologin . V tomto okamžiku uživatel ani nemusí mít v našem systému nastaveno heslo.

Jakmile je uživatel vytvořen, musíme jej přidat do databáze samby:operaci můžeme provést pomocí smbpasswd příkaz:

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

Po spuštění příkazu jsme vyzváni k přiřazení hesla uživateli a také k jeho potvrzení:toto heslo bude platné pouze v kontextu samby, nemá nic společného s uživatelským účtem v našem systému. Chcete-li omezit sdílení, které jsme dříve vytvořili, musíme provést malou změnu ve vyhrazené sekci:

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

Platnost našeho nastavení můžeme ověřit pomocí testparm příkaz:

$ 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

Znovu musíme restartovat smb a nmb démony, aby byly naše změny účinné. Sdílený adresář bude nyní přístupný pouze po zadání správných přihlašovacích údajů.

Nastavení SELinux pro sambu

SELinux je často vnímán jako komplikace a je okamžitě deaktivován. To není nutné:musíme se pouze naučit, jak jej nakonfigurovat, a využít výhod vylepšení zabezpečení, které poskytuje. Aby naše sdílení samby fungovalo, když je SELinux v režimu „vynucování“, musíme našemu sdílenému adresáři a souborům přiřadit příslušný kontext:

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

Ve výše uvedeném příkladu jsme použili chcon pomocí -t možnost změnit TYPE části kontextu SELinux na samba_share_t . Také jsme použili -R přepnout, aby byl příkaz rekurzivní. Tato změna přežije restart, ale ne přejmenování systému, pokud pro náš adresář a soubory existuje výchozí politika, protože v takovém případě by bylo znovu použito výchozí nastavení.

Pokud chceme, aby naše změna přežila událost přeznačení, musíme do zásad přidat naše pravidlo. Můžeme to udělat pomocí semanage příkaz:

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

Protože jsme použili (/.*)? regex, pravidlo se použije na veškerý obsah „sdíleného“ adresáře a na adresář samotný. Můžeme ověřit, že naše pravidlo bylo přidáno do zásad, uvedením štítků používaných v našem systému:

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

Nyní bychom měli mít funkční nastavení samby. K dalšímu vyladění konfigurace samby možná budeme muset také manipulovat s booleany SELinuxu. Například při přidávání existujících uživatelů do samby, aby bylo možné sdílet jejich domovské adresáře, musíme povolit dedikovaný SELinux boolean. K vypsání všech booleanů souvisejících se sambou můžeme spustit:

$ 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

Ve výše uvedeném výstupu druhý sloupec označuje aktuální hodnotu booleanu, zatímco třetí výchozí hodnotu (oba jsou v tomto případě vypnuté). Boolean, který chceme aktivovat, abychom umožnili sdílení domovských adresářů, je samba_enable_home_dirs . Operaci můžeme provést pomocí setsebool příkaz:

$ sudo setsebool samba_enable_home_dirs=1

Závěry

V tomto tutoriálu jsme viděli, jak nainstalovat sambu na systém RHEL 8 / CentOS 8. Také jsme viděli, jak sdílet adresář, umožnit přístup hostům nebo jej omezit na ověřené uživatele. Také jsme viděli, jak nakonfigurovat bránu firewall, aby byla sdílená složka přístupná z jiných počítačů v síti.

Nakonec jsme viděli, jak provést potřebné změny, abychom měli funkční nastavení samby se SELinuxem v režimu „vynucování“. Pokud vás SELinux zajímá, můžete si také přečíst náš článek na toto téma.


Cent OS
  1. CentOS / RHEL 7 :Jak nainstalovat a nakonfigurovat telnet

  2. Jak nainstalovat a nakonfigurovat Sambu v CentOS / RHEL

  3. Jak nainstalovat a nakonfigurovat telnet v RHEL / CentOS 5,6

  1. Jak nainstalovat a nakonfigurovat Nginx na CentOS 7

  2. Jak nainstalovat a nakonfigurovat R na RHEL 8 / CentOS 8 Linux System

  3. Jak nainstalovat a nakonfigurovat Sambu na CentOS 7

  1. Jak nainstalovat a nakonfigurovat oVirt 4.0 na CentOS 7 / RHEL 7

  2. Jak nainstalovat a nakonfigurovat Jenkins na CentOS 7 a RHEL 7

  3. Jak nainstalovat a nakonfigurovat Nextcloud na CentOS 7 / RHEL 7