- Wprowadzenie do laboratorium
Samba to serwer plików i drukarek służący ich udostępnianiu a oparty jest na open-source'owym protokole SMB. Można również dzięki niemu uruchomić usługi katalogowe, czyli swoistego rodzaju Active Directory;
summa summarum działa więc jako kontroler domeny. W skład Samby wchodzi m.in. usługa smbd, która zapewnia obsługę protokołu SMB a będziemy z niej korzystać. Z kolei udostępniane zasoby (udziały) moża podzielić na:
- publiczne - z dostępem wszystkich (nawet anonimowych) użytkowników zarówno tych z kontem jak i bez.
- prywatne - z dostępem dla wszystkich użytkowników występujących we wpisach bazodanowych Samby.
- autoryzowany indywidualny - z dostępem dla jednego użytkownika.
- autoryzowany grupowy - z dostępem dla autoryzowanej grupy użytkowników Linuksa.
W Linuksie w katalogu /srv znajdują się pliki z których mają korzystać udziały a więc wszelkiego rodzaju pliki związane z usługą ftp, www itp. Z tego katalogu będziemy korzystać, tworząc w nim podkatalog z zasobami
udostępnionymi przez Sambę.
- Czynności wstępne
Na początku aktualizujemy repozytoria i pakiety poleceniami sudo apt update oraz sudo apt upgrade.
- Założenia projektowe
W katalogu /srv utworzymy katalog o nazwie smb z podkatalogami pub, priv, ti, nazwisko. Podfolder nazwisko oznaczać będzie twoje nazwisko, bez polskich znaków.
Oprócz tego utworzymy użytkowników imnazwisko oraz stud1 i stud2. Fraza imnazwisko oznaczać będzie twoje 2 pierwsze litery
twojego imienia i nazwisko - bez spacji i polskich znaków.
Użytkownicy stud1 i stud2 należeć będą do grupy students, która również zostanie utworzona.
- Utworzenie folderów w katalogu /srv
Wydajemy poniższe polecenia aby przejść do katalogu /srv i utworzyć poszczególne katalogi:
$ cd /srv/
$ sudo mkdir smb
$ cd smb/
$ sudo mkdir pub
$ sudo mkdir priv
$ sudo mkdir ti
$ sudo mkdir nazwisko
Następnie instalujemy narzędzie tree (u mnie zainstalowane), które pozwala wygodnie wizualizować strukturę katalogów w systemie oraz wydajemy polecenie tree /srv, aby zobaczyć strukturę podfolderów
katalogu /srv. Ten zrzut ekranu należy włączyć do sprawozdania
$ sudo apt install tree
$ tree /srv

- Użytkownicy i grupy, prawa dostępu
Tworzymy grupę oraz konta. Przypominam, że imnazwisko oznaczać będzie twoje 2 pierwsze litery twojego imienia i nazwisko - bez spacji i polskich znaków.
Poniższe polecenia dodadzą nam nowych użytkowników wraz z hasłami (najlepiej niech wszyscy użytkownicy posiadają jedno hasło, np. stud), katalogami domowymi w folderze /home i pozostałymi addytywnymi informacjami.
Utworzenie użytkownika o danej nazwie przypisuje go z automatu do utworzonej w ten sposób grupy o tej samej nazwie.
$ sudo addgroup students
$ sudo adduser imnazwisko
$ sudo adduser stud1
$ sudo adduser stud2

Do grupy students dodajemy utworzonych przed chwilą dwóch użytkowników poniższymi poleceniami. Następnie sprawdzamy zawartość pliku /etc/group aby zobaczyć nowododanych 3 użytkowników i nowododaną grupę.
Polecenie usermod -a -G
modyfikuje dodanych już wcześniej użytkowników. Jak widać w pliku /etc/group elementy te zostały zapisane na końcu pliku. Ten drugi zrzut ekranu (prezentujący zawartość pliku /etc/group) należy włączyć do sprawozdania
$ sudo usermod -a -G students stud1
$ sudo usermod -a -G students stud2
$ cat /etc/group


Teraz zmienimy uprawnienia do folderów, czyli damy dostęp do określonych zasobów określonym użytkownikom. Będzie to wyglądać następująco:
- pub - użytkownik i grupa - pełna prawa; inni - odczyt i wykonanie. Zmienimy również właściciela tego zasobu na nobody (dla użytkowników) i nogroup (dla grup).
Te obiekty są wbudowane w Linuksa i zapewniają obsługę sytuacji w której nie chcemy używać żadnych użytkowników i grup.
- priv - użytkownik i grupa - pełna prawa; inni - odczyt.
- ti - użytkownik i grupa - pełna prawa; inni - brak. Właściciel - nobody (dla użytkowników), grupa students.
- nazwisko - użytkownik i grupa - pełna prawa; inni - brak. Właściciel - imnazwisko (dla użytkowników), grupa imnazwisko.
W końcowym etapie upewniamy się, że jesteśmy w folderze /srv a następnie ustawiamy prawa dostępu za pomocą poniższych komend i wyświetlamy szczegóły folderu z nadanymi chmodami.
Parametr -R przy komendach oznacza rekurencyjne nadanie praw dla wszystkich podfolderów i plików. Ten zrzut ekranu należy włączyć do sprawozdania
$ sudo chmod -R 775 smb/pub
$ sudo chown -R nobody:nogroup smb/pub
$ sudo chmod -R 774 smb/priv
$ sudo chmod -R 770 smb/ti
$ sudo chown -R nobody:students smb/ti
$ sudo chmod -R 770 smb/nazwisko
$ sudo chown -R imnazwisko:imnazwisko smb/nazwisko
$ ls -l smb

- Instalacja i konfiguracja serwera SAMBA
Poleceniem sudo apt install samba instalujemy serwer. Z kolei poleceniem sudo systemctl status smbd sprawdzamy status Samby. Jeżeli jest aktywna przechodzimy dalej.
Ten zrzut ekranu należy włączyć do sprawozdania

Teraz dodajemy wcześniej utworzonych użytkowników do bazy danych serwera. Wykonujemy to poniższymi poleceniami. Za każdym razem zostaniemy poproszeni o hasło, którym będziemy logować się do udziałów:
jako, że nie mamy do czynienia ze środowiskiem produkcyjnym, proponuję wszędzie ustawić to samo hasło: stud. Ten zrzut ekranu należy włączyć do sprawozdania
$ sudo smbpasswd -a stud1
$ sudo smbpasswd -a stud2
$ sudo smbpasswd -a imnazwisko

Sambę konfigurujemy poprzez edycję jej pliku konfiguracyjnego tj. /etc/samba/smb.conf. Wydajemy komendę sudo nano /etc/samba/smb.conf i przechodzimy do sekcji global pliku.
W sekcji tej interesować nas będą linijki workgroup i server string. Pierwszy wpis oznacza nazwę grupy roboczej w jakiej znajduje się serwer Samby. Oznaczenie WORKGROUP
jest dobre i zgodne z nazwą grupy roboczej w Windows, więc je zostawiamy.
Z kolei server string oznacza nazwę (ciąg znaków) serwera Samby. Może to być dowolny ciąg znaków, który chcemy pokazać użytkownikom. Ciąg %v zostanie zastąpiony numerem wersji Samby, z kolei ciąg
%h zostanie zastąpiony nazwą hosta. Proponuję dopisać obok nazwy Samba ciąg %v. Poniżej przedstawiono dwa zrzuty: pliku oryginalnego i zmienionego.


Teraz przechodzimy na koniec pliku, gdzie musimy dopisać udziały. Ich nazwa musi być ujęta w nawiasach kwadratowych, a więc u nas [pub], [priv], [ti],
[nazwisko]. Po tym, we wcięciach, opisujemy udział według schematu:
- path = sciezka. Oznacza ścieżkę bezwzględną do zasobu.
- browseable = yes/no. Odpowiada na pytanie, czy zasób ma być widoczny w sieci.
- writeable = yes/no. Odpowiada na pytanie, czy zezwalamy na zapis.
- guest ok = yes/no. Odpowiada na pytanie, czy zasób ma być dostępny anonimowo dla wszystkich. Jego domyślna wartość (bez wpisu) to no.
- read only = yes/no. Odpowiada na pytanie, czy zasób jest dostępny tylko do odczytu. W naszym przypadku chcemy też zapisywać dane, więc ustawiamy na no.
- valid users = uzytkownik. Wpisy oznaczające użytkowników z dostępem do zasobu, a więc kto może się logować, w przypadku wielu muszą być oddzieleni przecinkiem. Grupy należy poprzedzać znakiem at (@)
- invalid users = uzytkownik. Wpisy oznaczające użytkowników z BRAKIEM dostępu do zasobu, a więc kto NIE może się logować, w przypadku wielu muszą być oddzieleni przecinkiem. Grupy należy poprzedzać znakiem at
(@). Można więc wyobrazić sobie sytuację, że opcja valid users jest ustawiona na grupę, a tutaj, w opcji invalid users, wykluczamy konkretnego użytkownika tej grupy.
Ten zrzut ekranu należy włączyć do sprawozdania

Po zapisaniu pliku restartujemy serwer Samby i testujemy go poniższymi poleceniami. Ten zrzut ekranu należy włączyć do sprawozdania
$ sudo systemctl restart smbd
$ sudo systemctl status smbd

- Korzystanie z zasobów serwera Samba ze strony klienta
Logujemy się na Lubuntu, a więc na systemie klienta. Klikamy ikonę Sieć a następnie w polu paska adresowego wpisujemy protokół w połączeniu z adresem IP serwera SAMBA, a więc 172.16.X.5 i potwierdzamy Enterem (w Windowsie wpisalibyśmy
dla przykładu - w pasku adresowym eksploratora - \\172.16.X.5).

W wyniku tej czynności powinniśmy się znaleźć w katalogu /srv/smb serwera z udostępnionymi zasobami. Jeżeli tak się nie dzieje, to znaczy, że gdzieś popełniony został błąd a więc należy sprawdzić wszystko od początku a w szczególności
plik konfiguracyjny Samby (smb.conf). Ten zrzut ekranu należy włączyć do sprawozdania

Klikamy dwukrotnie na folderze pub po czym łączymy się anonimowo do zasobu.

W katalogu tworzymy podkatalog o nazwie Nowy i plik o nazwie plik1. Ten zrzut ekranu należy włączyć do sprawozdania

Teraz - z poziomu serwera - listujemy katalog pub, otrzymując w efekcie nowe, utworzone przed chwilą obiekty a więc katalog Nowy i plik o nazwie plik1.

Następnie spróbujmy wejść do zasobu priv. Nie będzie to możliwe z tego powodu że po pierwsze nie pozwoliliśmy na logowanie się użytkownikom anonimowych (opcja guest ok w pliku smb.conf) a po drugie nie ustawiliśmy
uprawnionych użytkowników (opcja valid users w pliku smb.conf). Logowanie zakończy się w takim przypadku fiaskiem.

Przejdźmy teraz do zasobu o nazwie ti. Połączenie anonimowe nie zadziała, ponieważ nie zostało ustawione (opcja guest ok w pliku smb.conf). Musimy zalogować się jakimś użytkownikiem grupy students, a
mamy takich dwóch (stud1 i stud2).
Wybieramy dowolnego i logujemy się nim. Połączenie powinno zostać nawiązane (opcja valid users w pliku smb.conf ustawiona).

Utwórzmy w tym katalogu plik o nazwie plik2. Ten zrzut ekranu należy włączyć do sprawozdania

... a następnie wylistujmy ten katalog z poziomu serwera:

Na końcu przejdźmy do katalogu nazwisko. Połączenie anonimowe nie zadziała, ponieważ nie zostało ustawione (opcja guest ok w pliku smb.conf), podobnie nie połączymy się użytkownikami grupy students.
Musimy zalogować się uprawnionym użytkownikiem a więc imnazwisko.
Logujemy się nim. Połączenie powinno zostać nawiązane (opcja valid users w pliku smb.conf ustawiona jest właśnie na imnazwisko).

Utwórzmy w tym katalogu plik o nazwie plik3. Ten zrzut ekranu należy włączyć do sprawozdania

... a następnie wylistujmy ten katalog z poziomu serwera:
