SSP1XNE
Laboratorium/Serwer plików Samba

LAB 06 · UBUNTU / USŁUGI SIECIOWE

Serwer plików Samba.
Udostępnij katalog w sieci

Zainstaluj Sambę, skonfiguruj konta i prawa udziału. Sprawdź odczyt oraz zapis z drugiego komputera przez switch.

Ubuntu Server 24.04 LTS2 komputery + switch60–90 minut
Zacznij zadanie ↓
Cel zadania

Uwierzytelniony użytkownik pracuje w udziale pracownia; dostęp anonimowy jest odrzucany. Testy potwierdzają odczyt, zapis i zgodność plików.

01 / LABORATORIUM SAMBA

Udostępnij katalog przez SMB.

Samba umożliwia udostępnianie katalogów Ubuntu klientom Windows i Linux przez protokół SMB. W tym zadaniu utworzysz udział pracownia, dostępny po uwierzytelnieniu. Użytkownik smbuczen będzie mógł odczytywać, tworzyć i usuwać własne pliki. Dostęp anonimowy zostanie odrzucony.

Potrzebne są dwa poziomy zgody: konfiguracja udziału w Sambie oraz uprawnienia do katalogu w Linux. read only = no nie zastępuje praw systemu plików. Konto Samby ma własne hasło; istnienie konta Ubuntu samo nie wystarcza.

02 / LABORATORIUM SAMBA

Połącz dwa komputery przez switch.

SERWERUbuntu Server 24.04 LTS10.0.0.10/24Samba · SMB / TCP 445
↔
SIEĆ LANSwitchDwa przewody Ethernet
↔
KLIENTDrugi komputer10.0.0.20/24Ubuntu Desktop / Windows 11

Podłącz oba komputery kablami do tego samego switcha i tej samej sieci VLAN. Adresy są przykładowe: serwer 10.0.0.10/24, klient 10.0.0.20/24, maska 255.255.255.0. Każdy adres musi być unikalny. Do komunikacji w tej podsieci nie potrzeba bramy ani DNS. Internet jest potrzebny do instalacji pakietów; sam switch go nie zapewnia. Nie wpisuj przypadkowej bramy.

Adresację ustaw według lekcji Netplan. Na Windows adres ustaw we właściwościach IPv4 karty Ethernet. Jeśli korzystasz z VM, wybierz kartę mostkowaną do przewodowego interfejsu i sprawdź, czy serwer jest osiągalny z drugiego fizycznego komputera.

SERWER · sprawdzenie adresacji
ip -br address
ip route
KLIENT UBUNTU · sprawdzenie połączenia
ip -br address
ping -c 4 10.0.0.10
KLIENT WINDOWS · PowerShell
ipconfig
ping 10.0.0.10

Ping potwierdza odpowiedź ICMP; jego brak może wynikać z zapory. Test portu i właściwej usługi wykonasz w dalszej części. Nie używaj adresu localhost do testu z drugiego komputera.

03 / LABORATORIUM SAMBA

Zainstaluj Sambę i klienta.

SERWER · pakiety i kopia konfiguracji
sudo apt update
sudo apt install samba smbclient
sudo cp -a /etc/samba/smb.conf /etc/samba/smb.conf.przed-lab

Kopię wykonaj przed pierwszą zmianą. Jeżeli już istnieje, użyj innej nazwy, aby nie zastąpić poprzedniej kopii.

KLIENT UBUNTU · narzędzia
sudo apt update
sudo apt install smbclient cifs-utils

Na Windows 11 wystarczy Eksplorator plików i PowerShell. Nie włączaj SMB1 — ćwiczenie korzysta z SMB2/SMB3 i bezpośredniego połączenia na port 445.

04 / LABORATORIUM SAMBA

Utwórz konto Samby i katalog.

SERWER · konto, grupa i hasło SMB
sudo addgroup sambalab
sudo adduser --disabled-password --gecos "" smbuczen
sudo usermod -aG sambalab smbuczen
sudo smbpasswd -a smbuczen
sudo smbpasswd -e smbuczen
id smbuczen
sudo pdbedit -L

Grupę i konto twórz tylko, jeśli jeszcze nie istnieją. --disabled-password blokuje logowanie hasłem Unix; konto istnieje jako tożsamość właściciela plików. smbpasswd -a dodaje wpis w bazie Samby i prosi o osobne hasło SMB. -e włącza wpis. Nazwa użytkownika Samba musi odpowiadać kontu systemowemu.

SERWER · katalog wspólny
sudo install -d -o root -g sambalab -m 2770 /srv/samba/pracownia
printf 'Witaj w udziale Samba\n' | sudo tee /srv/samba/pracownia/czytaj.txt
sudo chown root:sambalab /srv/samba/pracownia/czytaj.txt
sudo chmod 660 /srv/samba/pracownia/czytaj.txt
ls -ld /srv/samba/pracownia

Tryb 2770 oznacza pełny dostęp właściciela i grupy, brak dostępu innych oraz bit setgid. Nowe obiekty dziedziczą grupę katalogu. Plik powitalny ma tryb 660. Do tej grupy dodajesz użytkowników, którzy mają pracować w udziale; nie stosuj chmod 777.

05 / LABORATORIUM SAMBA

Skonfiguruj udział i poznaj ustawienia.

Na świeżym serwerze laboratoryjnym zastąp zawartość /etc/samba/smb.conf poniższą konfiguracją. Gdy serwer ma już udziały, zachowaj je, dostosuj istniejącą sekcję global i dodaj tylko nową sekcję udziału. Nie twórz kilku konkurujących sekcji pracownia.

SERWER · edycja
sudo nano /etc/samba/smb.conf
/etc/samba/smb.conf · wariant laboratoryjny
[global]
    workgroup = WORKGROUP
    server role = standalone server
    security = user
    map to guest = Never
    server min protocol = SMB2_02
    smb ports = 445

[pracownia]
    comment = Pliki pracowni Ubuntu
    path = /srv/samba/pracownia
    browseable = yes
    read only = no
    guest ok = no
    valid users = @sambalab
    force group = sambalab
    create mask = 0660
    force create mode = 0660
    directory mask = 2770
    force directory mode = 2770
Znaczenie ustawień Samby
Ustawienie / testZnaczenie / oczekiwany wynik
[global]Opcje całego serwera; [pracownia] opisuje pojedynczy udział.
workgroup = WORKGROUPNazwa grupy roboczej. Nie tworzy domeny Active Directory.
server role = standalone serverSamodzielny serwer plików, bez kontrolera domeny.
security = userUwierzytelnianie kontem i hasłem Samby.
map to guest = Never, guest ok = noBłędne konto nie jest zamieniane na gościa; udział wymaga logowania.
server min protocol = SMB2_02Wyklucza starszy SMB1.
smb ports = 445Bezpośredni SMB przez TCP 445. Łączymy się po IP, bez wymogu wykrywania NetBIOS.
pathRzeczywisty katalog serwera. Nazwa udziału widoczna dla klienta to pracownia.
browseable = yesUdział może być widoczny podczas listowania udziałów; nie gwarantuje pojawienia się serwera w widoku Sieć Windows.
read only = noSamba dopuszcza zapis, jeśli pozwalają na to także prawa Linux.
valid users = @sambalabDostęp ograniczony do członków grupy systemowej sambalab.
force group = sambalabOperacje udziału wykonują się z przypisaną grupą sambalab.
create mask, force create modeMaska ogranicza bity nowego pliku, a force dodaje wskazane bity. Ten wariant zapewnia pliki 0660.
directory mask, force directory modeUstawiają nowym katalogom prawa 2770 i dziedziczenie grupy; nie zmieniają wcześniej istniejących obiektów.
06 / LABORATORIUM SAMBA

Sprawdź plik i uruchom usługę.

SERWER · walidacja przed restartem
testparm -s

Oczekuj komunikatu Loaded services file OK i sekcji pracownia z właściwą ścieżką. Usuń błędy i nieznane opcje przed restartem. Testparm sprawdza konfigurację, lecz nie udowadnia poprawnych praw katalogu ani hasła.

SERWER · zapora i start
sudo ufw status verbose
sudo ufw allow from 10.0.0.20 to any port 445 proto tcp
sudo systemctl enable --now smbd
sudo systemctl restart smbd
systemctl status smbd --no-pager
sudo ss -ltnp 'sport = :445'

Usługa ma być active, port 445 w stanie LISTEN. W tym wariancie nie potrzebujesz nmbd ani portów NetBIOS 137–139. Jeśli UFW jest nieaktywny, włączaj go przy konsoli dopiero po dodaniu reguł dla pozostałych potrzebnych usług.

07 / LABORATORIUM SAMBA

Testuj udział z drugiego Ubuntu.

KLIENT UBUNTU · lista udziałów i sesja
smbclient -L //10.0.0.10 -U smbuczen
smbclient //10.0.0.10/pracownia -U smbuczen

Wpisz hasło Samby. Na liście powinien pojawić się udział pracownia. W sesji smb: \> używaj komend klienta SMB:

KLIENT · wewnątrz sesji smbclient
ls
get czytaj.txt
mkdir test-klienta
quit

Lista zawiera czytaj.txt; plik zostaje pobrany na klienta; katalog test-klienta powstaje na serwerze.

KLIENT UBUNTU · plik i ponowna sesja
printf 'Raport z drugiego komputera\n' > raport-samba.txt
smbclient //10.0.0.10/pracownia -U smbuczen
KLIENT · transfer i usunięcie własnego testu
put raport-samba.txt
get raport-samba.txt pobrany-samba.txt
ls
del raport-samba.txt
rmdir test-klienta
quit
KLIENT UBUNTU · porównanie
cmp raport-samba.txt pobrany-samba.txt
echo $?

Porównanie ma zwrócić kod 0. Usunięcie dotyczy wyłącznie utworzonego przez Ciebie pliku testowego. Podczas transferu sprawdź na serwerze sudo ls -l /srv/samba/pracownia: grupa nowych plików to sambalab.

Test odmowy dostępu gościa.

KLIENT UBUNTU · bez hasła i konta
smbclient //10.0.0.10/pracownia -N -U anonymous

Oczekiwany wynik: odmowa, np. NT_STATUS_LOGON_FAILURE lub NT_STATUS_ACCESS_DENIED. To poprawny wynik testu ograniczeń.

08 / LABORATORIUM SAMBA

Alternatywnie testuj z Windows 11.

KLIENT WINDOWS · PowerShell, test portu
Test-NetConnection 10.0.0.10 -Port 445

TcpTestSucceeded : True potwierdza osiągalność portu. W Eksploratorze lub oknie Win+R wpisz:

KLIENT WINDOWS · adres udziału
\\10.0.0.10\pracownia

Wybierz inne konto, wpisz smbuczen oraz hasło ustawione przez smbpasswd. Gdy Windows potrzebuje prefiksu, użyj nazwy serwera Ubuntu, np. UBUNTU-SERWER\smbuczen; rzeczywistą nazwę sprawdzisz przez hostname na serwerze.

Otwórz czytaj.txt, utwórz raport-windows.txt, wpisz własną treść, zapisz, zamknij i otwórz ponownie. Skopiuj plik na pulpit, porównaj zawartość i usuń wyłącznie własny plik testowy z udziału. Sprawdź jego obecność i właściciela na serwerze przed usunięciem.

Windows używa wcześniej zapisanego konta.

Sprawdź aktywne połączenia poleceniem net use. Zamknij otwarte pliki i rozłącz tylko połączenie do tego udziału: net use \\10.0.0.10\pracownia /delete. Usuń właściwy zapis dla tego serwera w Menedżerze poświadczeń, jeśli jest potrzebne ponowne logowanie. Nie rozłączaj wszystkich udziałów komendą z gwiazdką. Windows może wymagać zakończenia także innych sesji do tego samego serwera, zanim pozwoli użyć innego konta.

09 / LABORATORIUM SAMBA

Ćwiczenie dodatkowe: zamontuj udział.

KLIENT UBUNTU · tymczasowy punkt montowania
sudo mkdir -p /mnt/pracownia
sudo mount -t cifs //10.0.0.10/pracownia /mnt/pracownia -o username=smbuczen,vers=3.0,uid=$(id -u),gid=$(id -g)
ls -l /mnt/pracownia
printf 'Test montowania\n' > /mnt/pracownia/test-mount.txt
cat /mnt/pracownia/test-mount.txt

Mount poprosi o hasło, którego nie zapisujemy w poleceniu. vers=3.0 wybiera SMB3. uid i gid określają sposób prezentacji właściciela na kliencie; prawa na serwerze nadal wynikają z konta SMB i katalogu udziału.

KLIENT UBUNTU · zakończ test
rm /mnt/pracownia/test-mount.txt
sudo umount /mnt/pracownia

Usuń tylko własny plik testowy. Montowanie jest tymczasowe — nie zmieniamy /etc/fstab. Przed odmontowaniem wyjdź z katalogu udziału i zamknij używające go aplikacje.

10 / LABORATORIUM SAMBA

Rozwiąż typowe problemy.

Diagnostyka Samby
Ustawienie / testZnaczenie / oczekiwany wynik
Port 445 nie odpowiadaSprawdź usługę smbd, IP, połączenie do switcha, VLAN i zaporę.
NT_STATUS_LOGON_FAILUREUżyj hasła Samby, sprawdź smbpasswd -a/-e i listę pdbedit -L.
NT_STATUS_BAD_NETWORK_NAMESprawdź nazwę [pracownia], adres udziału oraz wynik testparm.
Dostęp jest, ale brak zapisuSprawdź read only, grupę użytkownika, własność katalogu i prawa Linux.
NT_STATUS_ACCESS_DENIEDSprawdź członkostwo w sambalab, valid users i prawa przejścia przez katalogi nadrzędne.
Serwer nie pojawia się w Sieć WindowsPołącz się bezpośrednio po IP. Widok wykrywania sieci to odrębny mechanizm.
Błąd wielu połączeń z różnymi kontami WindowsSprawdź net use i zakończ właściwe sesje do tego serwera; nie zmieniaj SMB1 ani zabezpieczeń gościa.
SERWER · konta, katalog i dziennik
id smbuczen
sudo pdbedit -L
sudo namei -l /srv/samba/pracownia
sudo journalctl -u smbd -n 50 --no-pager
sudo smbstatus

Smbstatus pozwala zobaczyć aktywne sesje podczas pracy klienta. Po zmianie członkostwa w grupie zamknij i otwórz sesję SMB. Dodatkowe logi mogą znajdować się w /var/log/samba/.

11 / LABORATORIUM SAMBA

Zadanie samodzielne i raport.

ZADANIE · 60–90 MINUT

Na Ubuntu uruchom udział pracownia, dostępny dla konta smbuczen z grupy sambalab. Z drugiego komputera podłączonego przez switch odczytaj plik, utwórz katalog, prześlij i pobierz raport, porównaj zawartość oraz usuń własne pliki testowe. Sprawdź odmowę dostępu anonimowego.

Dowody do zaliczenia
Ustawienie / testZnaczenie / oczekiwany wynik
Topologia i IPDwa komputery, switch, poprawna adresacja w jednej podsieci.
KonfiguracjaWynik testparm, stan active i nasłuch TCP 445.
KontoWpis w bazie Samby i członkostwo w grupie sambalab.
Odczyt i zapisPobranie czytaj.txt, upload/download raportu, zgodność plików i udane operacje na własnym katalogu.
OdmowaPróba anonymous kończy się odmową.
PrawaGrupa sambalab na nowym pliku; objaśnienie 2770 i dwóch warstw dostępu.
Pytania kontrolne i podpowiedzi

Czym różni się hasło Unix od hasła Samby? Dlaczego read only = no nie wystarcza do zapisu? Co oznacza @ w valid users? Po co setgid na katalogu? Bazy uwierzytelniania są odrębne; konto Unix zapewnia tożsamość plików. Zapis wymaga zgodnych praw Samby i Linux. Znak @ wskazuje grupę, a setgid zapewnia dziedziczenie grupy przez nowe obiekty.

12 / LABORATORIUM SAMBA

Dokumentacja Samby.

Scenariusz: Ubuntu Server 24.04 LTS i drugi komputer w tej samej sieci przez switch. Przygotowano 12.10.2026. Polecenia oznaczone SERWER wykonuj na serwerze, KLIENT na drugim komputerze.