15%

Zaoszczędź 15% na wszystkich usługach hostingowych

Sprawdź swoje umiejętności i zdobądź Rabat na dowolny plan hostingowy

Użyj kodu:

Skills
Rozpocznij
08.10.2024

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:

PortProtokółUsługaPrzeznaczenie
—————-——————
137UDPnmbdUsługa nazw NetBIOS
138UDPnmbdUsługa datagramów NetBIOS
139TCPsmbdUsługa sesji NetBIOS (SMB przez NetBIOS)
445TCPsmbdBezpoś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:

  1. Otwórz Eksplorator plików.
  2. W pasku adresu wpisz: `<server-ip>sambashare` i naciśnij Enter.
  3. Po wyświetleniu monitu wprowadź nazwę użytkownika i hasło Samba.
  4. 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 SMBRokKluczowe funkcjeBezpieczeństwoZalecane zastosowanie
————-——————–———-—————–
SMB11983Podstawowe udostępnianie plikówKrytycznie podatny (EternalBlue)Nigdy nie używaj — wyłącz jawnie
SMB22006Pipelining, zmniejszona gadatliwość, podpisywanieUlepszoneStarsze klienty Windows Vista/7
SMB2.12010Dzierżawa oplock klientaUlepszoneWindows 7/2008 R2
SMB3.02012Multichannel, szyfrowanie, failoverSilneWindows 8/2012 i nowsze
SMB3.1.12015Integralność przed uwierzytelnieniem, AES-128-GCMNajsilniejszeWindows 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:

KryteriumSamba (SMB/CIFS)NFS
———-—————–—–
Główny przypadek użyciaWieloplatformowy (Linux + Windows)Udostępnianie Linux-Linux
Obsługa klientów WindowsNatywna, bez potrzeby instalacji oprogramowania klienckiegoWymaga instalacji klienta NFS
Obsługa macOSNatywna (SMB)Obsługiwana przez wbudowanego klienta NFS
UwierzytelnianieNazwa użytkownika/hasło, integracja z ADOparte na hoście (IP/nazwa hosta)
Wydajność (LAN)Nieco wyższe obciążenieNiższe obciążenie, szybsze w sieci LAN
SzyfrowanieSMB3 obsługuje szyfrowanie AESNFSv4.2 obsługuje szyfrowanie krb5
Złożoność konfiguracjiUmiarkowanaNiż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`.

15%

Zaoszczędź 15% na wszystkich usługach hostingowych

Sprawdź swoje umiejętności i zdobądź Rabat na dowolny plan hostingowy

Użyj kodu:

Skills
Rozpocznij