Serwer plików Samba

Samba to protokół sieciowy, który pozwala systemom Linux i Unix na współdzielenie zasobów dyskowych i drukarek z systemami Windows i innymi systemami Linux (Unix). Server Message Block (SMB) znany również jako Common Internet File System (CIFS) to protokół sieciowy stworzony przez Microsoft, IBM i Intel w latach 80-tych. Protokół używany jest przez systemy Windows jako podstawowy, natywny protokół wymiany plików i udostępniania drukarek.

Korzyści z używania Samby:

  • zasoby samba dostępne są zarówno dla systemów Windows jak i systemów Linux oraz Unix;
  • zasoby windows mogę być dostępne i montowane pod systemem Linux;
  • domeny Linuksowe i Windowsowe mogą być stosowane zamiennie do identyfikacji i autoryzacji;

Serwer Samba może:

  • działać jako serwer wydruku dla systemów Windows;
  • być skonfigurowany jako podstawowy kontroler domeny (Primary Domain Controller) i jako zapasowy kontroler domeny (Backup Domain Controller);
  • być ustawiony jako członek Active Directory w sieci Windowsowej;
  • dostarczać nazewnictwo WINS (Windows Internet Name Service).

 

Komendy związane z zarządzaniem serwerem Samba przedstawia tabela poniżej.

Komenda Opis
smbclient Klient zasobów dyskowych samby.
smbpasswd Dodaje użytkowników (parametr -a) i zmienia hasło do Samby.
testparm Sprawdza składnię pliku smb.conf.
pbedit Zarządza bazą lokalnych użytkowników w pliku /var/lib/samba/private/smbpasswd.
mount Podłącza zasoby Samby wskazane z linii poleceń lub w pliku /etc/fstab.
umount  Odłącza zasoby Samby.
mount.cifs  Podłącza zasoby Samby.

 

Pliki związane z pakietem Samba przedstawia tabela poniżej.

Plik Opis
/etc/samba/smb.conf Plik konfiguracyjny Samby.
/etc/samba/smbusers Utrzymuje mapowanie pomiędzy użytkownikami Samby a użytkownikami systemu.
/etc/sysconfig/samba Zawiera dyrektywy używane podczas startu Samby.
/var/lib/samba/private/smbpasswd Zawiera hasła użytkowników Samby. Hasła mogą być inne od haseł  użytkowników systemu.
/var/log/samba Logi Samby.

 

Dyrektywy związane z plikiem konfiguracyjnym smb.conf przedstawia tabela jak niżej.

Dyrektywa Ustawienia globalne
opcje sieciowe
workgroup Nazwa grupy roboczej, do której należy serwer.
server string Opis identyfikujący serwer Samba.
netbios name Nazwa serwera Samba.
interfaces Określa nazwę interfejsu sieciowego, na którym ma nasłuchiwać serwer.
host allow/deny Zezwala/zabrania na dostęp do usług z określonych podsieci lub domen.
opcje logowania
log file Określa osobny plik z logiem w katalogu /var/log/samba dla każdego klienta, który korzysta z Samby.
max log size  Maksymalny rozmiar pliku log w KB, po którym plik będzie rotowany. Domyślny rozmiar to 50KB. 0 wyłącza rotowanie logów.
opcje serwera
security Możliwe opcje:

  • user – domyślna identyfikacja w oparciu o nazwę użytkownika i hasło
  • ads – przeprowadza identyfikację w oparciu o serwer Active Directory
  • domain – identyfikacja w oparciu o kontroler domeny
  • server – identyfikacja w oparciu o serwer
passdb backend Określa backend służący do składowania informacji o użytkownikach i grupach:

  • tdbsam (Trivial Database Security Accounts Manager) – domyślne, prosta lokalna baza w katalogu /var/lib/samba.
  • smbpasswd – używa pliku /var/lib/samba/private/smbpasswd
  • ldapsam (LDAP Security Accounts Manager) – zdalna baza LDAP
  definicje zasobów
comment Krótki opis zasobu.
browseable Zezwala/zabrania klientom na przeglądanie listy zasobów.
writable Określa czy dany zasób może być zapisywalny. Dyrektywa przeciwna “read only”.
valid users Lista użytkowników lub grup (nazwa grupy poprzedzona jest znakiem @), którzy mają prawo dostępu do zasobu. Jeżeli dyrektywy nie będzie lub będzie pusta, wszyscy użytkownicy będą mieli dostęp do danego zasobu.
path Ścieżka do udostępnianego zasobu.
guest ok Zezwala na dostęp do zasobu bez podawania hasła.
public Dyrektywa tożsama z “guest ok”. Zezwala na dostęp (odczyt) do zasobu wszystkim użytkownikom.
write list Lista użytkowników i grup, którzy mają prawo zapisywania do zasobu. Dyrektywa działa nawet gdy włączona jest dyrektywa “read only”.
guest only Tylko goście mają dostęp do zasobu.
force group Określa grupę systemową, która ustawiana jest jako domyślna grupa na nowo tworzonych plikach i katalogach w zasobie.
create mask Określa jaki umask ma być ustawiony dla plików tworzonych w zasobie.

Więcej dyrektyw w man smb.conf.

 

Pakiety yum związane z serwerem Samba opisuje tabela jak niżej.

Pakiet Opis
samba Pakiet z serwerem Samba.
samba-client Zawiera narzędzia do przeprowadzania różnych operacji związanych z serwerem i klientem.
samba-common Dostarcza dokumentację man, komendy i pliki konfiguracyjne.
samba-libs Biblioteki używane przez serwer i klienta.
cifs-utils Narzędzia klienckie do montowania i zarządzania zasobami CIFS.

 

Wymagania SELinux związane z serwerem plików Samba.

Katalog, który ma być udostępniony przez Sambę musi mieć ustawiony kontekst samba_share_t. Jeżeli dany katalog ma być udostępniony również przez inne serwery usług (NFS lub FTP) to powinien mieć on dodatkowo ustawiony kontekst public_content_ro_t (tylko odczyt) lub public_content_rw_t (odczyt/zapis).

Polityka SELinux zawiera ponadto wiele zmiennych boolean związanych z Sambą:

Zmmienna boolean Przeznaczenie
ftpd_use_cifs Zezwala/zabrania podmontowanemu zasobowi Samby być używanym jako publiczny zasób FTP.
httpd_use_cifs Zezwala/zabrania podmontowanemu zasobowi Samby być używanym przez Apache.
samba_create_home_dirs Zezwala/zabrania Sambie na tworzenie katalogów domowych.
samba_enable_home_dirs Zezwala/zabrania Sambie na udostępnianie katalogów domowych.
samba_export_all_ro Zezwala/zabrania Sambie na udostępnianie zasobów tylko w trybie read only.
samba_export_all_rw Zezwala/zabrania Sambie na udostępnianie zasobów w trybie read i write.
smbd_anon_write Zezwala/zabrania Sambie na zapisywanie w katalogach z kontekstem public_content_rw.
use_samba_home_dirs  Zezwala/zabrania klientom Samby na montowanie katalogów domowych.

 

Montowanie zasobów w trybie multiuser.

Dobrym zwyczajem jest montowanie zasobów samby z minimalnymi uprawnieniami dla wszystkich użytkowników. Dostęp  do zapisu powinien być możliwy tylko dla wybranych użytkowników po wpisaniu dodatkowego hasła. Takie rozwiązanie umożliwia tryb multiuser.  Wprowadzenie hasła dla konkretnego użytkownika umożliwia komenda cifscreds:

lub

gdzie server1 to serwer plików Samba.

Opcje komendy cifscreds przedstawia tabela jak niżej.

Opcja Opis
add Dodanie danych logowania do zasobów Samby dla sesji aktualnie zalogowanego użytkownika.
update Aktualizacja danych logowania.
clear Usuwa dane logowania związane z sesją aktualnie zalogowanego użytkownika.
clearall Usuwa wszystkie dane logowania.

 

Ćwiczenie 1. Udostępnianie zasobów Samby.

1. Instalacja serwera i klienta Samby.

2. Utworzenie katalogu /smbrhcsa:

3. Aktywacja zmiennych SELinux boolean aby udostępnić zasoby w trybie odczyt oraz odczyt/zapis a także aby pozwolić Sambie i NFS na udostępnienie katalogu /common.

4. Dodanie kontekstu SELinux public_content_rw_t dla katalogu /common i kontekstu samba_share_t  dla katalogu /smbrhcsa:

5. Dodanie Samby do firewalla:

6. Utworzenie pliku smb.conf:

7. Sprawdzenie poprawności pliku konfiguracyjnego :

8. Utworzenie konta użytkownika user10 z hasłem user123:

9. Dodanie użytkownika (–a) user10 do bazy użytkowników Samby /var/lib/samba/private/smbpasswd:

10. Wyświetlenie (–L) informacji o użytkownikach samby:

11. Dodanie Samby do autostartu, uruchomienie i sprawdzenie statusu:

12. Wylistowanie zasobów (–L) Samby dostępnych na serwerze jako user10 (–U):

 

Ćwiczenie 2. Montowanie zasobów serwera plików na kliencie.

1. Instalacja klienta Samby:

2. Utworzenie użytkownika user10, zwracamy uwagę na to aby były te same UID/GID co na serwerze dla tego użytkownika:

3. Listujemy (–L) jakie zasoby są dostępne na serwerze server1 dla użytkownika user10:

4. Logowanie do zasobu /common share jako user10:

5. Utworzenie punktu montowania /smbrhcemnt:

6. Podmontowanie zasobu /common do katalogu /smbrhcemnt jako user10:

7. Sprawdzamy czy zasób został podmontowany:

8. Utworzenie pliku z danymi logowania /etc/samba/smbrhcecred:

9. Ustawienie praw dostępu do pliku na 0400:

10. Dodanie stosownego wpisu do /etc/fstab:

 

Ćwiczenie 3. Udostępnienie przez Sambę katalogu do pracy grupowej.

Konfiguracja po stronie serwera.

1. Instalacja Samby i klienta Samby:

2. Utworzenie użytkowników user11 and user12 :

3. Dodanie grupy smbgrp z GID 8888:

4. Dodanie użytkowników user11 i user12 do grupy smbgrp:

5. Utworzenie katalogu /smbsdata, zmiana grupy i nadanie odpowiednich uprawnień do katalogu:

6. Aktywacja zmiennych SELinux booleans tak aby zasoby dostępne były w trybach odczyt oraz odczyt/zapis:

7. Dodanie kontekstu SELinux samba_share_t dla katalogu /smbsdata:

8. Dodanie Samby do firewalla:

9. Zasób smbdata w pliku /etc/samba/smb.conf wygląda następująco:

10. Sprawdzenie poprawności pliku smb.conf:

11. Dodanie użytkowników user11 i user12 do bazy użytkowników Samby /var/lib/samba/private/smbpasswd:

12. Wyświetlenie informacji o użytkownikach Samby:

13. Autostart, uruchomienie i sprawdzenie statusu Samby:

 

Konfiguracja po stronie klienta.

14. Instalacja pakietów potrzebnych po stronie klienta:

15. Utworzenie użytkowników user11 and user12 :

16. Dodanie grupy smbgrp z GID 8888:

17. Dodanie użytkowników user11 i user12 do grupy smbgrp:

18. Wylistowanie (–L) zasobów dostępnych na serwerze server1:

19. Zalogowanie na zasób /smbsdata jako user11 przy użyciu smbclient:

20. Utworzenie pktu montowania /smbsdatamnt:

21. Zamontowanie zasobu /smbsdata w pkcie montowania /smbsdatamnt jako user11:

22. Weryfikacja:

23. Utworzenie pliku /etc/samba/smbsdatacred z danymi logowania i ustawienie odpowiednich praw dostępu do tego pliku:

24. Dodanie wpisu do /etc/fstab:

 

Ćwiczenie 4.  Montowanie zasobów Samby w trybie multiuser.

Punkty od 1 do 23 (za wyjątkiem 9 i 21) wykonujemy tak jak w ćwiczeniu 3. Punkty 9 i 24 wykonujemy jak niżej.

9. Zasób smbdata w pliku /etc/samba/smb.conf wygląda następująco:

24. Do pliku /etc/fstab dodajemy inny wpis:

Ze względu na to, że zasób [common] ma na serwerze server1 w pliku smb.conf ustawioną dyrektywę writable=no i użytkownika user11 nie ma na liście write list (jest tylko user12) to zasób zostanie podmontowany w trybie tylko do odczytu z takimi uprawnieniami jakie posiada użytkownik user11.

To się nie powinno udać:

Zapis będzie możliwy po podaniu komendą cifscreds danych logowania użytkownika user12:

Teraz zapis do /smbrhcemnt powinien się powieść:

 

Ćwiczenie 5. Bezpieczny dostęp do serwera plików przez Kerberos.

Na serwerze KDC (serwer Kerberos):
1. Logowanie jako root principal do bazy KDC i dodanie serwera server1 jako cifs principal:

2. Wygenerowanie pliku keytab:

Plik powinien należeć do użytkownika i grupy root i mieć prawa 0600.

3. Skopiowanie pliku keytab do serwera Samby – server1:

 

Na Serwerze Samby – server1:

4. Wykonujemy czynności jak niżej:

 

Na kliencie Samby:

5. Potwierdzamy dostęp do zasobu logując się do zasobu z opcją (–k) kerberos:

6. Tworzymy punkt montowania /smbkrb5mnt:

7. Podmontowanie zasobu /smbkrb5 w pkcie montowania /smbkrb5mnt jako user7:

8. Weryfikacja

9. Dodanie wpisu do pliku /etc/fstab:

 

 

Leave a Reply

Your email address will not be published. Required fields are marked *