Samba to potężne narzędzie umożliwiające bezproblemowe udostępnianie plików i drukarek między komputerami pracującymi pod kontrolą różnych systemów operacyjnych. Pozwala na integrację systemów Linux/Unix z sieciami Windows poprzez implementację protokołu SMB/CIFS.
Samba to darmowa implementacja protokołu SMB/CIFS (Server Message Block/Common Internet File System) dla systemów Unix i Linux. Po instalacji serwer Samba powinien zostać automatycznie uruchomiony. Główny plik konfiguracyjny Samba znajduje się w /etc/samba/smb.conf. Użytkownicy Samba muszą najpierw być użytkownikami systemu Linux.
Samba to serwer plików i drukarek. Ma implementację protokołów z Windows, czyli SMB i CIFS. Idealnie nadaje się do współdzielenia plików między linuksem a Windows. SMBD jest demonem serwera który dostarcza usług współdzielenia plików i drukarek do klientów Windows.
Sprawdzamy, czy demony działają za pomocą service lub systemctl. Podstawowy plik konfiguracyjny. Jeśli udział ma być uwierzytelniany to musimy dodać użytkownika dla Samby. Użytkownik musi istnieć również w systemie.
Serwer Samba działa jako serwer plików, który umożliwia udostępnianie zasobów na sieci lokalnej lub zdalnej, jeśli taka będzie intencja. Samba umożliwia udostępnianie plików i drukarek na wiele różnych sposobów. Na przykład można udostępnić cały katalog lub tylko wybrane pliki.
Można również zdefiniować dostępne dla użytkowników poziomy dostępu, takie jak tylko do odczytu lub do odczytu i zapisu. Ważną funkcjonalnością serwera Samba jest autoryzacja użytkowników, która umożliwia kontrolowanie dostępu do udostępnianych plików i drukarek. Można skonfigurować Sambę tak, aby korzystała z kont użytkowników systemu Linux lub z kont Samba.
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.
Przed rozpoczęciem konfiguracji serwera Samba, należy upewnić się, że jest on zainstalowany w systemie. Po zainstalowaniu Samba, należy skonfigurować plik smb.conf. Jest to plik konfiguracyjny serwera Samba, który znajduje się w katalogu /etc/samba/.
Najlepiej przed rozpoczęciem pracy utworzyć sobie kopię pliku oryginalnego. Plik konfiguracyjny Samba to jeden z najważniejszych elementów serwera Samba w systemie Linux. Odpowiada on za konfigurację usługi i kontrolę dostępu do udostępnianych plików i drukarek.
Sekcja [global] definiuje globalne ustawienia Samba, takie jak nazwę i opis serwera, domenę, protokół, typ serwera i inne opcje. security - określa sposób autoryzacji użytkowników, np. map to guest - określa zachowanie dla nieautoryzowanych użytkowników, np.
Sekcja [homes] służy do udostępniania katalogów domowych użytkowników. Samba automatycznie tworzy ten katalog, jeśli nie istnieje. Sekcja [printers] służy do udostępniania drukarek w sieci.
Ponadto, istnieją inne sekcje konfiguracyjne, takie jak share, która umożliwia udostępnianie zasobów innymi użytkownikom sieci, czy user, która pozwala na określenie uprawnień dla poszczególnych użytkowników.
Sekcja [netlogon] odpowiada za konfigurację lokalizacji plików skryptów logowania dla użytkowników. Klienci Windows podczas logowania do domeny korzystają z tych plików, co umożliwia administratorom m.in. przypisywanie konkretnych ustawień dla poszczególnych użytkowników lub grup. Sekcja [profiles] odpowiada za definiowanie lokalizacji profili użytkowników.
Użyj menedżera pakietów odpowiedniego dla swojej dystrybucji. Zawsze najpierw zaktualizuj indeks pakietów, aby uniknąć instalowania przestarzałych wersji.
Debian / Ubuntu:
sudo apt-get update
sudo apt-get install samba samba-common-bin
CentOS Stream / RHEL:
sudo dnf install samba samba-client samba-common
Fedora:
sudo dnf install samba samba-client samba-common
Arch Linux:
sudo pacman -S samba
Po instalacji zweryfikuj zainstalowaną wersję:
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ń.
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ą:
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.backup.$(date +%F)
Otwórz plik do edycji:
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.
W sekcji [global] zwróć uwagę na następujące ustawienia:
[global]
workgroup = WORKGROUP
server string = Samba Server %v
netbios name = MYSERVER
security = user
map to guest = bad user
dns proxy = nolog
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*password:* %n *Retypesnews*password:* %n *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.
Utwórz katalog, który będzie udostępniany w sieci:
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):
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):
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.
Dla uwierzytelnionych udziałów utwórz dedykowaną grupę Linux mapowaną do udziału Samba:
sudo groupadd sambashare
Dodaj użytkownika Linux, który będzie miał dostęp do udziału:
sudo useradd -M -s /sbin/nologin sambausers
sudo usermod -aG sambashare sambausers
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):
sudo smbpasswd -a sambausers
sudo smbpasswd -e sambausers
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.
Dodaj następujący blok na końcu /etc/samba/smb.conf. Jest to bardziej skalowalne niż wymienianie poszczególnych nazw użytkowników.
create mask = 0660
directory mask = 2770
force group = sambashare
Udział gościnny (domowe laboratorium / wewnętrzna sieć LAN):
[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
W przypadku gdy udział ma być uwierzytelniany, dodajesz odpowiednie reguły w sekcji udziału oraz listy użytkowników do dostępu.
Przed ponownym uruchomieniem jakiejkolwiek usługi uruchom wbudowany parser konfiguracji:
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.
Debian / Ubuntu:
sudo systemctl restart smbd nmbds
sudo systemctl enable smbd nmbd
CentOS / RHEL / Fedora:
sudo systemctl restart smb nmb
sudo systemctl enable smb nmb
Zweryfikuj, że oba demony działają:
sudo systemctl status smbd nmbd
Sprawdź, czy demony nasłuchują na właściwych portach:
sudo ss -tlnp | grep -E '(smbd|nmbd|445|139)'
Oczekiwane wyjście powinno pokazywać smbd powiązany z portem 445 i 139.
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):
sudo ufw allow 'Samba'
sudo ufw status
firewalld (CentOS/RHEL/Fedora):
sudo firewall-cmd -permanent -add-service=sambas
sudo firewall-cmd -reload
sudo firewall-cmd -list-services
iptables (ręcznie):
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.
Trzeba pamiętać, że Samba ma setki opcji konfiguracyjnych. Dobrą praktyką przed edycją pliku konfiguracyjnego jest zrobienie jego kopii. Po otwarciu, jak to w linuksie jest cała masa komentarzy i zakomentowanych opcji ułatwiających konfigurowanie tego pliku.
Przynajmniej korzystając z konsolowego narzędzia smbclient, wygląda to tak jak w przypadku menadżera plików, np. nemo po przejściu na zakładkę network.
Używając smbclient (interaktywnie, do testowania):
smbclient //192.168.1.100/sambashare -U sambausers
Otwiera to interaktywną powłokę podobną do FTP. Używaj ls, get, put i exit do nawigacji i transferu plików.
ls - lista plików i katalogów na udziale
get - pobieranie plików z serwera
put - wysyłanie plików na serwer
exit - wyjście z sesji
W przedstawionym poniżej przypadku będzie to użytkownik „share” oraz przypisane do niego hasło. W moim przypadku będzie to użytkownik „share” oraz przypisane do niego hasło. Telefony z systemem Android domyślnie nie posiadają aplikacji, która pozwala na połączenie z dyskiem sieciowym (przynajmniej większość z nich).
Mamy tutaj trzy opcje montowania zdalnych zasobów CIFS/SMB/SAMBA.
Praktycznie w całości łącze gigabitowe. na poziomie 35-40MiB/s, co jest wynikiem dość słabym. praktycznie w całości łącze gigabitowe. rozwiązany.
Najpierw zainstaluj pakiet narzędzi CIFS:
sudo apt-get install cifs-utils
sudo dnf install cifs-utils
Utwórz punkt montowania i plik poświadczeń (nigdy nie umieszczaj haseł w /etc/fstab w postaci zwykłego tekstu):
sudo mkdir -p /mnt/sambashare
sudo nano /etc/samba/credentials
Zawartość pliku poświadczeń:
username=sambausers
password=yourpassword
domain=WORKGROUP
Zabezpiecz plik poświadczeń:
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:
sudo mount -a
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 | 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 ustaw 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.
Konfiguracja pliku smb.conf jest kluczowa dla bezpieczeństwa serwera Samba. Firewall - zwłaszcza jeśli wystawimy sambę na świat - zdefiniujmy adresy, z których możliwe jest łączenie się do samby. Autoryzacja - określenie, które użytkownicy mają dostęp do udostępnianych plików i drukarek.
W sekcji global należy wybrać odpowiedni tryb autoryzacji, np. user, share lub domain, w zależności od potrzeb. Hasła - Samba powinna być zawsze chroniona hasłem, aby uniknąć dostępu niepowołanych użytkowników. W sekcji global można określić ustawienia związane z bezpieczeństwem, takie jak password server, encrypt passwords czy security.
Ograniczenia dostępu - Samba pozwala na określenie, kto ma dostęp do poszczególnych plików i katalogów. Dziennik zdarzeń - Samba generuje dziennik zdarzeń, który zawiera informacje o działaniach użytkowników na serwerze. Dziennik ten może być używany do monitorowania i diagnozowania problemów związanych z serwerem Samba.
Zaktualizuj system i oprogramowanie - Regularnie aktualizuj system i oprogramowanie, aby uniknąć znanych luk w zabezpieczeniach. Zabezpiecz połączenia - Samba domyślnie używa protokołu SMB, który nie jest bezpieczny.
Uwaga: Wymuszenie szyfrowania może spowodować problemy z kompatybilnością ze starszymi klientami.
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.
Zweryfikuj, że kontekst został zastosowany:
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”.
W kilku poprzednich artykułach opisałem proces doboru odpowiedniego systemu operacyjnego dla domowego serwera, następnie przeprowadziłem użytkownika przez proces instalacji, zmiany adresu IP na statyczny, a także konfiguracji połączenia SSH (zarządzanie zdalne).
Gdy serwer pracuje już poprawnie nie pozostaje nic innego, jak stworzenie współdzielonego katalogu, który będzie służył jako Dysk Sieciowy dla wszystkich urządzeń w sieci domowej.
Zbiór narzędzi instalowanych jako pakiet Samba w systemie Linux pozwala na przygotowanie połączenia wykorzystującego protokół SMB. Nie chcę zagłębiać się w techniczny opis działania protokołu, w skrócie można opisać go jako protokół pozwalający na wymianę danych między serwerem oraz klientem, dzięki czemu możliwe jest przesyłanie plików między urządzeniami (a także bezpośrednia praca na nich).
Po utworzeniu katalogu należy wyedytować plik konfiguracyjny Samby. Po dopisaniu powyższej treści do dokumentu należy go zapisać wciskając kombinację klawiszy Ctrl+O, a następnie zamknąć edytor klawiszami Ctrl+X. Kolejnym krokiem, jaki należy wykonać to pozwolenie usłudze Samba na odbieranie i wysyłanie pakietów w sieci.
Po wykonaniu powyższych działań udostępniony katalog będzie możliwy do wykrycia w sieci lokalnej, jednak nie będzie możn jeszcze podłączyć się do niego. Dodanie użytkownika do usługi Samby możliwe jest jedynie wtedy, gdy użytkownik istnieje w systemie domowym.
Od tej chwili możliwe będzie podpięcie katalogu sieciowego na dowolnym komputerze w sieci lokalnej używająć utworzonych poświadczeń.
W przypadku usługi przez konsolę: przynajmniej korzystając z konsolowego narzędzia smbclient, wygląda w przypadku menadżera plików, np. nemo po przejściu na zakładkę network. przez CIFS/SMB/SAMBA na localhost. sieci, tj. jak wygląda wgrywanie plików.
Pliki zostały z powodzeniem utworzone. się zalogowaliśmy przy dostępie do zasobu CIFS/SMB/SAMBA. plikach/katalogach. ustawioną w pliku /etc/samba/smb.conf . samba .

Podłączanie utworzonego katalogu współdzielonego na innych urządzeniach w sieci to proces bardzo prosty, lecz jego wykonanie zależy od posiadanego systemu operacyjnego.
W przypadku systemu Linux Ubuntu temat jest bardzo prosty. Aby dodać nowy zasób sieciowy należy otworzyć przeglądarkę plików, a następnie kliknąć zakładkę „+ Inne lokalizacje” widoczną po lewej stronie okna przeglądarki plików. Po wciśnięciu przycisku „Połącz” system zweryfikuje, czy pod wskazanym adresem faktycznie udostępniane są katalogi, które można przeglądać.
Połączenie z dyskiem sieciowym w systemie Windows 10 odbywa się poprzez funkcję zmapowania dysku sieciowego. Aby to zrobić należy otworzyć „Mój Komputer”, a następnie na pasku zadań wybrać opcję „Mapuj dysk sieciowy”.
Dodatkowo warto upewnić się, że opcje „Połącz ponownie przy logowaniu” oraz „Połącz przy użyciu innych poświadczeń” są zaznaczone. W kolejnym oknie należy wpisać poświadczenia pozwalające na dostęp do serwera.
Domowy serwer to idealne rozwiązanie jeśli chcemy mieć uniwersalny dysk sieciowy, który można podpiąć pod każde urządzenie w sieci lokalnej (bez względu na posiadany system operacyjny). Pozwala to na szybką wymianę plików między urządzeniami i znacząco rozszerza dostępną na urządzeniach pamięć.

Maszyny i sprawdzamy czy zdefiniowane reguły rejestrują jakieś pakiety. dedykowane profile dla apparmor (w pakiecie apparmor-profiles ).
Przeglądania sieciowych zasobów CIFS/SMB/SAMBA. zdefiniować potrzebne opcje montowania zdalnych katalogów. może nam to zaoszczędzić sporo czasu.
Wymuszenie szyfrowania może spowodować problemy z kompatybilnością ze starszymi klientami. Samba teoretycznie może obsłużyć setki połączeń, ale praktyczny limit zależy od zasobów serwera (CPU, RAM, przepustowość sieci).
Tak, Samba działa świetnie na Raspberry Pi, czyniąc go tanią alternatywą dla dedykowanych urządzeń NAS. Samba to niezwykle elastyczne i potężne narzędzie do udostępniania plików w sieciach mieszanych. Pamiętaj o regularnych aktualizacjach serwera i tworzeniu kopii zapasowych udostępnionych danych.
W IQHost oferujemy w pełni zarządzane serwery VPS, na których możesz uruchomić własny serwer Samba wraz z innymi usługami.
tags: #linux #przeslanie #plikow #przez #samba #w
About the author