1 Pakiet Samba 1.1 Klient protokołu SMB/CIFS 1. Wyświetlenie zasobów w otoczeniu sieciowym komendą findsmb(1): # findsmb IP ADDR NETBIOS NAME WORKGROUP/OS/VERSION ------------------------------------------------------------------- 192.168.0.45 GALIO [MYGROUP] [Windows 5.0] [Windows 2000] 192.168.0.1 SIRIUS +[MYGROUP] [Unix] [Samba 3.5.4] oraz komendą smbtree(1): # smbtree Enter root s password: MYDOMAIN \\galio \\galio\pub \\galio\ipc$ Samba Server IPC Service (Samba Server) 2. Testowanie nazw wymaga uruchomienia serwera nazw protokołu NetBIOS: # service nmb start 3. Odpytywanie nazw nmblookup(1): # nmblookup galio querying galio on 192.168.0.255 192.168.0.1 galio<00> 4. Wyświetlanie listy zasobów zdalnego systemu: # smbclient -L galio added interface ip=192.168.0.1 bcast=192.168.0.255 nmask=255.255.255.0 Password: ******** Domain=[MYDOMAIN] OS=[Unix] Server=[Samba 3.5.6] Sharename Type Comment --------- ---- ------- IPC$ IPC IPC Service (Samba 3.5.6) ADMIN$ Disk IPC Service (Samba 3.5.6) hp Printer HP LaserJet 5MP Postscript
1.2 Serwer protokołu SMB/CIFS 2 pub Disk Katalog testowy Server Comment --------- ------- DCS-CSL Samba 3.5.6 Workgroup Master --------- ------- MYDOMAIN 5. Operacje na zdalnym zasobie: # smbclient //galio/pub -U wojtek Enter wojtek s password: Domain=[MYDOMAIN] OS=[Unix] Server=[Samba 3.5.6] smb: \> help... smb: \> ls... (a) Pobierz wybrany plik ze zdalnego katalogu (b) Wstaw nowy plik z lokalnego systemu (c) Załóż nowy katalog (d) Przetestuj obsługę polskich liter w nazwach plików i katalogów 6. Przetestuj obsługę zdalnego katalogu w przeglądarce Konqueror wpisując odpowiedni adres URI, np.: smb://galio/pub 7. Podmontuj zdalny katalog do lokalnego systemu plików: # mount -t cifs -o username=wojtek //galio/pub /mnt 8. Zapoznaj się z programem smb4k(1). 1.2 Serwer protokołu SMB/CIFS 1.2.1 Uruchomienie 1. Przygotuj prosty plik konfiguracyjny serwera /etc/samba/smb.conf(5): [global] workgroup = MYGROUP passdb backend = smbpasswd server string = Serwer testowy [abc] path = /tmp/abc writable = yes browsable = yes 2. Uruchom serwer: # service smb start 3. Ustaw hasło dla protokołu SMB/CIFS dla użytkownika komendą smbpasswd(8):
1.2 Serwer protokołu SMB/CIFS 3 # smbpasswd -a wojtek lub komendą pdbedit(8): # pdbedit -a wojtek Hasła są zapisywane do pliku /etc/samba/smbpasswd lub do pliku /etc/samba/passdb. tdb, gdy opcja passdb backend ma wartość tdbsam. 4. Odwołaj się do zasobu programem smbclient testując możliwość zapisu w zdalnym katalogu. 1.2.2 Kompatybilność systemów Unix/Windows 1. Przetestuj obsługę rozróżnienia małych/wielkich liter tworząc po stronie systemu Unix pliki: a.txt A.txt z różną zawartością. Sprawdź dostępność tych plików poprzez protokół SMB/CIFS. 2. Przetestuj obsługę atrybutu ukryty tworząc po stronie systemu Unix plik zaczynający się od kropki. Dodaj do konfiguracji zasobu parametr hide files: [abc] path = /tmp/abc hide files = /*.tmp/q*/ Inne opcje tego typu: hide special files, hide unreadable, hide unwritable files. 3. Sprawdź mapowanie atrybutu archive. Opcje kontrolujące mapowanie: map archive, map readonly, map system. 4. Przetestuj możliwość składowania atrybutów systemu DOS jako rozszerzonego atrybutu w systemie Unix. Wymaga to dodania globalnej opcji konfiguracyjnej: store dos attributes = yes Po podłączeniu do serwera atrybuty można ustawiać komendą setmode, np.: smb: \> setmode test.txt +h 5. Opcje kontrolowania praw dostępu do nowotworzonych plików/katalogów: create mask = 0700 directory mask = 0770 force create mode = 0660 force directory mode = 0660 force user = wojtek force group = staff 1.2.3 Kontrola dostępu 1. Przetestuj mechanizmy ograniczania dostępu do zasobu: [abc] path = /tmp/abc hosts allow = 192.168.0.2 \ 10.0.0.0/255.255.255.0 \ @staff
1.2 Serwer protokołu SMB/CIFS 4 2. Ukrywanie plików: hosts deny = ALL valid users = wojtek, basia invalid users = root read list = wojtek write list = basia veto files = /*.bak/.*/ 1.2.4 Monitorowanie serwera 1. Przetestuj działanie programu smbstatus(1) z przełącznikami -b, -d, -p. 2. Przetestuj działanie komendy net(8): # net status sessions PID Username Group Machine ------------------------------------------------------------------------- 8874 inf12345 students lab-43-3 (::ffff:150.254.131.104) 8930 inf54321 students lab-43-2 (::ffff:150.254.131.103) 3. Sprawdź poprawność konfiguracji programem testparm(1). 1.2.5 Program administracyjny Swat Program swat jest serwerem usługi WWW umożliwiającym graficzne zarządzanie serwerem Samba. Uruchomienie usługi wymaga dodania odpowiednich zapisów do konfiguracji serwerów inetd lub xinetd. W przypadku serwera inetd należy dodać następującą linię do pliku /etc/inetd.conf: swat stream tcp nowait.400 root /usr/sbin/swat swat W przypadku serwera xinetd należy dodać plik konfiguracyjny /etc/xinetd.d/swat z następującą zawartością: service swat { } socket_type = stream protocol = tcp wait = no user = root server = /usr/sbin/swat only_from = 127.0.0.1 log_on_failure += USERID disable = no Po rekonfiguracji należy poinformować serwery o zmianie wykonując jedną z komend: # service inetd reload # service xinetd reload Dostęp do aplikacji swat jest możliwy poprzez przeglądarkę pod adresem http://localhost: 901/.
1.3 Kontroler domeny 5 1.3 Kontroler domeny W poniższym opisie PDC oznacza kontroler domeny a WS stację roboczą. 1. PDC: Przygotuj konfigurację kontrolera domeny: [global] workgroup = MYDOMAIN security = user passdb backend = smbpasswd os level = 33 local master = yes preferred master = yes domain logons = yes domain master = yes logon script = login.bat logon path = \\%L\%U\WinProfile logon drive = H: [netlogon] path = /var/lib/samba/netlogon comment = Skrypty logowania writable = no [homes] comment = Katalogi domowe browseable = no writable = yes Nowa konfiguracja wymaga restartu usług nmb i smb. 2. PDC: Założenie konta maszynowego dla każdej stacji roboczej, która będzie dołączana do domeny. Konto maszynowe ma taką nazwę jak nazwa komputera z dodanym znakiem $ na końcu: # useradd galio$ 3. PDC: Ustawienie hasła dla administratora sieci SMB/CIFS na kontrolerze domeny czyli użytkownika, który ma prawo modyfikować plik z hasłami: # pdbedit -a root 4. WS: Dodanie stacji roboczych Windows do domeny wymaga wpisania nazwy domeny w ustawieniach nazwy komputera i uwierzytelnienia kontem administratora domeny. Dodanie komputera powoduje zainicjowanie hasła na koncie maszynowym. Uwaga: Dodanie systemu Windows 7 do domeny wymaga wcześniejszego zaaplikowania drobnej zmiany konfiguracji w rejestrze. Odpowiednia modyfikacja jest wskazana w pliku Win7_Samba3DomainMember.reg dołączonym do pakietu Samba (katalog /usr/share/doc/packages/samba/registry). 5. WS: Dodanie uniksowej stacji roboczej do domeny wymaga modyfikacji pliku konfiguracyjnego smb.conf: [global] workgroup = MYDOMAIN security = domain
1.4 Pakiet Winbind 6 Następnie należy wykonać komendę: # net rpc join -U root gdzie root jest administratorem sieci SMB/CIFS. 6. PDC: Założenie kont dla użytkowników. Każdy użytkownik musi mieć zdefiniowane zarówno konto uniksowe, jak i hasło dla protokołu SMB: # useradd -m wojtek # pdbedit -a wojtek Przełącznik -m powoduje utworzenie katalogu domowego użytkownika. 7. WS: Założenie kont uniksowych dla użytkowników na stacji roboczej: # useradd wojtek 8. PDC: Zdefiniowanie mapowania grup użytkowników na kontrolerze domeny: # net groupmap add unixgroup=users ntgroup="domain Users" rid=513 Powyższa komenda spowoduje utworzenie grupy Domain Users, której członkami będą użytkownicy należący do uniksowej grupy users. Parametr rid=513 powoduje odwołanie do predefiniowanej grupy. Inne predefiniowane wartości RID (relative identifier) są podane w tabeli 1.1. Aktualne odwzorowania grup można wyświetlić komendą list: # net groupmap list Domain Users (S-1-5-21-3998994985-691964950-3499818267-513) -> users... 9. PDC: Przygotowanie skryptu startowego login.bat: @echo off net use X: \\galio\pub start iexplore.exe Skrypt do logowania powinien być poprawnym plikiem tekstowym dla systemów Windows (zakończenia linii). Plik taki można przygotować edytorem vim, po wykonaniu komendy :set fileformat=dos. 1.4 Pakiet Winbind Pakiet Samba umożliwia bezpośrednie pobieranie informacji o użytkownikach z serwera PDC bez konieczności tworzenia użytkowników w systemie Unix. Funkcjonalnie jest to rozwiązanie analogiczne do systemów LDAP czy NIS. Uwaga: Podczas konfiguracji oprogramowania winbind trzeba wyłączyć usługę nscd (buforowanie informacji katalogowych). 1.4.1 Konfiguracja Konfiguracja stacji roboczej, która ma być dołączona do kontrolera domeny wymaga wykonania następujących czynności: 1. Uzupełnij konfigurację w pliku smb.conf o ustawienia dla oprogramowania winbind:
1.4 Pakiet Winbind 7 Tab. 1.1: Wybrane predefiniowane wartości RID Nazwa RID Typ Istotność Domain Administrator 500 user Domain Guest 501 user Domain Admins 512 group krytyczna Domain Users 513 group krytyczna Domain Guests 514 group krytyczna Domain Computers 515 group Domain Controllers 516 group Builtin Admins 544 alias Builtin Users 545 alias Builtin Guests 546 alias [global].. idmap uid = 10000-20000 idmap gid = 10000-20000 winbind enum users = yes winbind enum groups = yes template homedir = /home/%u template shell = /bin/bash gdzie %U oznacza nazwę użytkownika. 2. Usuń lokalne konto uniksowe wojtek: # userdel -r wojtek 3. Uruchom usługę Winbind: # service winbind start Poprawność pracy serwera winbind można sprawdzić programem wbinfo(1) pobierającym informacje z tego serwera. Zakładając dołączenie do domeny MYDOMAIN: # wbinfo -u MYDOMAIN\root MYDOMAIN\wojtek # wbinfo -g MYDOMAIN\Domain Users 4. Zmodyfikuj wskazania na źródła informacji o użytkownikach w systemie w pliku /etc/ nsswitch.conf(5): passwd: group: files winbind files winbind Poprawność konfiguracji przełącznika usług katalogowych (plik /etc/nsswitch.conf) można sprawdzić wykonując komendę getent: # getent passwd... MYDOMAIN\root MYDOMAIN\wojtek która powinna zwrócić listę wszystkich użytkowników: systemowych i pobranych z PDC. 5. Zmodyfikuj konfigurację modułów PAM:
1.4 Pakiet Winbind 8 auth sufficient pam_unix2.so auth required pam_winbind.so use_first_pass Podczas logowania należy podać całą nazwę użytkownika, łącznie z domeną, np. MYDO- MAIN\wojtek. Odwoływanie się do użytkowników domenowych może być uproszczone poprzez przyjęcie domyślnej nazwy domeny przez oprogramowanie winbind. Wymaga to ustawienia dodatkowej opcji w sekcji [global]: winbind use default domain = yes 1.4.2 Katalogi domowe użytkowników uniksowych 1.4.2.1 Moduł pam_mkhomedir Najprostszym rozwiązaniem jest tworzenie nowych katalogów domowych w locie z wykorzystaniem modułu pam_mkhomedir. Konfiguracja modułu wymaga dodania do odpowiedniego pliku z katalogu /etc/pam.d zapisu: session required pam_mkhomedir.so skel=/etc/skel umask=0022 Nowsze wydania pakietu modułu pam_winbind posiadają wbudowaną funkcjonalność tworzenia katalogów domowych. W celu jej aktywacji należy zmodyfikować plik /etc/security/ pam_winbind.conf ustawiając opcję: mkhomedir = yes Dodatkowo należy aktywować moduł PAM w trybie session: session optional pam_winbind.so Konfiguracja w pliku pam_winbind.conf pozwala m.in. na wymuszenie przynależności do określonej grupy: require_membership_of = MYDOMAIN\Staff 1.4.2.2 Moduł pam_mount Katalogi domowe użytkowników mogą być automatycznie dołączane z kontrolera domeny za pośrednictwem modułu PAM o nazwie pam_mount. Wymaga go konfiguracji odpowiedniego modułu PAM: auth optional pam_mount.so auth sufficient pam_unix2.so use_first_pass auth required pam_winbind.so use_first_pass session required pam_unix2.so session optional pam_mount.so Moduł pam_mount wymaga również wskazania katalogów, które powinny zostać dołączone. Wskazanie to jest zapisane w pliku /etc/security/pam_mount.conf.xml: <volume fstype="cifs" server="server_name" path="%(user)" mountpoint="/home/%(user)" /> W przypadku problemów można włączyć tryb diagnostyczny modułu dodając do pliku konfiguracyjnego zapis:
1.6 Moduły VFS 9 <debug enable="1" /> Uwaga: konfiguracja modułu pam_mount wymaga stosowania skróconych nazw użytkowników z pominięciem nazwy domeny, co wymaga dodania na stacji robczej poniższego wpisu do pliku smb.conf: winbind use default domain = yes 1.5 Synchronizacja haseł Moduł PAM pam_pass umożliwia synchronizację haseł uniksowych i SMB podczas zmiany hasła uniksowego (komendą passwd). Wymaga to aktywowania modułu w pliku PAM dla usługi passwd: password required pam_unix2.so password optional pam_smbpass.so use_authtok Synchronizację w drugą stronę zapewniają odpowiednie wpisy w pliku konfiguracyjnym smb. conf: unix password sync = yes pam password change = yes Migracja ustawień haseł może być zautomatyzowana: auth optional pam_smbpass.so try_first_pass migrate 1.6 Moduły VFS 1.6.1 Moduł full_audit Przykład konfiguracji: [example] path = /tmp writable = yes vfs objects = full_audit full_audit:prefix = %u %I full_audit:success = open opendir full_audit:failure = open opendir full_audit:facility = LOCAL7 full_audit:priority = ALERT 1.6.2 Moduł recycle Przykład konfiguracji: [example] path = /tmp writable = yes vfs objects = recycle Po usunięciu pliku tworzony jest podkatalog.recycle.