<b>Spis treści:</b>
Kod: Zaznacz cały
1. Założenia
2. Instalacja Samby
3. Konfiguracja Samby
a. Plik /etc/samba/smb.conf
b. Skrypty startowe
c. Ustawienie uprawnień dla użytkowników
d. Zarejestrowanie użytkowników w Sambie
4. Uruchomienie, testy i logi Samby
5. Podstawowe polecenia Samby, korzystanie z zasobów
6. Graficzne przeglądarki sieci
7. Przesyłanie wiadomości POPUP przez sieć lokalną
8. Udostępnianie drukarki przez sieć
Słowo końcowe autora...
Poniższy dokument opiera się na następujących założeniach:
Istnieje sieć lokalna, w której skład wchodzą przynajmniej 3 maszyny: serwer (Linux), stacja robocza 1 (Linux), stacja robocza 2 (Windows). Wszystkie komputery mają miec możliwość komunikacji między sobą poprzez protokół SMB, inaczej mówiąc powinny współistnieć w tzw. "otoczeniu sieciowym" i powinny mieć możliwość wymiany danych poprzez udostępnione zasoby.
Komputery pracujące pod kontrolą systemu Linux korzystają z programu <b>SAMBA</b>, którego konfiguracja zostanie zaprezentowana w dalszej części. Oto jaką rolę mają pełnić w sieci poszczególne komputery:
<b>SERWER</B> (Linux-Samba) - ma pełnić rolę serwera WINS w sieci. Ma być podstawową przeglądarką zasobów sieciowych i powinien zawsze wygrywać walkę z innymi systemami o bycię nią. Serwer powinien oferować dostęp do swoich zasobów na poziomie użytkownika - administrator ma mieć możliwość uaktutalniania przechowywanej na serwerze strony www. Dwóch użytkowników (jeden z nich to administrator) ma mieć dostęp do swoich lokalnych stron www przechowywanych na serwerze w ich katalogach domowych.
<b>STACJA ROBOCZA 1</b> (Linux-Samba) - jest to prywatny komputer, który ma mieć dostęp do zasobów sieciowych na serwerze i na stacji roboczej 2 (Windows). Na komputerze zostanie udostępniony katalog z plikami jak również drukarka, z której będą mogli korzystać inni użytkownicy sieci. Dodatkowo użytkownicy dzięki Sambie powinni mieć możliwość rozmowy z innymi poprzez programy typu Winpopup.
Dane techniczne/konfiguracyjne:
- adres sieci: 192.168.0.0
- adres serwera: 192.168.0.1
- grupa robocza: GRUPA_ROBOCZA
- użytkownicy serwera: użytkownik1 (jednocześnie administrator, zarzadza serwerem i stacją roboczą 1), użytkownik2 (zwykły użytkownik zarządza stacja roboczą 2).
<h3>2. Instalacja Samby</h3>
Program instalujemy wykorzystując gotową paczkę dla naszej dystrybucji lub kompilujemy ze źródel sciągniętych ze strony <a href="http://www.samba.org">http://www.samba.org</a>. Po poprawnej instalacji powinniśmy zauważyć m.in. nowe katalogi <i>/etc/samba</I> i <i>/var/log/samba</i>.
Mała uwaga:
Na serwerze najlepiej zainstalować jedną z najnowszych wersji Samby (3.0.10 -> wzwyż) ze względu na problemy z kompatybilnością z systemem WindowsXP+SP2. Objawia się to tym, że host z Windowsem walcząc o bycie domyślną przeglądarką w sieci wygrywa i mimo, że serwer z Sambą przy odpowiednich ustawieniach za chwilę przejmuje kontrolę ponownie to jednak system WindowsXP+SP2 nie zrzeka sie roli. Prowadzi to w efekcie do "zaniku otoczenia sieciowego" - komputery nie są widoczne w sieci.
<h3>3. Konfiguracja Samby</h3>
<b>a. Plik <i>/etc/samba/smb.conf</i></b>
Poniżej przedstawione zostały pliki smb.conf dla poszczególnych komputerów linuksowych. Opisy znajdują się w treści plików.
<b>SERWER</B>:
Kod: Zaznacz cały
[global] # ustawienia globalne
guest account = nobody # konto gościa w systemie
workgroup = GRUPA_ROBOCZA # nazwa grupy roboczej sieci
server string = SERWER_SAMBA # opis widniejący w sieci przy nazwie serwera
security = user # zabezpieczenie i dostęp do zasobów na poziomie użytkownika
encrypt passwords = yes # przesyłanie haseł w odpowiedniej formie dla zgodności z Windows
log file = /var/log/samba/log.%I # oddzielny plik dziennika dla każdego podłączającego się komputera
log level = 2 # ustawienie szczegółowości logowanych komunikatów (od min 0 do max 3)
max log size = 2000 # ustawienie maksymalnej wielkości pliku dziennika na 2000KB
# Po przekroczeniu tej wielkości plik zapisywany jest z rozszerzeniem OLD
local master = yes # serwer jako podstawowa przeglądarka zasobów w sieci
preferred master = yes # serwer jako preferowana przeglądarka zasobów w sieci
domain master = yes # serwer jako kontroler domeny w sieci
wins support = yes # serwer ma pełnić rolę serwera WINS
os level = 65 # poziom z jakim serwer będzie walczył o bycie podstawową przeglądarką
# odpowiednio wysoki da pewność zwycięstwa
[www] # zasób strony www
path = /var/www/htdocs # ścieżka do udostępnionego katalogu z plikami strony www
read only = no # wyłączenie trybu tylko-do-odczytu
writeable = yes # możliwość zapisu
browseable = yes # możliwość przeglądania
valid users = uzytkownik1 # lista użytkowników uprawnionych do dostępu
[www_uzytkownik1] # zasób strony www użytkownika 1
path = /home/uzytkownik1/public_html # ścieżka do udostępnionego katalogu ze stroną www
read only = no # wyłączenie trybu tylko-do-odczytu
writeable = yes # możliwość zapisu
browseable = yes # możliwość przeglądania
valid users = uzytkownik1 # lista użytkowników uprawnionych do dostępu
[www_uzytkownik2] # zasób strony www użytkownika 2
path = /home/uzytkownik2/public_html # ścieżka do udostępnionego katalogu ze stroną www
read only = no # wyłączenie trybu tylko-do-odczytu
writeable = yes # możliwość zapisu
browseable = yes # możliwość przeglądania
valid users = uzytkownik2 # lista użytkowników uprawnionych do dostępu
Kod: Zaznacz cały
[global] # ustawienia globalne
guest account = nobody # konto gościa w systemie
workgroup = GRUPA_ROBOCZA # nazwa grupy roboczej sieci
server string = STACJA1_SAMBA # opis widniejący w sieci przy nazwie komputera
security = share # zabezpieczenie i dostęp do zasobów na poziomie zasobów udostępnionych
encrypt passwords = yes # przesyłanie haseł w odpowiedniej formie dla zgodności z Windows
log file = /var/log/samba/log.%I # oddzielny plik dziennika dla każdego podłączającego się komputera
log level = 2 # ustawienie szczegółowości logowanych komunikatów (od min 0 do max 3)
max log size = 2000 # ustawienie maksymalnej wielkości pliku dziennika na 2000KB
# Po przekroczeniu tej wielkości plik zapisywany jest z rozszerzeniem OLD
local master = no # stacja nie ma być podstawową przeglądarką sieci
preferred master = no # stacja nie ma być preferowaną przeglądarką sieci
domain master = no # stacja nie ma być kontrolerem domeny
wins support = no # nie ma pełnić roli serwera WINS
wins server = 192.168.0.1 # wskazanie adresu IP serwera WINS w sieci
os level = 30 # odpowiednio niski poziom zapewni przegraną w walce o bycie przegladarką
unix charset = iso8859-2 # kodowanie znaków w sieci
dos charset = cp852 # kodowanie znaków w sieci
display charset = iso8859-2 # kodowanie znaków w sieci
[drukarka] # zasób udostępnianej w sieci drukarki
comment = HP 710c # opis/koemntarz wyświetlany prze nazwie zasobu w sieci
printer = hp710c # nazwa drukarki nadana podczas instalacji jej w systemie Linux
path = /var/spool/samba # ścieżka do katalogu, w którym przechowywana jest kolejka wydruków
printing = cups # wykorzystywany system wydruku CUPS
printable = yes # możliwość drukowania
guest ok = yes # drukowanie anonimowe dla wszystkich w sieci
writable = yes # możliwość zapisu (w tym przypadku do kolejki wydruku)
[udostepnione] # Zasób udostępnionych plików
path = /mnt/udostepnione # ścieżka do udostępnionego katalogu
read only = yes # włączony tryb tylko-do-odczytu
browseable = yes # możliwość przeglądania zasobu
guest ok = yes # dostęp anonimowy dla wszsytkich w sieci
Kod: Zaznacz cały
Load smb config files from /etc/samba/smb.conf
Processing section "[drukarka]"
Processing section "[udostepnione]"
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions
(...)
Kod: Zaznacz cały
Load smb config files from /etc/samba/smb.conf
Processing section "[www]"
Processing section "[www_uzytkownik1]"
Processing section "[www_uzytkownik2]"
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions
(...)
Po poprawnej instalacji pakietu Samba, w katalogu <i>/etc/rc.d</i> powienien pojawić się skrypt startowy <i>rc.samba</i> lub podobny. Nadajemu mu prawa wykonywania poleceniem <i># chmod +x /etc/rc.d/rc.samba</i>. Jeśli takiego pliku nie ma to w pliku <i>/etc/rc.d/rc.local</i> wpisujemy:
Kod: Zaznacz cały
echo "Uruchamianie demonów Samby - smbd, nmbd..."
/usr/sbin/smbd -D
/usr/sbin/nmbd -D
Aby zwykli użytkownicy systemu mogli bez problemu montować zasoby sieciowe należy nadać odpowiednie uprawnienia SUID plikom <i>/usr/bin/smbmnt</i> i <i>/usr/bin/smbumount</i> wywołując następujące polecenia <i># chmod u+s /usr/bin/smbmnt</i> oraz <i># chmod u+s /usr/bin/smbumount</i>.
<b>d. Zarejestrowanie użytkowników w Sambie</b>
Dostęp do zasobów Samby na serwerze mają mieć tylko wybrani uzytkownicy (zabezpieczenie security=user w smb.conf). Zakładamy, że konta użytkowników <b>uzytkownik1</b> i <b>uzytkownik2</b> są skonfigurowane odpowiednio w systemie. Następnie wykorzystując program <b>smbpasswd</b> trzeba ustalić dla tych uzytkowników hasła dostępu do zasobów Samby. Założyliśmy, że dostęp do zasobów serwera mają w/w użytkownicy. Wydajemy więc na serwerze polecenie <i># smbpasswd -a uzytkownik1</i> po czym podajemy hasło dostępu do Samby dla tego uzytkownika. To samo robimy dla użytkownika drugiego.
Po takim zabiegu kiedy Ci użytkownicy zechcą skorzystać na swoich stacjach roboczych z zasobów udostępnionych na serwerze, będą musieli najpierw podać właściwy login i hało aby uzyskać dostęp. Inni użytkownicy sieci, którzy nie znają tych danych nie zostaną wpuszczeni.
<h3>4. Uruchomienie, testy i logi Samby</h3>
Sambę możemy uruchomić bez restartu systemu, poleceniem <i># /etc/rc.d/rc.samba start</i> jeśli posiadamy skrypt startowy lub wydając odpowiednio polecenia <i># /usr/sbin/smbd -D</i> i <i># /usr/sbin/nmbd -D</i>.
Weryfikację funkcjonowania serwera plików możemy rozpocząć od sprawdzenia, czy pracują odpowiednie demony. Wydajemy więc polecenia <i># ps -A</i>, po którym powinniśmy ujrzeć na liście pracesy smbd i nmbd.
Następnie zapoznajemy się z logami Samby w katalogu <i>/var/log/samba</i>. Po poprawnym uruchomieniu powinniśmy uzyskać następujące wpisy:
<b>SERWER</b> - plik <i>log.smbd</i>
Kod: Zaznacz cały
[2005/03/01 19:31:14, 0] smbd/server.c:main(760)
smbd version 3.0.11 started.
Copyright Andrew Tridgell and the Samba Team 1992-2004
Kod: Zaznacz cały
[2005/03/01 19:31:15, 0] nmbd/nmbd.c:main(668)
Netbios nameserver version 3.0.11 started.
Copyright Andrew Tridgell and the Samba Team 1994-2004
[2005/03/01 19:31:15, 0] nmbd/asyncdns.c:start_async_dns(149)
started asyncdns process 6593
[2005/03/01 19:31:16, 0] nmbd/nmbd_become_dmb.c:become_domain_master_browser_wins(327)
become_domain_master_browser_wins:
Attempting to become domain master browser on workgroup GRUPA_ROBOCZA, subnet UNICAST_SUBNET.
[2005/03/01 19:31:16, 0] nmbd/nmbd_become_dmb.c:become_domain_master_browser_wins(341)
become_domain_master_browser_wins: querying WINS server from IP 192.168.0.1 for
domain master browser name GRUPA_ROBOCZA<1b> on workgroup GRUPA_ROBOCZA
[2005/03/01 19:31:16, 0] nmbd/nmbd_become_dmb.c:become_domain_master_stage2(113)
*****
Samba server SERWER is now a domain master browser for workgroup GRUPA_ROBOCZA on subnet UNICAST_SUBNET
*****
[2005/03/01 19:31:16, 0] nmbd/nmbd_become_dmb.c:become_domain_master_browser_bcast(282)
become_domain_master_browser_bcast:
Attempting to become domain master browser on workgroup GRUPA_ROBOCZA on subnet ZEWNETRZNY_ADRES_IP_SERWERA
[2005/03/01 19:31:16, 0] nmbd/nmbd_become_dmb.c:become_domain_master_browser_bcast(295)
become_domain_master_browser_bcast: querying subnet ZEWNETRZNY_ADRES_IP_SERWERA for
domain master browser on workgroup GRUPA_ROBOCZA
[2005/03/01 19:31:16, 0] nmbd/nmbd_become_dmb.c:become_domain_master_browser_bcast(282)
become_domain_master_browser_bcast:
Attempting to become domain master browser on workgroup GRUPA_ROBOCZA on subnet 192.168.0.1
[2005/03/01 19:31:16, 0] nmbd/nmbd_become_dmb.c:become_domain_master_browser_bcast(295)
become_domain_master_browser_bcast: querying subnet 192.168.0.1 for domain master browser on workgroup GRUPA_ROBOCZA
[2005/03/01 19:31:26, 0] nmbd/nmbd_become_dmb.c:become_domain_master_stage2(113)
*****
Samba server SERWER is now a domain master browser for workgroup GRUPA_ROBOCZA on subnet ZEWNETRZNY_ADRES_IP_SERWERA
*****
[2005/03/01 19:31:26, 0] nmbd/nmbd_become_dmb.c:become_domain_master_stage2(113)
*****
Samba server SERWER is now a domain master browser for workgroup GRUPA_ROBOCZA on subnet 192.168.0.1
*****
[2005/03/01 19:31:42, 0] nmbd/nmbd_become_lmb.c:become_local_master_stage2(396)
*****
Samba name server SERWER is now a local master browser for workgroup GRUPA_ROBOCZA on subnet ZEWNETRZNY_ADRES_IP_SERWERA
*****
[2005/03/01 19:31:42, 0] nmbd/nmbd_become_lmb.c:become_local_master_stage2(396)
*****
Samba name server SERWER is now a local master browser for workgroup GRUPA_ROBOCZA on subnet 192.168.0.1
*****
Kod: Zaznacz cały
[2005/03/01 17:33:45, 0] smbd/server.c:main(798)
smbd version 3.0.11 started.
Copyright Andrew Tridgell and the Samba Team 1992-2004
Kod: Zaznacz cały
[2005/03/01 17:33:45, 0] nmbd/nmbd.c:main(668)
Netbios nameserver version 3.0.11 started.
Copyright Andrew Tridgell and the Samba Team 1994-2004
<h3>5. Podstawowe polecenia Samby, korzystanie z zasobów</h3>
Oto krótki spis podstawowych komend używanych w pracy z sewerem plików:
<i># smbstatus</i> - wyświetlenie aktualnie nawiązanych połaczeń
<i># smbclient -L nazwa_serwera</i> - wyświetlenie listy komputerów w sieci (serwer przetrzymuje listę jako domyślna przeglądarka). Wyświetlenie zasobów udostępnionych na serwerze
<i># smbclient -L nazwa_stacji_lub_adres_ip</i> - wyświetlenie zasobów udostępnionych na stacji roboczej
<i># smbclient //stacja/zasob</i> - zalogowanie się (z wykorzystaniem aktualnego użytkownika) do odpowiedniego zasobu na danej stacji w celu przegladania, skopiowania, etc. Jeśli dana stacja oferuje połączenia anonimowe to w momencie kiedy zostaniemy poproszeni o hasło nie wpisujemy nic tylko potwierdzamy enterem.
<i># smbclient //stacja/zasob -U nazwa_uzytkownika</i> - zalogowanie się jako konkretny uzytkownik do odpowiedniego zasobu na danej stacji w celu przegladania, skopiowania, etc.
Po poprawnym zalogowaniu się do zasobu dyskowego wyświetlony zostanie znak zachęty <i>smb:\></i>. W tym momencie, posługując się dostępnymi komendami możemy korzystać z zasobu. Sesję Samby kończymy wydając polecenie <i># quit</i>. Listę poleceń znajdziemy w podręczniku smbclient <i># man smbclient</i>
Udostępnione zasoby dyskowe możemy również montować jak lokalne dyski. Wykorzystujemy do tego celu polecenia:
<i># /usr/bin/smbmount //stacja/zasob /punkt/montowania</i> - efektem będzie zamontowanie zasobu w katalogu <i>/punkt/montowania</i> i mozliwość przeglądania jak lokalnego dysku
<i># /usr/bin/smbumount /punkt/montowania</i> - efektem będzie odmontowanie zasobu z katalogu <i>/punkt/montowania</i>. Konieczne jest "zwolnienie" zasobu poprzez opuszczenie katalogu i zamknięcie dokumentów. W przeciwnym wypadku otrzymamy komunikat o zajętości.
<h3>6. Graficzne przeglądarki sieci</h3>
Osoby korzystające ze środowisk graficznych mogą posłuzyć się graficznymi przeglądarkami sieci. Ułatwia to znacząco pracę z udostępnionymi zasobami. Programami godnymi polecenia się m.in. <b>SMB4k</b> i <b>LinNeighborhood</b>.
<b>a. SMB4k</b> (<a href="http://smb4k.berlios.de/">http://smb4k.berlios.de/</a>) - Instalujemy z paczki dostępnej dla naszej dystrybucji lub kompilujemy ze źródeł poleceniem <i># ./configure & make & make install</i>. Program uruchamiamy poleceniem <i># smb4k</i>. Konfigurację wykonujemy w menu <b>Ustawienia->Konfiguracja:SMB4k</b>:
zakładka <b>Sieć</b> - w sekcji "odpytaj 'master browser' aby uzyskać listę przeglądania" dla "Nazwa Netbios/Adres IP" wpisujemy 192.168.0.1
zakładka <b>Samba</b> / zakładka <b>nmblookup</b> - w sekcji "grupa robocza" wpisujemy GRUPA_ROBOCZA, a sekcji "adres broadcast" wpisujemy 192.168.0.255
Program jest gotowy do użytku.
<b>b. LinNeighborhood</b> (<a href="http://www.bnro.de/~schmidjo/">http://w ... hmidjo/</a>) - Instalujemy z paczki lub kompilujemy ze źródeł <i># ./configure & make & make install</i>. Należy pamiętać, aby przed kompilacją ściągnąć ze strony programu odpowiednią łątkę pozwalającą mu pracować poprawnie z Sambą w wersji 3.x. Łatka nosi nazwę <b>LinNeighborhood-0.6.5-samba3.patch</b> i nakładamy ją na źródła poleceniem <i># patch -p0 < LinNeighborhood-0.6.5-samba3.patch</i>, będąc w katalogu wyżej niż źródła. Po instalacji programu uruchamiamy go poleceniem <i># LinNeighborhood</i>. Program konfigurujemy w menu <b>Edytuj->Preferencje</b>:
zakładka <b>Skanuj</b> - w "grupie roboczej" wpisujemy GRUPA_ROBOCZA i zaznaczamy opcje:
- zawsze skanuj jako uzytkownik
- skanuj grupę jako użytkownik
- skanuj grupy jako użytkownik
- zapytaj raz o użytkownika/hasło
- użyj nazwy grupy przy przeglądaniu
- początkowe przeglądanie przy starcie
- użyj nazwy grupy przy montowaniu
<h3>7. Przesyłanie wiadomości POPUP przez sieć lokalną</h3>
Wielu użytkowników systemów Windows do komunikacji w sieci LAN posługuje sie programami typu <b>Winpopup</b>. Użytkownicy systemu Linux instalując program <b>KLinpopup</b> i wykorzystując Sambę mogą się również tak porozumiewać.
Należy pobrać ze strony <a href="http://www.gerdfleischer.de/klinpopup.p ... pup.php</a> źródła programu i zaisntalować go <i># ./configure & make & make install</i>. Następnie w pliku <i>/etc/samba/smb.conf</i> w sekcji [global] dopisujemy:
Kod: Zaznacz cały
message command = sh -c '/sciezka/do/pliku/receivepopup.sh "%f" "%m" "%I" "%s"' &
Potem tworzymy katalog do którego będą przychodziły wiadomości. Wykonujemy komendę <i># mkdir -vp -m 0777 /var/lib/klinpopup</i>. Program uruchamiamy poleceniem <i># klinpopup %i %m -caption "%c"</i> i możemy zacząć wysyłać wiadomości.
<h3>8. Udostępnianie drukarki przez sieć</h3>
Zakładamy, że drukarka funkcjonuje już w systemie (nazwa drukarki w systemie to hp710c) i działa w oparciu o system CUPS. Chcemy, aby inni uzytkownicy mogli poprzez sieć zainstalować udostępnioną drukarkę na swoich komputerach i drukować na niej. W tym celu wykonujemy następujące czynności:
- edytujemy plik <i>/etc/cups/cups.conf</i> i umożliwiamy dostęp do serwera wydruku, uzupełniając poniższa sekcję o adresy IP uprzywilejowanych komputerów:
Kod: Zaznacz cały
<Location />
Order Deny, Allow
Deny From All
Allow From 127.0.0.1
Allow From 192.168.0.*
</Location>
- wywołujemy polecenie <i># lpq</i> czego efektem powinno być pojawienie się takiego napisu:
Kod: Zaznacz cały
hp710c is ready
no entries
Kod: Zaznacz cały
[drukarka]
comment = HP 710c
printer = hp710c
path = /var/spool/samba
printing = cups
printable = yes
guest ok = yes
writable = yes
- edytujemy plik <i>/etc/cups/mime.convs</i> i odkomentowujemy linię:
Kod: Zaznacz cały
application/octet-stream application/vnd.cups-raw 0 -
Kod: Zaznacz cały
application/octet-stream
Po tych zabiegach na stacjach windowsowych i nie tylko powinna być widoczna udostępniona drukarka. Można ją zainstalować jako sieciową wykorzystując sterowniki odpowiednie dla danego systemu.
<h3>Słowo końcowe autora...</h3>
Opisane powyżej zagadnienia prezentują tylko wybrany wycinek rzeczywistości zadeklarowany we wstępnych założeniach dokumentu i mogą nie być uniwersalnym rozwiązaniem przez co nalezy je dostosować do własnch potrzeb i wymagań. Bez wątpienia przedstawiony tekst nie wyczerpuje calkowicie poruszanej tematyki i nie opisuje wszystkich możliwych rozwiązań tak więc proszę traktować go jako wiedzę podstawową, którą najlepiej poszerzać przez studiowanie wszelkiego rodzaju dokumentacji.
<b>Autor</b>: Skyscraper (janciorules AT ow DOT pl)
<b>Uwagi</b>: bzyk