V tomto tutoriálu se naučíme, jak nainstalovat a nakonfigurovat server samba na CentOS 8/RHEL8 pro sdílení souborů v místní síti. Samba je bezplatná implementace protokolu SMB/CIFS s otevřeným zdrojovým kódem pro Unix a Linux, která umožňuje sdílení souborů a tiskáren mezi počítači se systémy Linux, Windows a macOS v místní síti.
Samba se obvykle instaluje a běží na Linuxu. Obsahuje několik programů, které slouží různým, ale souvisejícím účelům, z nichž dva nejdůležitější jsou:
- smbd :poskytuje službu SMB/CIFS (sdílení a tisk souborů), může také fungovat jako řadič domény Windows.
- nmbd :Tento démon poskytuje jmennou službu NetBIOS, naslouchá požadavkům jmenného serveru. Umožňuje také nalezení serveru Samba jinými počítači v síti.
Jak nainstalovat Samba Server na CentOS 8/RHEL8
Samba je součástí většiny distribucí Linuxu. Chcete-li nainstalovat Sambu na CentOS 8/RHEL8, spusťte v terminálu následující příkaz.
sudo dnf install samba
Chcete-li zkontrolovat verzi Samby, spusťte
smbd --version
Ukázkový výstup:
Version 4.10.4
Poté zadejte následující příkaz ke spuštění smbd
a nmbd
službu.
sudo systemctl start smb nmb
Povolit automatické spouštění při spouštění.
sudo systemctl enable smb nmb
Chcete-li zkontrolovat, zda služba Samba běží, zadejte následující příkazy.
systemctl status smb nmb
Po spuštění smb
démon bude naslouchat na TCP portech 139 a 445. nmbd
bude naslouchat na portech UDP 137 a 138.
- TCP 139:používá se pro sdílení souborů a tiskáren a další operace.
- TCP 445:port CIFS bez NetBIOS.
- UDP 137:používá se pro procházení sítě NetBIOS.
- UDP 138:používá se pro službu názvů NetBIOS.
Spuštěním následujícího příkazu otevřete výše uvedené porty ve bráně firewall.
sudo firewall-cmd --permanent --add-service=samba
Znovu načtěte démona firwall, aby se změna projevila.
sudo systemctl reload firewalld
Vytvořte soukromé sdílení Samby
V této části uvidíme, jak vytvořit soukromou sdílenou složku Samba, která vyžaduje, aby klient zadal uživatelské jméno a heslo, aby získal přístup. Hlavní konfigurační soubor Samby se nachází na adrese:/etc/samba/smb.conf
. Můžete jej upravit v terminálu pomocí textového editoru příkazového řádku, jako je nano
.
sudo nano /etc/samba/smb.conf
Ve výchozím nastavení jsou 4 sekce:
- globální
- domovů
- tiskárny
- tisk $
V [global]
sekce, workgroup
je standardně nastaveno na SAMBA.
workgroup = SAMBA
Zkontrolujte hodnotu workgroup
je stejné s nastavením pracovní skupiny počítačů se systémem Windows. Nastavení najdete na počítači se systémem Windows tak, že přejdete na Control Panel
> System and Security
> System
.
V tomto článku budu používat výchozí název pracovní skupiny Windows.
workgroup = WORKGROUP
Doporučuje se použít hosts allow
parametr pro vytvoření seznamu povolených IP adres, aby se zabránilo neoprávněnému přístupu. Přidejte následující řádek do [global]
sekce, která umožní localhost a klienty v 192.168.0.0/24
síť pro přístup ke službám Samba. Pokud používáte jiný rozsah sítě, nahraďte 192.168.0
s vlastními.
hosts allow = 127. 192.168.0
Tip:Můžete také použít zápis CIDR pro rozsah sítě, jako je hosts allow = 127.0.0.1 192.168.0.0/24
Poté přejděte dolů na konec souboru. (V nano textovém editoru toho dosáhnete stisknutím CTRL+W
pak CTRL+V
. ) Přidejte novou sekci jako níže.
[Private] comment = needs username and password to access path = /srv/samba/private/ browseable = yes guest ok = no writable = yes valid users = @samba
Kde:
Private
je název složky, který se zobrazí na počítači se systémem Windows. Můžete použít jakékoli jméno.- Komentář je popis sdílené složky.
- Parametr path určuje cestu ke sdílené složce. Používám
/srv/samba/private/
jako příklad. browseable = yes
:Povolit ostatním počítačům v síti vidět server Samba a sdílení Samba. Pokud je nastaveno na ne, uživatelé musí znát název serveru Samba a poté ručně zadat cestu do správce souborů pro přístup ke sdílené složce.guest ok = no
:Zakázat přístup hostů. Jinými slovy, pro přístup ke sdílené složce musíte na klientském počítači zadat uživatelské jméno a heslo.writable = yes
:Uděluje klientům oprávnění ke čtení i zápisu.valid users = @samba
:K tomuto sdílení Samba mají povolen přístup pouze uživatelé ve skupině samba.
Uložte a zavřete soubor. (Chcete-li soubor uložit v textovém editoru nano, stiskněte Ctrl+O
a poté stisknutím klávesy Enter potvrďte název souboru, který chcete zapsat. Chcete-li soubor zavřít, stiskněte Ctrl+X
.) Nyní musíme vytvořit uživatele Samby. Nejprve musíme pomocí následujícího příkazu vytvořit standardní uživatelský účet Linuxu. Nahraďte username
s požadovaným uživatelským jménem.
sudo adduser username
Budete vyzváni k nastavení unixového hesla. Poté také musíte nastavit samostatné heslo Samba pro nového uživatele pomocí následujícího příkazu:
sudo smbpasswd -a username
Vytvořte samba
skupina.
sudo groupadd samba
A přidejte tohoto uživatele do samba
skupina.
sudo gpasswd -a username samba
Vytvořte soukromou sdílenou složku.
sudo mkdir -p /srv/samba/private/
samba
skupina musí mít oprávnění ke čtení, zápisu a spouštění ve sdílené složce. Tato oprávnění můžete udělit provedením následujícího příkazu.
sudo setfacl -R -m "g:samba:rwx" /srv/samba/private/
Tento adresář také musíme označit štítkem samba_share_t
takže SELinux umožňuje Sambě číst a zapisovat do něj.
sudo chcon -t samba_share_t /srv/samba/private/ -R
Poté spusťte následující příkaz a zkontrolujte, zda se nevyskytují syntaktické chyby.
testparm
Konfigurační soubory Samby se automaticky znovu načítají každou minutu, pokud se změní. smbd
můžete ručně restartovat a nmbd
démona, aby se změny projevily okamžitě.
sudo systemctl restart smb nmb
Jak vytvořit veřejné sdílení Samba bez ověření
Chcete-li vytvořit veřejnou sdílenou složku bez vyžadování uživatelského jména a hesla, musí být splněny následující podmínky.
- Nastavte
security = user
v globální části konfiguračního souboru Samba. - Nastavit
map to guest = bad user
v globální části konfiguračního souboru Samba. To způsobísmbd
k použití účtu hosta k ověření klientů, kteří nemají registrovaný účet na serveru Samba. Protože se jedná o účet hosta, klienti Samba nemusejí zadávat heslo. - Nastavte
guest ok = yes
v definici sdílení, abyste umožnili přístup hostů. - Udělte oprávnění ke čtení, zápisu a spouštění veřejné složky
nobody
účet, což je výchozí účet hosta.
Otevřete a upravte konfigurační soubor Samba.
sudo nano /etc/samba/smb.conf
V [global]
sekce, ujistěte se, že hodnota workgroup
je stejné s nastavením pracovní skupiny počítačů Windows.
workgroup = WORKGROUP
Nastavení najdete na počítači se systémem Windows tak, že přejdete na Control Panel
> System and Security
> System
.
Přidejte následující řádek do [global]
sekce.
map to guest = bad user
Poté přejděte dolů na konec souboru a vložte následující řádky.
[public] comment = public share, no need to enter username and password path = /srv/samba/public/ browseable = yes writable = yes guest ok = yes
Uložte a zavřete soubor. Dále vytvořte /srv/public/
složka.
sudo mkdir -p /srv/samba/public
Pokud chcete povolit operaci zápisu do veřejné sdílené složky, musíte změnit oprávnění této složky na 777.
sudo chmod 777 /srv/samba/public/ -R
Tento adresář také musíme označit štítkem samba_share_t
takže SELinux umožňuje Sambě číst a zapisovat do něj.
sudo chcon -t samba_share_t /srv/samba/public/ -R
Restartujte smbd a nmbd.
sudo systemctl restart smb nmb
Přístup ke sdílené složce Samba ze systému Windows
Na počítači se systémem Windows, který je ve stejné síti, otevřete Průzkumník souborů a klikněte na Network
na levém panelu. Pokud se zobrazí následující zpráva, musíte na zprávu kliknout a zapnout zjišťování sítě a sdílení souborů.
File sharing is turned off. Some network computers and devices might not be visible.
Dále zadejte \\
následovaná IP adresou serveru Samba v adresním řádku Průzkumníka souborů, takto:\\192.168.0.102
. Zobrazí se seznam sdílených zdrojů na serveru Samba.
Poté poklepejte na sdílenou složku. Pro přístup k soukromému sdílení musíte zadat uživatelské jméno a heslo samby. Pro přístup k veřejnému sdílení to nemusíte dělat.
Po připojení můžete číst, zapisovat a mazat soubory ve sdílené složce Samba.
Chyba při připojování
Pokud se zobrazí následující chyba:
You do not have permission to access \\hostname\share-name. Contact your network administrator to request access.
Můžete se zkusit připojit ke sdílené složce Samba z příkazového řádku. Otevřete příkazový řádek a poté spusťte následující příkaz pro ukončení aktuální relace Samby.
net use \\samba-server-ip\share-name /delete
Dále se připojte ke sdílené složce Samaba pomocí následujícího příkazu:
net use \\samba-server-ip\share-name /user:samba-username password
Po úspěšném dokončení výše uvedeného příkazu přejděte na kartu Síť v Průzkumníku souborů a nyní byste měli mít přístup ke sdílení Samba.
Mapování disku
Jednou z funkcí operačního systému Windows je schopnost mapovat písmeno jednotky (například S:) ke vzdálenému adresáři. Chcete-li namapovat písmeno jednotky S:
do sdílené složky Samba, klikněte pravým tlačítkem na sdílenou složku Samba a vyberte možnost Mapovat síťovou jednotku . Poté zvolte písmeno jednotky a klikněte na Dokončit.
Po vytvoření mapování disku mohou aplikace přistupovat k souborům ve sdílené složce Samba prostřednictvím písmene jednotky S:
. A toto sdílení Samba bude automaticky připojeno, když se přihlásíte k počítači se systémem Windows.
Přístup ke složce Samba Share Folder ve Správci souborů Nautilus v systému Linux
Pokud používáte správce souborů Nautilus, klikněte na Other Locations
na levém panelu. V dolní části uvidíte možnost připojit se k serveru . Pro přístup ke sdílení Samba zadejte smb://
následuje IP adresa serveru Samba a stiskněte Enter. Například:
- smb://192.168.0.102
Zobrazí se seznam sdílených zdrojů na serveru Samba.
Pokud kliknete na soukromou sdílenou složku, budete muset zadat uživatelské jméno a heslo Samba. Pokud klepnete na veřejnou sdílenou složku, zvolte připojení jako Anonymní.
Automaticky připojit Samba Share z příkazového řádku v Linuxu
Pokud potřebujete automaticky připojit sdílenou složku Samba při spouštění, můžete připojit pomocí příkazového řádku a poté přidat položku do /etc/fstab
soubor. Chcete-li to provést, musíte nainstalovat cifs-utils
balíček.
CentOS/RHEL
sudo dnf install cifs-utils
Debian/Ubuntu
sudo apt install cifs-utils
Poté vytvořte přípojný bod pro sdílení Samba.
sudo mkdir /mnt/samba-private
Nyní můžete použít následující příkaz k připojení soukromé sdílené složky.
sudo mount -t cifs -o username=your_samba_username //192.168.0.102/private /mnt/samba-private/
Požádá vás o zadání hesla Samba. Poté bude připojen na /mnt/samba-private/
adresář.
Chcete-li automaticky připojit sdílení Samba, upravte /etc/fstab
soubor.
sudo nano /etc/fstab
Přidejte do souboru následující řádek.
//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
Kde:
- //192.168.0.102/private :IP adresa serveru Samba a název sdílené položky.
- /mnt/samba-private :přípojný bod pro sdílení Samba.
- cifs :typ souborového systému
- x-systemd.automount :Tato volba říká systemd, aby vytvořil jednotku automatického připojení pro systém souborů. Používáme to, protože nám to dává možnost připojit vzdálený souborový systém po připojení k síti.
- _netdev :Toto určuje, že připojení vyžaduje síť.
- pověření= :Linux by měl hledat přihlašovací údaje v
/etc/samba-credential.conf
soubor. - uid=1000,gid=1000 :Ve výchozím nastavení by připojený souborový systém vlastnil uživatel root. Používáme uid a gid změnit vlastnictví souborového systému. Normálně používáte vlastní uid a gid , které jsou ve výchozím nastavení obě 1000.
- x-gvfs-show :Pokud používáte desktopové prostředí GNOME nebo jeho deriváty, můžete tuto možnost použít k zobrazení připojeného souborového systému ve správci souborů.
Uložte a zavřete soubor. Poté vytvořte soubor pověření.
sudo nano /etc/samba-credential.conf
Přidejte do souboru následující řádky.
username=your_samba_username password=samba_password domain=WORKGROUP
Uložte a zavřete soubor. Ujistěte se, že tento soubor může číst pouze uživatel root.
sudo chmod 600 /etc/samba-credential.conf
Pokud nyní restartujete počítač se systémem Linux, sdílená složka Samba se automaticky připojí.
Tip pro odstraňování problémů
Pokud váš server Samba nefunguje podle očekávání, můžete zkontrolovat soubory protokolu pod /var/log/samba/
adresář. Chcete-li protokolovat více informací, můžete přidat následující řádek do sekce [global] souboru /etc/samba/smb.conf a zvýšit úroveň protokolu.
log level = 2