Nawigacja:
Rozwiązujemy problemy z konfiguracją oraz obsługą aplikacji i sprzętu IT w urzędach.
Prezentujemy darmowe programy, które bez przeszkód można wykorzystać w urzędzie.
Artur Pęczak
INSTALACJA | Samba otwiera Okna na świat. Tak, w dość swobodnym tłumaczeniu, brzmi hasło przewodnie oprogramowania, które od lat łączy diametralnie różne od siebie systemy Linux i Windows. W wielu urzędach i instytucjach publicznych Samba stanowi kluczowy składnik infrastruktury informatycznej.
Tematem przewodnim bieżącego numeru IT w Administracji jest integracja systemów Linux i Windows. Samba, wraz z systemem drukowania CUPS, stanowi tutaj istotny element, który łączy oba środowiska. Za pomocą tego oprogramowania zbudujemy w urzędzie heterogeniczną infrastrukturę składającą się z serwerów i stacji roboczych pracujących pod kontrolą systemów Windows, Windows Server, Linux, różnych odmian Uniksa, a nawet Mac OS X-a.
Na kolejnych stronach omówimy m.in., jak skonfigurować Sambę pod kątem udostępniania plików komputerom pracującym pod kontrolą Windows, oraz zaprezentujemy mechanizmy dostępu do zasobów Windows z poziomu Linuksa. Przedstawimy także, w jaki sposób udostępnić drukarki w sieciach mieszanych, a także zaawansowane mechanizmy Samby, takie jak np. wirtualny system plików VFS. Na koniec pokażemy, że zarówno Linux może bez przeszkód korzystać z usług katalogowych Windows, jak i Windows z usług katalogowych Linuksa.
Samba zapewnia bezpieczne, stabilne i wydajne usługi udostępniania plików i drukarek. Oprogramowanie to jest implementacją protokołów SMB/CIFS dla systemów uniksowych, dzięki czemu użytkownicy różnych odmian Uniksa (w tym Linuksa) mogą korzystać ze wspólnych zasobów z osobami pracującymi w Windows. Usługa działa jako samodzielny serwer plików i wydruku, może również płynnie integrować się z istniejącym środowiskiem Windows Server, pracując jako członek lub kontroler domeny.
Samba jest rozpowszechniana w postaci kodu źródłowego do samodzielnej kompilacji oraz pakietów binarnych. Gotowe do instalacji paczki z Sambą znajdziemy w większości dystrybucji Linuksa. Składa się ona z dwóch modułów - serwera usługi oraz klienta o nazwie smbclient. Serwer Samby jest wymagany do uruchomienia własnego serwera plików oraz udostępniania zasobów dyskowych innym komputerom w sieci. W dystrybucji Debian, na podstawie której pokażemy wszystkie elementy konfiguracji, oprogramowanie to jest dystrybuowane w trzech pakietach: samba-common (pliki wspólne Samby używane przez serwer i klienta), samba (serwer usługi) oraz smbclient (klient usługi). Zainstalujemy je wszystkie, wydając polecenie apt-get install samba-common samba smbclient.
Plik konfiguracyjny Samby nosi nazwę smb.conf i zazwyczaj jest przechowywany w katalogu /etc/samba. Ma on uporządkowaną strukturę, którą tworzą sekcje wraz z parametrami. Nazwa sekcji ujęta jest w nawiasy kwadratowe. Każda sekcja definiuje pojedynczy udział. W Sambie istnieją trzy sekcje specjalne - [global] zawierająca globalne ustawienia serwera, [homes] definiująca katalogi domowe użytkowników oraz [printers] związana z udostępnianiem drukarek. Na początku pliku konfiguracyjnego zwyczajowo znajduje się [global] - sekcja rozpoczyna definicję nowego udziału, który opisany jest za pomocą parametrów (ustawień). Jeżeli parametr zostanie pominięty, Samba stosuje ustawienie globalne lub domyślne. Pełną listę dostępnych parametrów znajdziemy w podręczniku wydając polecenie man smb.conf.
Za funkcjonowanie Samby odpowiedzialne są dwa lub trzy demony. Podstawowe to nmbd, odpowiedzialny za obsługę nazw NetBIOS (uruchamiany jako pierwszy), oraz smbd, obsługujący połączenia udostępniania plików i drukarek oraz zarządzający uwierzytelnianiem użytkowników. Opcjonalnym demonem jest winbindd, niezbędny do poprawnego działania Samby w roli członka lub kontrolera domeny Windows. W Debianie skrypt samba dostępny w /etc/init.d/ startuje demony nmbd oraz smbd. Demon winbindd jest instalowany i uruchamiany oddzielnie.
Samba obsługuje kilka typów baz danych, w których są przechowywane nazwy użytkowników i hasła. W ramach projektu aktywnie rozwijana jest obsługa trzech typów bazy: smbpasswd (przestarzały), tdbsam oraz ldapsam (katalog LDAP). Ten ostatni pozwala na przechowywanie jednocześnie kont użytkowników i grup w systemach POSIX/UNIX oraz Samby. W smbpasswd oraz tdbsam są gromadzone wyłącznie informacje o użytkownikach serwera plików. Użytkownik, aby uzyskać dostęp do zasobów, musi mieć założone konto w systemie.
Schemat smbpasswd był powszechnie używany w instalacjach
opartych na Sambie 2.x. Obecnie, ze względu na dostępność tdbsam,
nie zaleca się jego stosowania. W smbpasswd informacje o
użytkownikach oraz hasła (szyfrowanie zgodnie z LM/NTLM dla
Windows) są zapisywane
w /etc/samba/smbpasswd. Z kolei tdbsam wykorzystuje binarny format
plików bazy TDB (trivial database) i umożliwia przechowywanie
rozszerzonych informacji o użytkownikach i zabezpieczeniach,
identycznie jak w przypadku bazy SAM (Security Account Manager)
stosowanej w Windows. Więcej informacji na temat stosowanych w
Sambie baz użytkowników znajdziemy pod adresem
http://samba.org/samba/docs/man/Samba-HOWTO-Collection/passdb.html.
Użytkownikom serwera plików zakładamy konto w Linuksie. Ponieważ nie muszą oni mieć dostępu do powłoki systemu, uniemożliwimy im zalogowanie się do konsoli, ustawiamy powłokę na /bin/false:
# useradd -s/bin/false -p TrudneHaslo ¬
jacek
Następnie dodajemy nowe konto do listy użytkowników Samby komendą smbpasswd -a jacek. Istotne jest to, że jeżeli nazwa użytkownika i hasło w Sambie będą identyczne z tymi używanymi do logowania w Windows, pracownik nie będzie musiał kolejny raz wprowadzać poświadczeń podczas próby dostępu do zasobów.
Do zarządzania użytkownikami w Sambie możemy użyć programu smbpasswd lub pdbedit. Na początek pierwszy z nich. Poznaliśmy już przełącznik -a pozwalający dodać nowe konto użytkownika. Inne, przydatne parametry wywołania programu pozwalają usunąć konto z bazy (opcja -x), tymczasowo je zablokować (-d) oraz ponownie aktywować (-e). Z kolei aplikacja pdbedit jest bardziej uniwersalnym narzędziem do manipulowania na bazach typu SAM (w tym smbpasswd i tdbsam).
Aby dodać nowego użytkownika za pomocą programu pdbedit wydajemy komendę pdbedit -a -u anka. Przełącznik -u pozwala określić nazwę konta, na którym zostanie wykonana dana operacja. Przy użyciu pdbedit możemy także zmodyfikować istniejące konto (opcja -r) lub usunąć je z bazy (-x). Aby wyświetlić listę wszystkich zdefiniowanych w repozytorium kont, posłużymy się poleceniem pdbedit -L. Dodatkowe przełączniki pozwolą wyświetlić listę kont w widoku rozszerzonym (opcja -v) lub widoku zgodnym z programem smbpasswd (-w). W wypadku migracji ze starszych wersji Samby pdbedit posłuży nam do przeniesienia użytkowników z bazy smbpasswd do tdbsam. Dokonamy tego, wpisując komendę:
# pdbedit -i smbpasswd -e tdbsam
Na początek przygotujemy udział, który będzie dostępny dla wszystkich pracowników naszej instytucji w trybie tylko do odczytu. Załóżmy, że każdy urzędnik uprawniony do przeglądania tego zasobu ma założone konto w Sambie, natomiast tylko administrator danych (użytkownik admin) będzie mógł zmieniać umieszczone tu zbiory. Udział ten posłuży nam do opublikowania formularzy, papieru firmowego, instrukcji itd.
[Formularze]
comment = Formularze, papier firmowy,¬
instrukcje
path =/dane/formularze
read only = yes
write list = admin
Parametr path wskazuje ścieżkę do katalogu na serwerze, któremu odpowiada dany udział, natomiast opcja comment pozwala zamieścić dodatkowy komentarz widoczny podczas przeglądania udostępnionych zasobów. Parametr read only wymusza dostęp do zasobu w trybie tylko do odczytu. Zamieszczenie go w definicji udziału poprawia czytelność konfiguracji, sam parametr jest jednak w tym przypadku opcjonalny. Jeśli nie zdefiniowano inaczej, Samba udostępnia udziały właśnie w trybie do odczytu. Listę osób uprawnionych do zapisywania w folderze wskazujemy parametrem write list.
Definiując prawa dostępu do zasobów, musimy uwzględnić prawa dostępu do katalogu w systemie plikowym. Są one nadrzędne w stosunku do uprawnień Samby. Jeżeli użytkownik nie będzie miał prawa zapisu do katalogu w Linuksie, ustawienie w Sambie parametru writeable = yes (opcjonalnie write list) nie spowoduje przyznania mu tych uprawnień. Zapis w tym udziale (katalogu) nie będzie wówczas możliwy. W zależności od stosowanej polityki zabezpieczeń musimy przyznać uprawnienia zapisu dla wybranego użytkownika lub grupy użytkowników (do której należy admin) oraz ustawić poprawnie właściciela obiektu. Pozostali użytkownicy muszą mieć uprawnienia do przeglądania (wykonywania) katalogu.
W Sambie dostępnych jest kilka parametrów odpowiedzialnych za kontrolę dostępu do zasobów:
Na serwerze plików warto wydzielić zasób, który posłuży do wymiany plików między urzędnikami pracującymi w dowolnych działach i jednostkach organizacyjnych. Udział o nazwie Wspólny posłuży do szybkiej wymiany danych lub składowania plików, które mają być dostępne dla wszystkich zainteresowanych. Wszyscy pracownicy będą mieli pełne prawa do tego zasobu (odczyt, zapis), przez co nie powinien być używany do wymiany poufnych dokumentów (inne osoby będą mogły je podejrzeć) oraz składowania plików (inne osoby będą mogły je skasować). W podanym poniżej przykładzie parametry create mask oraz directory mask określają uprawnienia przypisywane plikom i katalogom tworzonym w udziale.
[Wspolny]
path =/dane/wspolne
read only = no
create mask = 0666
directory mask = 0777
Sekcja specjalna [homes] pozwala przyporządkować każdemu użytkownikowi w Sambie udział odpowiadający jego katalogowi domowemu w Linuksie. Udziały te tworzone są w locie, w momencie gdy użytkownik próbuje uzyskać dostęp do serwera plików. Nazwa zasobu odpowiada nazwie użytkownika w systemie. Sekcja [homes] ogranicza więc konieczność definiowania prywatnych udziałów dla każdego użytkownika z osobna. Dostęp do katalogu domowego ma wyłącznie bieżący użytkownik, a zasób ten jest niewidoczny dla pozostałych osób w sieci. Definicja udziału [homes], tak jak pozostałych sekcji, przechowywana jest w pliku smb.conf:
[homes]
comment = Katalog domowy użytkownika%S
browseable = no
writable = yes
create mask = 0700
directory mask = 0700
valid users =%S
Analiza konfiguracji Samby
Po zapisaniu zmian w smb.conf warto sprawdzić poprawność ustawień serwera plików. Służy do tego narzędzie testparm, które sprawdza składnię pliku konfiguracyjnego oraz istnienie katalogów określonych parametrem path. Testparm wyświetla definicje usług (sekcji) zarejestrowanych przez Sambę. Parametry, które są niepotrzebne lub niezgodne z innymi ustawieniami serwera, są ignorowane przez testparm (a w rezultacie także przez samą Sambę) i nie są wyświetlane w podsumowaniu konfiguracji. W tym kontekście testparm pomaga uporządkować plik smb.conf poprzez wskazanie, które parametry muszą ulec zmianie lub mogą zostać usunięte.
Standardowo, polecenie testparm wydajemy bez żadnych parametrów. W tym przypadku program przeprocesuje domyślny plik ustawień /etc/samba/smb.conf. Jeżeli do wywołania aplikacji dodamy przełącznik -v, testparm wyświetli wszystkie opcje mające wpływ na konfigurację Samby, nawet jeżeli nie zostały one jawnie zadeklarowane w konfiguracji usługi.
Autor zawodowo zajmuje się informatyką. Publikuje w magazynach komputerowych i serwisach internetowych.
Krajowe Ramy Interoperacyjności. 16 maja br. zostało ogłoszone...
Bezpłatna konferencja o przetwarzaniu danych w chmurze. „Cloud...
Sieć rzeczy. Szacuje się, że w roku 2015 każdy człowiek będzie...
Microsoft i resort gospodarki zapraszają. „Narzędzia elektroniczne...
Wielki skan. Skaner dokumentowy Avision AV620C2+ przeznaczony jest...
Specjalistyczne publikacje książkowe dla pracowników administracji publicznej