Czym jest Samba?
Samba jest zestawem narzędzi, które umożliwiają współdzielenie takich zasobów jak pliki i drukarki, znajdujące się w obrębie danej sieci LAN. Definicja ta być może jest zbyt uproszczona, jednak Samba została stworzona właśnie po to, by uprzyjemnić życie zarówno użytkownikom komputerów, jak i ich administratorom. Samba wykorzystuje protokół SMB - Server Message Block, który jest wspólnym produktem firm Microsoft oraz IBM. Protokół ten został stworzony do przesyłania danych pomiędzy klientami pracującymi na systemach operacyjnych Windows, a uniksowymi serwerami znajdującymi się w obrębie danej sieci lokalnej.
Samba stała się niezwykle popularna z poniższych powodów:
- Używa ona tego samego protokołu, który wykorzystują systemy operacyjne firm Microsoft i IBM, od wersji 3.0 DOSu począwszy. Dzięki temu faktowi protokół jest prawidłowo rozpoznawany przez wszystkie komputery z zainstalowanym systemem Windows, nie zachodzi potrzeba instalowania dodatkowych sterowników lub oprogramowania.
- Samba działa na wielu platformach, na większości dystrybucji Linuxa, innego rodzaju systemach Unixowych, AmigaDOS, OS/2 oraz NetWare. Dzięki takiej elastyczności pojedynczy program znajdujący się na serwerze może uzyskać dostęp do drukarek i plików we wszystkich komputerach podłączonych do sieci, niezależnie od zainstalowanego systemu operacyjnego.
- Jest całkowicie bezpłatna. Co prawda istnieją rozwiązania komercyjne, które swoją funkcjonalnością odpowiadają Sambie, jednak niektóre z nich są bardzo drogie. Samba jest zatem znakomitą alternatywą dla pakietów, które byłyby w stanie poważnie nadszarpnąć budżet niewielkiego działu informatycznego danej firmy. Samba jest dystrybuowana w ramach GNU - General Public Licence. Powszechna Licencja Publiczna informuje, że mamy do czynienia z oprogramowaniem open source, czyli możemy ściągnąć na nasz komputer zarówno aplikację, jak i kod źródłowy, który następnie można swobodnie modyfikować, dzięki czemu posiadając odpowiednią wiedzę programistyczną możemy wnieść swoje poprawki do oryginalnego rozwiązania.
- Samba stanowi kompletne rozwiązanie dla sieci lokalnych o różnych wielkościach, począwszy od sieci domowej, na którą składają się dwa komputery, na wielkim monstrum korporacyjnym z setkami stacji roboczych skończywszy.
- Jest ona niezwykle łatwa w instalacji oraz administrowaniu, zapewniając przeźroczyste środowisko sieciowe, dzięki któremu użytkownicy posiadają dostęp do wszystkich niezbędnych do pracy zasobów.
Po umiejętnym skonfigurowaniu Samby, możemy ją wykorzystać do:
- Dostarczania plików Unixowych do klientów, którzy pracują na systemach operacyjnych Windows, OS/2 lub innych systemach obsługujących SMB.
- Dostępu komputerów Unixowych do plików znajdujących się na komputerach z różnymi systemami operacyjnymi.
- Udostępnienia drukarek sieciowych wszystkim klientom pracującym na systemie operacyjnym Windows.
- Świadczenia usług nazewniczych: WINS oraz rozgłoszeniowych.
- Przeglądania określonych zasobów sieci przez użytkowników korzystających z systemów Windows.
- Tworzenia grup roboczych oraz domen Windows.
- Wymuszania uwierzytelniania loginów użytkowników oraz ich haseł.
Instalacja Samby
Sambę możemy zainstalować przez wpisanie w konsoli Linuxa polecenia rmp -i samba_jejwersja.rpm. Efektem tego działania będzie to, że każdy plik wchodzący w skład pakietu, na przykład plik konfiguracyjny smb.conf, który w systemach opartych na Red Hacie znajduje się w katalogu /etc, zostanie rozpakowany do właściwych katalogów. Jeśli chcielibyśmy zmienić domyślne ustawienia Samby (przykładowo maksymalną liczbę plików możliwych do otwarcia, zmianę lokalizacji programów oraz zbiorów konfiguracyjnych), powinniśmy przy pomocy menedżera pakietów RPM zainstalować odpowiednie źródła Samby, następnie zmodyfikować interesujące nas zbiory a potem dokonać kolejnej kompilacji źródła i zainstalować otrzymane pliki wynikowe. Maksymalną liczbę otwartych sesji Samby określa zmienna MAX_OPEN_FILES, która znajduje się w pliku local.h. Jej wartość domyślna to 100.
Praca grupowa na zasobach współdzielonych
W zasadzie w każdym systemie mamy do czynienia z zasobami, do których dostęp będzie miała jedynie wybrana grupa użytkowników. Jeżeli chcemy by pewna liczba użytkowników miała dostęp do wspólnych zasobów, powinniśmy w Linuxie stworzyć odpowiednią grupę, do której będą oni mogli należeć. Aby tego dokonać wystarczy, że skorzystamy z polecenia groupadd. Jeżeli chcemy dodać konto nowego użytkownika do danej grupy, powinniśmy wykorzystać komendę usermod albo dopisać odpowiednią nazwę konta do pliku /etc/group.
Jeśli dany użytkownik chce skorzystać z większej ilości zasobów, co ma miejsce nawet w wypadku małych sieci, to dostęp do nich może być określany na podstawie przynależności użytkownika do poszczególnych grup. Weryfikacja nazwy użytkownika oraz jego hasła polega na sprawdzeniu, jakim sposobem zalogował się on do systemu operacyjnego Windows, jedynie przy żądaniu wykorzystania pierwszego z zasobów. Aby tak było w istocie, powinniśmy dodać do sekcji [global], znajdującej się w pliku smb.conf, linię security = user. Jeżeli wpiszemy w tym miejscu linię security = share, to próba połączenia do każdego z zasobów będzie wymagała dodatkowego logowania. Każda z sekcji opisywanego pliku jest oddzielona dwukropkami. Pierwsza z nich oznacza nazwę grupy, natomiast kolejna zaszyfrowane hasła dla poszczególnych grup, jeśli to pole jest puste, dodatkowe hasła nie są wymagane. W momencie, kiedy dostęp do odpowiednich plików z hasłami został już zablokowany dla zwykłych użytkowników, czyli włączono shadow haseł, to istnieje specjalny plik /etc/gshadow z hasłami dla poszczególnych grup. Trzecia z sekcji oznacza numer danej grupy GID, natomiast sekcja czwarta zawiera listę kont oddzieloną przecinkami.
W celu udostępnienia w ramach sieci Microsoft Networks Linuxowego katalogu /home/samba/admin, powinniśmy w pliku /etc/smb.conf stworzyć specjalną sekcję. Zasób będzie dostępny jedynie dla osób należących do grupy admin a także dla użytkownika testowego. Każdy z plików oraz katalogów tworzonych przez użytkowników w ramach sieci Microsoft Networks i w obrębie tego zasobu, będzie zapisywany w Linuxie w katalogu o nazwie /home/samba/admin. Wszystkie nowo utworzone pliki i katalogi będą należeć do grupy admin oraz do użytkownika root. Jeśli zatem jeden z członków tej grupy utworzy nowy zbiór w tym zasobie, drugi będzie również posiadał uprawnienia do niego. Prawa dostępu do nowych plików mogą być przekazywane z wykorzystaniem parametrów force user oraz force group. Jeśli dany użytkownik nie posiada dostępu do plików znajdujących się w Linuxie, to nie będzie on również posiadał uprawnień do tych plików przy pośrednictwie Samby.
Logowanie do domeny NT
Jeżeli zdefiniujemy w Sambie wszystkie zasoby i uprawnienia będziemy mieli możliwość prostego korzystania z udostępnionych danych. Każdy z zasobów powinien być widoczny dla użytkownika, który pracuje w systemie Windows, jako nowy, oddzielny dysk. Naturalnie można także mapować określone zasoby na dyski lokalne, które znajdują się na każdym komputerze, jednak takie rozwiązanie jest mało profesjonalne. Aby podłączyć udostępniane foldery do odpowiednich dysków należy tak skonfigurować Sambę, aby została ona kontrolerem domeny NT. Wtedy użytkownik w czasie logowania do domeny, będzie za każdym razem uruchamiał skrypt znajdujący się na serwerze. Skrypt ten jest odpowiedzialny za takie operacje, jak mapowanie dysków, które wykonywane są na komputerze użytkownika. Samba nie pozwala na obsługę każdej funkcji kontrolera domeny, jednak możemy dzięki niej uruchamiać skrypty logowania a także przechowywać określone profile użytkownika, takie jak ustawienia grup programów w menu start oraz ustawienia pulpitu. Z powodu wykonywania skryptu logowania na komputerze, który pracuje w środowisku Windows, powinien on być utworzony jako plik wsadowy BAT, w którym będą po kolei wykonywane odpowiednie komendy dotyczące na przykład mapowania dysków. Należy zwrócić uwagę, że zbiór ten powinien zostać utworzony w systemie DOS lub Windows. Jest to wynikiem różnej interpretacji znaków końca linii pojawiających się pomiędzy DOSe, a Unixem. W celu zalogowania danego użytkownika do domeny, powinien on na swoim komputerze posiadać zainstalowanego Klienta Sieci Microsoft Networks. Następnie w opcjach ustawień sieci, które znajdują się w Panelu Sterowania pod pozycją Sieć, trzeba wyświetlić właściwości pozycji Klient Sieci Microsoft Networks, a następnie zaznaczyć opcję nazwaną Zaloguj do domeny NT i podać odpowiednią nazwę domeny, która jest w zasadzie nazwą grupy roboczej określanej parametrem workgroup, znajdującej się w sekcji [global], która z kolei znajduje się w pliku smb.conf.
Problemy związane z dużą ilością użytkowników
Jeśli na naszym serwerze zostanie stworzonych wiele kont oraz będzie udostępniana duża ilość zasobów, wtedy ręczne pisanie skryptu logowania każdemu użytkownikowi może stać się bardzo uciążliwe. Zakładając, że każda z grup posiada własne zasoby, powinna ona mieć mapowane odpowiednie dyski twarde. Operacja ta może być realizowana za pomocą skryptu mapowań określonych zasobów na dyski twarde. W czasie logowania specjalny skrypt powinien dokonywać sprawdzenia, do jakich grup należy dany użytkownik, a następnie łączyć ze sobą każdą część skryptów logowania. Skrypt tego typu będzie więc tworzony w locie, w czasie wysłania przez użytkownika żądania połączenia z określonym zasobem. Dzięki takim zabiegom znacznie prostsza staje się administracja, wystarczy założyć konto oraz dodać jego identyfikator do określonych grup. Zasoby przeznaczone dla danego użytkownika będą automatycznie mapowane w trakcie logowania. Odebranie lub nadanie danemu użytkownikowi określonych uprawnień będzie się sprowadzać do odpowiedniej modyfikacji pliku /etc/group. Opisywany skrypt logowania można stworzyć w czasie logowania, dzięki pomocy polecenia preexec dopisanego w sekcji [netlogon] pliku smb.conf.
Przechowywanie profili na serwerze
Użytkownicy, którzy korzystają z systemów operacyjnych Windows 9x, posiadają identyczne ustawienia programów w menu start, pulpitu a także innych aplikacji. Jeśli chcielibyśmy w tych systemach skorzystać z ustawień indywidualnych, powinniśmy otworzyć Panel Sterowania, a następnie przy pomocy narzędzia Hasła odpowiednio zmodyfikować sposób, w jaki zarządza się profilami. Po wybraniu opcji Użytkownicy mogą dostosować … i po ponownym zalogowaniu się danego użytkownika do systemu, utworzony zostanie pożądany profil użytkownika w katalogu c:WindowsProfilesNazwa_Użytkownika. Profil ten będzie przechowywany na serwerze zaopatrzonym w system Linux. Jeżeli zalogujemy się pomyślnie do danego serwera, to profil użytkownika zostanie od razu skopiowany na dysk lokalny, a w przypadku wylogowania, zostanie zapisany na serwerze. Dzięki takiemu rozwiązaniu użytkownik, który loguje się na dowolnym z komputerów, będzie w stanie skorzystać z wszystkich swoich ustawień, nawet takich jak konfiguracja skrzynki pocztowej. Istotną wadą opisywanego rozwiązania jest to, że wszystkie dane znajdujące się na serwerze będą kopiowane na komputer użytkownika. Jeżeli poczta zajmuje 100 MB, to proces logowania może trwać zdecydowanie za długo. W większości przypadków, dzięki przechowywaniu profili na serwerze, w znaczący sposób ułatwiamy pracę wszystkim użytkownikom.
Drukarki i Linux
Poza zarządzaniem plikami system Linux może również pełnić funkcję serwera wydruku. Drukarki możemy zainstalować w tym systemie poprzez dodanie odpowiedniego wpisu do pliku /etc/printcap. Poza tym musi zostać uruchomiony proces lpd - Line Printer Demon. Każda z drukarek posiada swoją własną sekcję w pliku printcap. Wszystkie możliwe do wykorzystania ustawienia możemy poznać po wykonaniu polecenia man printcap. Drukarka może zostać udostępniona w Sambie na dwa różne sposoby. Pierwszy sposób to stworzenie odpowiednich zasobów wraz z opisem poszczególnych parametrów drukarek, które są zdefiniowane w pliku smb.conf. Drugi sposób polega na udostępnieniu każdej drukarki, która jest opisana w pliku printcap. Drugie rozwiązanie jest wygodniejsze, ponieważ użytkownik może korzystać z drukarki będąc zalogowanym bezpośrednio do Linuxa dzięki usłudze telnet oraz za pośrednictwem Samby. Jeśli chcielibyśmy udostępnić daną drukarkę wybranej grupie użytkowników, powinniśmy stworzyć w pliku smb.conf zasób o takiej samej nazwie jak nazwa drukarki umieszczona w pliku printcap. Lista uprawnionych użytkowników oraz grup powinna być określona parametrem valid users. Jeżeli nie chcemy wydrukować nagłówek z nazwą właściciela danego pliku powinniśmy stosować parametr print command. Aby zainstalować daną drukarkę na komputerze użytkownika powinniśmy posiadać odpowiednie sterowniki. Drivery te mogą być umieszczone na serwerze, natomiast użytkownik, jeżeli chce zainstalować drukarkę, która jest udostępniona w systemie Linux, nie będzie potrzebował instalować sterowników, ani nawet znać miejsca ich lokalizacji, odpowiednie sterowniki zostaną pobrane z serwera w sposób automatyczny. Opis instalacji sterowników możemy znaleźć w dokumentacji Samby, w pliku printer_driver.txt.
Drukarka ze sprzętowym serwerem wydruku
Instalacja powinna być rozpoczęta od odpowiedniej konfiguracji serwera wydruku. Możemy tego dokonać przy pomocy dostarczonego oprogramowania albo bezpośrednio z poziomu konsoli danej drukarki. Aby to zrobić powinniśmy sięgnąć do dokumentacji naszego urządzenia. Ponieważ drukowanie poprzez Sambe następuje z wykorzystaniem protokołu TCP / IP, powinniśmy skonfigurować serwer wydruku tak, by został mu przypisany odpowiedni adres IP, który później powinniśmy wpisać w pliku /etc/hosts razem z nazwą drukarki, przykładowo 192.168.1.10 hp-deskjet3325. Powinniśmy również stworzyć katalog, do którego będą przenoszone dokumenty przeznaczone do druku, na przykład /var/spool/samba/hp-deskjet3325. Teraz wystarczy, że dokonamy właściwego wpisu do zbioru /etc/printcap.
Instalacja drukarek, które są podłączone bezpośrednio do komputera
Może zdarzyć się taka sytuacja, że dana drukarka będzie podłączona do jakiegoś komputera znajdującego się w sieci lokalnej i pracującego w systemie operacyjnym Windows. W tym wypadku instalacja sprzętowego serwera wydruku może stać się nieopłacalna, z racji rzadkiej eksploatacji drukarki. Jeżeli mamy do czynienia z taką sytuacją najwygodniejszym sposobem będzie utworzenie kolejki do drukarki na naszym serwerze Linuxowym. W momencie, gdy komputer, do którego podłączyliśmy drukarkę będzie wyłączony, wszystkie dokumenty, które przeznaczone są do druku będą przechowywane w odpowiednim miejscu na serwerze. Dokumenty te zostaną przetworzone w momencie włączenia komputera z drukarką i załadowaniu jego systemu operacyjnego, o ile oczywiście jest on podpięty do sieci. Na komputerze z podłączoną drukarką powinna ona zostać udostępniona w sieci Microsoft Network, natomiast użytkownikom, którzy będą mieli możliwość korzystania z niej powinni dopisać w swoim skrypcie logowania właściwe mapowanie na port drukarki LPT1. Można tego dokonać przy pomocy urządzenia net use lpt1:serwer_linux nazwa_drukarki. Aby zainstalować drukarkę należy użyć filtru smbprint. Skrypt ten nie musi być zainstalowany w każdym systemie, wystarczy więc go poszukać u dystrybutora. Zbiór ten powinien zostać skopiowany do katalogu /usr/bin naszego serwera Linuxowego. Każdy wydruk użytkowników kierowany będzie na wejście standardowe tego filtru i drukowany będzie za pośrednictwem programu smbclient. Mogą być tworzone dowolne filtry, na przykład takie, które przekształcą plik na wiadomość tekstową i wyślą go faksem lub pocztą elektroniczną. Katalog, który zawiera kolejkę wydruku danej drukarki powinien posiadać odpowiedni zbiór konfiguracyjny, w którym podane będą informacje, dotyczące udostępniającego drukarkę komputera a także nazwa odpowiedniego zasobu.
Kontrola działania Samby
W celu zapewniania określonym użytkownikom maksymalnego bezpieczeństwa powinniśmy pamiętać o regularnej konserwacji systemu i częstych jego kontrolach. Powinniśmy często sprawdzać w naszych logach, czy wszystko wygląda w porządku. Jeżeli więc w porę wykryjemy, że w naszym systemie dzieją się dziwne rzeczy, będziemy mogli uniknąć wielu istotnych problemów. Poza standardowymi logami, które tworzy Samba warto czasem wymusić możliwość generowania dodatkowych dzienników. Zwiększenie zakresu kontroli może spowodować, że generowane przez nas pliki będą bardzo duże. Powinniśmy to robić rozważnie, tak żeby nie zabrakło nam miejsca na dysku już w po godzinie pracy naszego serwera.
Praca z Sambą w systemach Windows
Do najczęściej pojawiających się problemów należy kwestia szyfrowania haseł w systemach Windows. Samba również może używać szyfrowania haseł, jednak mamy możliwość wyłączenia tego mechanizmu. Zazwyczaj hasła nie są jednak szyfrowane, dlatego użytkownicy, którzy łączą się z Sambą przy pomocy komputerów, na których zainstalowany jest system operacyjny Windows, nie zawsze mogą się zalogować (nawet podając poprawne dane, serwer odpowiada, że otrzymane hasło jest nieprawidłowe). Jeżeli w Sambie nie włączyliśmy obsługi szyfrowania haseł, to powinniśmy zmodyfikować zawartość rejestru Windows w ten sposób, by nasz system również ich nie szyfrował. W tym celu uruchamiamy program regedit i wprowadzamy odpowiednie wartości we właściwych kluczach.
Kopie zapasowe
Nie biorąc pod uwagę tego, pod jakim systemem operacyjnym pracuje nasz serwer plików, powinniśmy pamiętać o archiwizacji danych przechowywanych na nim. Kopia bezpieczeństwa może być wykonywana na urządzeniu archiwizującym, które jest podłączone do komputera, na którym stoi nasz serwer Linuxowy.
Klient DOS-owy
Możemy korzystać z Samby posiadając nowe systemy rodziny Windows. Możemy jednak znaleźć także klienty Samby pracujące również w systemie DOS.
Oprogramowanie przydatne do Samby
Prawidłowa administracja dobrze skonfigurowaną Sambą sprowadza się wyłącznie do utworzenia odpowiednich zasobów i kont użytkowników, oraz przyporządkowania ich do właściwych grup. Przydatnym narzędziem wykorzystywanym do tego celu może być pakiet SWAT. Dzięki niemu nie jest konieczna za każdym razem ręczna modyfikacja pliku smb.conf, wystarczy, że wybierzemy z menu odpowiednie parametry. Należy jednak pamiętać, że nic nie zastąpi edycji bezpośredniej pliku smb.conf, która umożliwia pełną kontrolę nad parametrami pracy Samby. Pożytecznym programem jest również Samba Edit. Dzięki niemu w prostszy sposób przebiega modyfikacja pliku smb.conf, a także nadawanie uprawnień poszczególnym użytkownikom. W Internecie można znaleźć znacznie więcej przydatnych programów do pracy w Sambie.