Uwierzytelniony użytkownik pracuje w udziale pracownia; dostęp anonimowy jest odrzucany. Testy potwierdzają odczyt, zapis i zgodność plików.
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.
Połącz dwa komputery przez switch.
10.0.0.10/24Samba · SMB / TCP 44510.0.0.20/24Ubuntu Desktop / Windows 11Podłą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.
ip -br address
ip routeip -br address
ping -c 4 10.0.0.10ipconfig
ping 10.0.0.10Ping 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.
Zainstaluj Sambę i klienta.
sudo apt update
sudo apt install samba smbclient
sudo cp -a /etc/samba/smb.conf /etc/samba/smb.conf.przed-labKopię wykonaj przed pierwszą zmianą. Jeżeli już istnieje, użyj innej nazwy, aby nie zastąpić poprzedniej kopii.
sudo apt update
sudo apt install smbclient cifs-utilsNa 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.
Utwórz konto Samby i katalog.
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 -LGrupę 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.
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/pracowniaTryb 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.
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.
sudo nano /etc/samba/smb.conf[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| Ustawienie / test | Znaczenie / oczekiwany wynik |
|---|---|
[global] | Opcje całego serwera; [pracownia] opisuje pojedynczy udział. |
workgroup = WORKGROUP | Nazwa grupy roboczej. Nie tworzy domeny Active Directory. |
server role = standalone server | Samodzielny serwer plików, bez kontrolera domeny. |
security = user | Uwierzytelnianie kontem i hasłem Samby. |
map to guest = Never, guest ok = no | Błędne konto nie jest zamieniane na gościa; udział wymaga logowania. |
server min protocol = SMB2_02 | Wyklucza starszy SMB1. |
smb ports = 445 | Bezpośredni SMB przez TCP 445. Łączymy się po IP, bez wymogu wykrywania NetBIOS. |
path | Rzeczywisty katalog serwera. Nazwa udziału widoczna dla klienta to pracownia. |
browseable = yes | Udział może być widoczny podczas listowania udziałów; nie gwarantuje pojawienia się serwera w widoku Sieć Windows. |
read only = no | Samba dopuszcza zapis, jeśli pozwalają na to także prawa Linux. |
valid users = @sambalab | Dostęp ograniczony do członków grupy systemowej sambalab. |
force group = sambalab | Operacje udziału wykonują się z przypisaną grupą sambalab. |
create mask, force create mode | Maska ogranicza bity nowego pliku, a force dodaje wskazane bity. Ten wariant zapewnia pliki 0660. |
directory mask, force directory mode | Ustawiają nowym katalogom prawa 2770 i dziedziczenie grupy; nie zmieniają wcześniej istniejących obiektów. |
Sprawdź plik i uruchom usługę.
testparm -sOczekuj 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.
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.
Testuj udział z drugiego Ubuntu.
smbclient -L //10.0.0.10 -U smbuczen
smbclient //10.0.0.10/pracownia -U smbuczenWpisz hasło Samby. Na liście powinien pojawić się udział pracownia. W sesji smb: \> używaj komend klienta SMB:
ls
get czytaj.txt
mkdir test-klienta
quitLista zawiera czytaj.txt; plik zostaje pobrany na klienta; katalog test-klienta powstaje na serwerze.
printf 'Raport z drugiego komputera\n' > raport-samba.txt
smbclient //10.0.0.10/pracownia -U smbuczenput raport-samba.txt
get raport-samba.txt pobrany-samba.txt
ls
del raport-samba.txt
rmdir test-klienta
quitcmp 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.
smbclient //10.0.0.10/pracownia -N -U anonymousOczekiwany wynik: odmowa, np. NT_STATUS_LOGON_FAILURE lub NT_STATUS_ACCESS_DENIED. To poprawny wynik testu ograniczeń.
Alternatywnie testuj z Windows 11.
Test-NetConnection 10.0.0.10 -Port 445TcpTestSucceeded : True potwierdza osiągalność portu. W Eksploratorze lub oknie Win+R wpisz:
\\10.0.0.10\pracowniaWybierz 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.
Ćwiczenie dodatkowe: zamontuj udział.
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.txtMount 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.
rm /mnt/pracownia/test-mount.txt
sudo umount /mnt/pracowniaUsuń 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.
Rozwiąż typowe problemy.
| Ustawienie / test | Znaczenie / oczekiwany wynik |
|---|---|
| Port 445 nie odpowiada | Sprawdź usługę smbd, IP, połączenie do switcha, VLAN i zaporę. |
| NT_STATUS_LOGON_FAILURE | Użyj hasła Samby, sprawdź smbpasswd -a/-e i listę pdbedit -L. |
| NT_STATUS_BAD_NETWORK_NAME | Sprawdź nazwę [pracownia], adres udziału oraz wynik testparm. |
| Dostęp jest, ale brak zapisu | Sprawdź read only, grupę użytkownika, własność katalogu i prawa Linux. |
| NT_STATUS_ACCESS_DENIED | Sprawdź członkostwo w sambalab, valid users i prawa przejścia przez katalogi nadrzędne. |
| Serwer nie pojawia się w Sieć Windows | Połącz się bezpośrednio po IP. Widok wykrywania sieci to odrębny mechanizm. |
| Błąd wielu połączeń z różnymi kontami Windows | Sprawdź net use i zakończ właściwe sesje do tego serwera; nie zmieniaj SMB1 ani zabezpieczeń gościa. |
id smbuczen
sudo pdbedit -L
sudo namei -l /srv/samba/pracownia
sudo journalctl -u smbd -n 50 --no-pager
sudo smbstatusSmbstatus 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/.
Zadanie samodzielne i raport.
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.
| Ustawienie / test | Znaczenie / oczekiwany wynik |
|---|---|
| Topologia i IP | Dwa komputery, switch, poprawna adresacja w jednej podsieci. |
| Konfiguracja | Wynik testparm, stan active i nasłuch TCP 445. |
| Konto | Wpis w bazie Samby i członkostwo w grupie sambalab. |
| Odczyt i zapis | Pobranie czytaj.txt, upload/download raportu, zgodność plików i udane operacje na własnym katalogu. |
| Odmowa | Próba anonymous kończy się odmową. |
| Prawa | Grupa 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.
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.