Jak zainstalować i skonfigurować Samba na Linux: Kompletny przewodnik techniczny
Samba to open-source’owa implementacja protokołu SMB/CIFS (Server Message Block / Common Internet File System), która umożliwia serwerom opartym na Linux i Unix udostępnianie plików, drukarek i innych zasobów klientom Windows — oraz innym maszynom Linux. Działa jako pomost między systemami operacyjnymi, stając się de facto standardem dla wieloplatformowego sieciowego udostępniania plików w środowiskach mieszanych.
Krótka odpowiedź na kluczowe pytanie: instalacja Samba na Linux wymaga zainstalowania pakietu `samba` za pomocą menedżera pakietów swojej dystrybucji, zdefiniowania bloków udziałów w `/etc/samba/smb.conf`, utworzenia poświadczeń użytkownika specyficznych dla Samba za pomocą `smbpasswd` oraz otwarcia portów 137–139 i 445 w zaporze sieciowej. Poniższe sekcje szczegółowo omawiają każdy etap tego procesu.
Co Samba robi pod maską
Samba działa jako zestaw demonów. Zrozumienie, który demon za co odpowiada, pozwala uniknąć wielu błędów konfiguracyjnych:
- `smbd` — obsługuje udostępnianie plików i drukarek, uwierzytelnianie oraz blokowanie zasobów przez porty TCP 445 i 139.
- `nmbd` — zarządza rozwiązywaniem nazw NetBIOS przez porty UDP 137 i 138. Wymagany do przeglądania sieci Windows (Otoczenie sieciowe / „Sieć” w Eksploratorze plików).
- `winbindd` — integruje Samba z Active Directory lub domenami NT4, umożliwiając uwierzytelnianie użytkowników domeny na hoście Linux. Nie jest wymagany do samodzielnego udostępniania plików.
Gdy klient Windows otwiera `servershare`, najpierw rozwiązuje nazwę serwera przez DNS lub NetBIOS (nmbd), a następnie nawiązuje sesję SMB z smbd przez port 445. Samba negocjuje najwyższy wzajemnie obsługiwany dialekt SMB — SMB 3.1.1 na nowoczesnych systemach — i mapuje zdalny udział na literę dysku lub ścieżkę UNC po stronie klienta.
Wymagania wstępne
Przed przystąpieniem do pracy upewnij się, że spełnione są następujące warunki:
- Serwer Linux z Ubuntu 20.04/22.04/24.04, Debian 11/12, CentOS Stream 8/9, RHEL 8/9 lub Fedora 38+.
- Dostęp root lub `sudo`.
- Statyczny prywatny adres IP przypisany do serwera (kluczowy dla stabilnego montowania udziałów).
- Podstawowa znajomość operacji terminalowych i uprawnień do plików.
- Dostęp do zapory sieciowej (UFW, firewalld lub iptables) w celu otwarcia niezbędnych portów.
Jeśli wdrażasz Samba na serwerze chmurowym lub wirtualnym, środowisko VPS Hosting zapewnia pełny dostęp root i kontrolę sieci wymaganą do zarządzania demonami, regułami zapory sieciowej i trwałymi montowaniami bez ograniczeń środowisk współdzielonych.
Krok 1: Instalacja Samba
Użyj menedżera pakietów odpowiedniego dla swojej dystrybucji. Zawsze najpierw zaktualizuj indeks pakietów, aby uniknąć instalowania przestarzałych wersji.
Debian / Ubuntu:
“`bash
sudo apt-get update
sudo apt-get install samba samba-common-bin
“`
CentOS Stream / RHEL:
“`bash
sudo dnf install samba samba-client samba-common
“`
Fedora:
“`bash
sudo dnf install samba samba-client samba-common
“`
Arch Linux:
“`bash
sudo pacman -S samba
“`
Po instalacji zweryfikuj zainstalowaną wersję:
“`bash
smbd –version
“`
W systemach opartych na RHEL zainstaluj również `samba-client`, aby uzyskać narzędzie diagnostyczne `smbclient`, które będzie używane w późniejszych krokach do testowania połączeń.
Krok 2: Wykonaj kopię zapasową i edytuj główny plik konfiguracyjny
Cała konfiguracja Samba znajduje się w `/etc/samba/smb.conf`. Ten pojedynczy plik kontroluje globalne zachowanie serwera, model bezpieczeństwa, definicje udziałów i rejestrowanie. Przed jego modyfikacją utwórz kopię zapasową z sygnaturą czasową:
“`bash
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.backup.$(date +%F)
“`
Otwórz plik do edycji:
“`bash
sudo nano /etc/samba/smb.conf
“`
Plik jest podzielony na sekcje. Sekcja `[global]` definiuje parametry obejmujące cały serwer. Poszczególne sekcje udziałów (np. `[sambashare]`) definiują konkretne udostępniane zasoby.
Kluczowe parametry globalne do sprawdzenia
W sekcji `[global]` zwróć uwagę na następujące ustawienia:
“`ini
[global]
workgroup = WORKGROUP
server string = Samba Server %v
netbios name = MYSERVER
security = user
map to guest = bad user
dns proxy = no
log file = /var/log/samba/log.%m
max log size = 1000
logging = file
panic action = /usr/share/samba/panic-action %d
server role = standalone server
obey pam restrictions = yes
unix password sync = yes
passwd program = /usr/bin/passwd %u
passwd chat = *Entersnews*spassword:* %nn *Retypesnews*spassword:* %nn *passwordsupdatedssuccessfully* .
pam password change = yes
min protocol = SMB2
max protocol = SMB3
“`
Kluczowa informacja: Dyrektywa `min protocol = SMB2` jawnie wyłącza SMB1, który jest przestarzały od 2014 roku i stanowi wektor exploitów takich jak EternalBlue (MS17-010). Nigdy nie pozostawiaj włączonego SMB1 na serwerze produkcyjnym. Nowoczesne systemy Windows 10/11 i wszystkie aktualne klienty Linux CIFS obsługują SMB2 i SMB3 natywnie.
Krok 3: Utwórz i przygotuj katalog współdzielony
Utwórz katalog, który będzie udostępniany w sieci:
“`bash
sudo mkdir -p /srv/sambashare
“`
Ustaw własność i uprawnienia. Właściwe podejście zależy od tego, czy chcesz dostępu gościnnego, czy dostępu tylko dla uwierzytelnionych użytkowników.
Dla dostępu uwierzytelnionych użytkowników (zalecane dla środowisk produkcyjnych):
“`bash
sudo chown root:sambashare /srv/sambashare
sudo chmod 2770 /srv/sambashare
“`
Uprawnienie `2770` można rozłożyć następująco:
- `2` — bit setgid: nowe pliki dziedziczą grupę katalogu, zapobiegając fragmentacji własności w udziałach wieloużytkownikowych.
- `7` — właściciel (root) ma uprawnienia do odczytu, zapisu i wykonywania.
- `7` — grupa (sambashare) ma uprawnienia do odczytu, zapisu i wykonywania.
- `0` — pozostali nie mają dostępu.
Dla dostępu gościnnego/publicznego (tylko domowe laboratorium lub wewnętrzna sieć LAN):
“`bash
sudo chown nobody:nogroup /srv/sambashare
sudo chmod 0777 /srv/sambashare
“`
Nie używaj `0777` na serwerach dostępnych z internetu. Udziały gościnne z uprawnieniami do zapisu dla wszystkich są odpowiednie tylko w izolowanych, zaufanych sieciach.
Krok 4: Utwórz grupę systemową i użytkownika
Dla uwierzytelnionych udziałów utwórz dedykowaną grupę Linux mapowaną do udziału Samba:
“`bash
sudo groupadd sambashare
“`
Dodaj użytkownika Linux, który będzie miał dostęp do udziału:
“`bash
sudo useradd -M -s /sbin/nologin sambauser
sudo usermod -aG sambashare sambauser
“`
Flaga `-M` pomija tworzenie katalogu domowego (jest to konto usługowe, nie interaktywny użytkownik). Flaga `-s /sbin/nologin` uniemożliwia używanie konta do logowania przez SSH lub konsolę — jest to kluczowy krok wzmacniania bezpieczeństwa, który większość poradników pomija.
Teraz zarejestruj użytkownika w bazie danych haseł Samba (oddzielnej od `/etc/shadow`):
“`bash
sudo smbpasswd -a sambauser
sudo smbpasswd -e sambauser
“`
Flaga `-a` dodaje użytkownika; flaga `-e` aktywuje konto. Samba przechowuje własne poświadczenia w `/var/lib/samba/private/passdb.tdb` (lub pliku `smbpasswd` w zależności od ustawienia `passdb backend`). Użytkownik może istnieć w Linux bez bycia w bazie danych Samba i odwrotnie — musi być zarejestrowany w obu.
Krok 5: Zdefiniuj udział w smb.conf
Dodaj następujący blok na końcu `/etc/samba/smb.conf`. Pokazane są dwie konfiguracje: jedna dla dostępu uwierzytelnionego, jedna dla dostępu gościnnego.
Udział uwierzytelniony (zalecany dla środowisk produkcyjnych)
“`ini
[sambashare]
path = /srv/sambashare
comment = Authenticated Network Share
browsable = yes
writable = yes
read only = no
guest ok = no
valid users = @sambashare
create mask = 0660
directory mask = 2770
force group = sambashare
“`
Opis parametrów:
- `valid users = @sambashare` — prefiks `@` oznacza „każdy członek grupy Linux o nazwie sambashare”. Jest to bardziej skalowalne niż wymienianie poszczególnych nazw użytkowników.
- `create mask = 0660` — nowe pliki są tworzone z uprawnieniami rw-rw—-, zapobiegając plikom dostępnym dla wszystkich do odczytu.
- `directory mask = 2770` — nowe podkatalogi dziedziczą bit setgid i uprawnienia grupy.
- `force group = sambashare` — wymusza używanie grupy sambashare dla wszystkich operacji na plikach, niezależnie od grupy podstawowej łączącego się użytkownika.
Udział gościnny (domowe laboratorium / wewnętrzna sieć LAN)
“`ini
[public]
path = /srv/sambashare
comment = Public Network Share
browsable = yes
writable = yes
read only = no
guest ok = yes
guest account = nobody
create mask = 0664
directory mask = 0775
“`
Krok 6: Zweryfikuj konfigurację
Przed ponownym uruchomieniem jakiejkolwiek usługi uruchom wbudowany parser konfiguracji:
“`bash
testparm
“`
`testparm` odczytuje `smb.conf`, zgłasza błędy składniowe i wyświetla efektywną konfigurację po zastosowaniu wartości domyślnych. Zwróć uwagę na wszelkie linie `WARNING` — często wskazują one na przestarzałe parametry lub błędne konfiguracje bezpieczeństwa. Czyste wyjście kończy się:
“`
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions
“`
Jeśli `testparm` zgłasza błędy, napraw je przed kontynuowaniem. Ponowne uruchomienie smbd z uszkodzonym plikiem konfiguracyjnym powoduje ciche niepowodzenie usługi lub powrót do wartości domyślnych.
Krok 7: Uruchom ponownie i włącz demony Samba
Debian / Ubuntu:
“`bash
sudo systemctl restart smbd nmbd
sudo systemctl enable smbd nmbd
“`
CentOS / RHEL / Fedora:
“`bash
sudo systemctl restart smb nmb
sudo systemctl enable smb nmb
“`
Zweryfikuj, że oba demony działają:
“`bash
sudo systemctl status smbd nmbd # Debian/Ubuntu
sudo systemctl status smb nmb # RHEL/Fedora
“`
Sprawdź, czy demony nasłuchują na właściwych portach:
“`bash
sudo ss -tlnp | grep -E '(smbd|nmbd|445|139)'
“`
Oczekiwane wyjście powinno pokazywać `smbd` powiązany z portem 445 i 139.
Krok 8: Skonfiguruj reguły zapory sieciowej
Samba wymaga otwarcia następujących portów:
| Port | Protokół | Usługa | Przeznaczenie |
|---|
| —— | ———- | ——— | ——— |
|---|
| 137 | UDP | nmbd | Usługa nazw NetBIOS |
|---|
| 138 | UDP | nmbd | Usługa datagramów NetBIOS |
|---|
| 139 | TCP | smbd | Usługa sesji NetBIOS (SMB przez NetBIOS) |
|---|
| 445 | TCP | smbd | Bezpośrednie SMB (SMB2/SMB3 — port główny) |
|---|
UFW (Debian/Ubuntu):
“`bash
sudo ufw allow 'Samba'
sudo ufw status
“`
firewalld (CentOS/RHEL/Fedora):
“`bash
sudo firewall-cmd –permanent –add-service=samba
sudo firewall-cmd –reload
sudo firewall-cmd –list-services
“`
iptables (ręcznie):
“`bash
sudo iptables -A INPUT -p tcp –dport 445 -j ACCEPT
sudo iptables -A INPUT -p tcp –dport 139 -j ACCEPT
sudo iptables -A INPUT -p udp –dport 137:138 -j ACCEPT
“`
Uwaga dotycząca bezpieczeństwa: Jeśli Twój serwer Samba jest dostępny z internetu (niezalecane dla standardowego udostępniania plików), ogranicz te reguły do określonych zakresów źródłowych adresów IP używając `-s 192.168.1.0/24` lub odpowiednika. Wystawianie portów SMB na publiczny internet stanowi poważne zagrożenie bezpieczeństwa.
Krok 9: Kwestie SELinux (RHEL/CentOS/Fedora)
W systemach z wymuszaniem SELinux, Samba wymaga dodatkowych etykiet kontekstu na współdzielonych katalogach. Bez nich smbd będzie blokowany przed dostępem do ścieżki, nawet jeśli uprawnienia Linux są prawidłowe.
“`bash
sudo setsebool -P samba_enable_home_dirs on
sudo setsebool -P samba_export_all_rw on
sudo semanage fcontext -a -t samba_share_t "/srv/sambashare(/.*)?"
sudo restorecon -Rv /srv/sambashare
“`
Zweryfikuj, że kontekst został zastosowany:
“`bash
ls -lZ /srv/sambashare
“`
Wyjście powinno pokazywać `system_u:object_r:samba_share_t:s0` jako kontekst SELinux. Pominięcie tego kroku jest najczęstszą przyczyną niepowodzenia udziałów Samba w systemach z rodziny RHEL — usługa wydaje się uruchamiać poprawnie, ale klienci otrzymują błędy „Odmowa dostępu”.
Krok 10: Dostęp do udziału z Windows
Na kliencie Windows:
- Otwórz Eksplorator plików.
- W pasku adresu wpisz: `<server-ip>sambashare` i naciśnij Enter.
- Po wyświetleniu monitu wprowadź nazwę użytkownika i hasło Samba.
- Aby połączenie było trwałe, kliknij prawym przyciskiem myszy udział i wybierz Mapuj dysk sieciowy.
W przypadku wdrożeń skryptowych lub korporacyjnych zmapuj dysk z wiersza poleceń:
“`cmd
net use Z: 192.168.1.100sambashare /user:sambauser /persistent:yes
“`
Krok 11: Dostęp do udziału z Linux
Używając smbclient (interaktywnie, do testowania):
“`bash
smbclient //192.168.1.100/sambashare -U sambauser
“`
Otwiera to interaktywną powłokę podobną do FTP. Używaj `ls`, `get`, `put` i `exit` do nawigacji i transferu plików.
Trwałe montowanie udziału za pomocą CIFS:
Najpierw zainstaluj pakiet narzędzi CIFS:
“`bash
sudo apt-get install cifs-utils # Debian/Ubuntu
sudo dnf install cifs-utils # RHEL/Fedora
“`
Utwórz punkt montowania i plik poświadczeń (nigdy nie umieszczaj haseł w `/etc/fstab` w postaci zwykłego tekstu):
“`bash
sudo mkdir -p /mnt/sambashare
sudo nano /etc/samba/credentials
“`
Zawartość pliku poświadczeń:
“`
username=sambauser
password=yourpassword
domain=WORKGROUP
“`
Zabezpiecz plik poświadczeń:
“`bash
sudo chmod 600 /etc/samba/credentials
sudo chown root:root /etc/samba/credentials
“`
Dodaj montowanie do `/etc/fstab` dla trwałości po ponownym uruchomieniu:
“`
//192.168.1.100/sambashare /mnt/sambashare cifs credentials=/etc/samba/credentials,uid=1000,gid=1000,iocharset=utf8,vers=3.0,_netdev 0 0
“`
Opcja `_netdev` nakazuje systemowi czekać na dostępność sieci przed próbą montowania — niezbędna na serwerach, które montują udziały sieciowe podczas rozruchu. Opcja `vers=3.0` wymusza SMB3, unikając powrotu do starszych dialektów.
Przetestuj wpis fstab bez ponownego uruchamiania:
“`bash
sudo mount -a
“`
Porównanie wersji protokołu SMB
Wybór odpowiedniego dialektu SMB wpływa na wydajność, bezpieczeństwo i kompatybilność. Poniższa tabela podsumowuje kluczowe różnice:
| Wersja SMB | Rok | Kluczowe funkcje | Bezpieczeństwo | Zalecane zastosowanie |
|---|
| ————- | —— | ————– | ———- | —————– |
|---|
| SMB1 | 1983 | Podstawowe udostępnianie plików | Krytycznie podatny (EternalBlue) | Nigdy nie używaj — wyłącz jawnie |
|---|
| SMB2 | 2006 | Pipelining, zmniejszona gadatliwość, podpisywanie | Ulepszone | Starsze klienty Windows Vista/7 |
|---|
| SMB2.1 | 2010 | Dzierżawa oplock klienta | Ulepszone | Windows 7/2008 R2 |
|---|
| SMB3.0 | 2012 | Multichannel, szyfrowanie, failover | Silne | Windows 8/2012 i nowsze |
|---|
| SMB3.1.1 | 2015 | Integralność przed uwierzytelnieniem, AES-128-GCM | Najsilniejsze | Windows 10/11, nowoczesny Linux |
|---|
Zawsze ustawiaj `min protocol = SMB2` w `[global]` i preferuj `SMB3` tam, gdzie wszystkie klienty go obsługują. SMB3.1.1 z szyfrowaniem (`smb encrypt = required`) to właściwy wybór dla każdego udziału zawierającego wrażliwe dane.
Samba vs. NFS: Wybór właściwego protokołu
Zarówno Samba (SMB/CIFS), jak i NFS są szeroko stosowane do sieciowego udostępniania plików opartego na Linux, ale służą różnym przypadkom użycia:
| Kryterium | Samba (SMB/CIFS) | NFS |
|---|
| ———- | —————– | —– |
|---|
| Główny przypadek użycia | Wieloplatformowy (Linux + Windows) | Udostępnianie Linux-Linux |
|---|
| Obsługa klientów Windows | Natywna, bez potrzeby instalacji oprogramowania klienckiego | Wymaga instalacji klienta NFS |
|---|
| Obsługa macOS | Natywna (SMB) | Obsługiwana przez wbudowanego klienta NFS |
|---|
| Uwierzytelnianie | Nazwa użytkownika/hasło, integracja z AD | Oparte na hoście (IP/nazwa hosta) |
|---|
| Wydajność (LAN) | Nieco wyższe obciążenie | Niższe obciążenie, szybsze w sieci LAN |
|---|
| Szyfrowanie | SMB3 obsługuje szyfrowanie AES | NFSv4.2 obsługuje szyfrowanie krb5 |
|---|
| Złożoność konfiguracji | Umiarkowana | Niższa w środowiskach tylko z Linux |
|---|
| Najlepsze dla | Środowisk z mieszanymi systemami operacyjnymi, integracja z domeną | Jednorodnych klastrów Linux, HPC |
|---|
Jeśli Twoja infrastruktura składa się wyłącznie z Linux — na przykład klaster Serwerów dedykowanych obsługujących skonteneryzowane obciążenia — NFS może oferować niższe opóźnienia. W każdym środowisku z klientami Windows lub użytkownikami macOS, Samba jest właściwym wyborem.
Typowe pułapki i rozwiązywanie problemów
Udział jest widoczny, ale zwraca „Odmowa dostępu”
- W systemach z SELinux: Sprawdź i zastosuj kontekst `samba_share_t` zgodnie z opisem w Kroku 9.
- Sprawdź uprawnienia Linux: Łączący się użytkownik (lub konto `nobody` dla udziałów gościnnych) musi mieć dostęp do odczytu/zapisu na poziomie systemu plików do ścieżki, niezależnie od własnych list ACL Samba.
- Zweryfikuj smbpasswd: Użytkownik musi być dodany za pomocą `smbpasswd -a` i aktywowany za pomocą `smbpasswd -e`.
Udział nie jest widoczny podczas przeglądania sieci
- Potwierdź, że `nmbd` działa: `sudo systemctl status nmbd`.
- Upewnij się, że `browsable = yes` jest ustawione w definicji udziału.
- Windows 10/11 wyłączył usługę „Computer Browser” zależną od SMB1. Używaj bezpośrednich ścieżek UNC (`ipshare`) zamiast polegać na wykrywaniu sieci.
Wolne prędkości transferu
- Wymuś SMB3 za pomocą `vers=3.0` lub `vers=3.1.1` w opcjach montowania.
- Włącz duże MTU: dodaj `socket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=131072 SO_SNDBUF=131072` do `[global]`.
- Sprawdź, czy SMB multichannel jest dostępny: `smbstatus –verbose`.
Logi i diagnostyka
“`bash
sudo tail -f /var/log/samba/log.smbd
sudo smbstatus
sudo pdbedit -L -v # List all Samba users
“`
Samba w środowisku produkcyjnym: Kwestie architektoniczne
W przypadku wdrożeń produkcyjnych wykraczających poza prosty udział plików, rozważ następujące kwestie:
Integracja z Active Directory: Samba 4 może funkcjonować jako pełny kontroler domeny Active Directory, obsługując LDAP, Kerberos, DNS i zasady grupy. Jest to znaczący krok architektoniczny wykraczający poza samodzielne udostępnianie plików i wymaga aprowizacji `samba-ad-dc`.
Udziały katalogów domowych: Meta-usługa `[homes]` w `smb.conf` automatycznie tworzy osobisty udział dla każdego uwierzytelnionego użytkownika, mapowany do jego katalogu domowego Linux. Eliminuje to potrzebę definiowania indywidualnych bloków udziałów dla każdego użytkownika.
Udostępnianie drukarek: Samba integruje się z CUPS w celu udostępniania drukarek w sieci. Definicje udziałów `[printers]` i `[print$]` obsługują to, choć udostępnianie drukarek stało się mniej powszechne wraz z rozwojem usług drukowania w chmurze.
Limity przydziału: Samba respektuje limity przydziału systemu plików Linux. Implementuj limity przydziału na poziomie systemu plików używając narzędzi `quota`, a Samba będzie je egzekwować w sposób przezroczysty.
Dla zespołów uruchamiających aplikacje webowe obok udziałów plików, połączenie Samba z VPS z cPanel zapewnia zarządzany panel sterowania dla hostingu stron internetowych, zachowując jednocześnie pełny dostęp SSH do administracji Samba. W środowiskach wymagających wielu usług hostingowych pod jednym dachem, przegląd dostępnych Paneli sterowania VPS pomaga zidentyfikować właściwą warstwę zarządzania dla Twojego stosu.
Jeśli Twój serwer Samba hostuje również treści webowe lub dane aplikacji, zabezpieczenie go Certyfikatem SSL dla wszelkich powiązanych usług dostępnych przez internet zapewnia, że cały stos spełnia nowoczesne standardy bezpieczeństwa.
Lista kontrolna kluczowych wniosków technicznych
Użyj tej listy kontrolnej przed uznaniem wdrożenia Samba za gotowe do produkcji:
- [ ] SMB1 jawnie wyłączony przez `min protocol = SMB2` w `[global]`
- [ ] Użytkownicy Samba utworzeni za pomocą `smbpasswd -a` i aktywowani za pomocą `smbpasswd -e`
- [ ] Konta usługowe używają `-s /sbin/nologin` do blokowania dostępu do powłoki
- [ ] Katalogi udziałów używają bitu setgid (`chmod 2770`) dla spójnej własności grupy
- [ ] `testparm` działa czysto bez ostrzeżeń ani błędów
- [ ] Zarówno `smbd`, jak i `nmbd` są włączone i działają
- [ ] Reguły zapory sieciowej ograniczają porty SMB (445, 139, 137-138) tylko do zaufanych źródłowych adresów IP
- [ ] Kontekst SELinux (`samba_share_t`) zastosowany w systemach RHEL/CentOS/Fedora
- [ ] Plik poświadczeń dla montowań CIFS ma uprawnienia `chmod 600` i należy do root
- [ ] Wpisy `/etc/fstab` używają opcji `_netdev` dla montowań zależnych od sieci
- [ ] Logi Samba przejrzane w `/var/log/samba/` po początkowym wdrożeniu
- [ ] `smbstatus` potwierdza aktywne sesje i zablokowane pliki po wdrożeniu
FAQ
Jakich portów używa Samba i czy wszystkie muszą być otwarte?
Samba używa TCP 445 (bezpośrednie SMB, wymagane), TCP 139 (SMB przez NetBIOS, potrzebne dla starszych klientów) oraz UDP 137-138 (rozwiązywanie nazw NetBIOS, potrzebne do przeglądania sieci). W nowoczesnych środowiskach z klientami Windows 10/11 lub Linux używającymi bezpośrednich ścieżek UNC, wymagany jest ściśle tylko TCP 445. UDP 137-138 i TCP 139 mogą być zablokowane, jeśli rozwiązywanie nazw NetBIOS nie jest potrzebne.
Dlaczego mój udział Samba działa z Linux, ale zwraca „Odmowa dostępu” z Windows?
Jest to prawie zawsze problem z buforowaniem poświadczeń po stronie Windows. Windows buforuje poświadczenia SMB na sesję. Otwórz Menedżera poświadczeń (Panel sterowania > Menedżer poświadczeń > Poświadczenia Windows), usuń wszelkie buforowane wpisy dla adresu IP serwera, a następnie połącz się ponownie. Jeśli problem nadal występuje, zweryfikuj, czy użytkownik jest aktywowany w bazie danych Samba za pomocą `sudo pdbedit -L -v`.
Jaka jest różnica między `security = user` a `security = share` w smb.conf?
`security = share` (bezpieczeństwo na poziomie udziału) jest przestarzałe i usunięte w Samba 4. `security = user` (bezpieczeństwo na poziomie użytkownika) to jedyny obsługiwany tryb w nowoczesnej Samba — każde połączenie jest uwierzytelniane względem konkretnej nazwy użytkownika i hasła. Dostęp gościnny jest obsługiwany oddzielnie przez dyrektywy `guest ok` i `map to guest`, a nie przez parametr `security`.
Czy Samba może współistnieć z NFS na tym samym serwerze?
Tak. Samba i NFS działają na zupełnie różnych portach i protokołach i nie kolidują ze sobą na poziomie sieci. Jednak jednoczesne udostępnianie tego samego katalogu przez oba protokoły może powodować konflikty blokowania plików, szczególnie przy operacjach zapisu. Jeśli musisz udostępniać te same dane przez oba protokoły, użyj rozproszonego menedżera blokad (DLM) lub ogranicz jeden protokół do dostępu tylko do odczytu.
Jak dodać wielu użytkowników do jednego udziału Samba?
Użyj grupy Linux. Utwórz grupę (`groupadd teamshare`), dodaj do niej użytkowników (`usermod -aG teamshare user1`), ustaw własność grupy katalogu udziału (`chown root:teamshare /srv/share`) i odwołaj się do grupy w `smb.conf` za pomocą `valid users = @teamshare`. To podejście dobrze się skaluje — dodanie użytkownika do udziału wymaga tylko polecenia `usermod` i rejestracji `smbpasswd -a`, bez żadnych zmian w `smb.conf`.
