Samba to zbiór uniksowych aplikacji
rozumiejących protokół SMB (Server
MessageBlock). Wiele systemów
operacyjnych, w tym Windows i OS/2, używa SMB do komunikacji sieciowej między
klientami i serwerami. Samba umożliwia uniksowym serwerom
porozumiewanie się za pomocą tego samego protokołu, którego używają systemy Microsoftu. Zatem uniksowy komputer z Sambą
może udawać serwer w sieci Microsoftu i
udostępniać następujące usługi:
-
współdzielić systemy plików,
-
współdzielić drukarki podłączone
do serwera i klientów,
-
wspomagać klientów w
przeglądaniu Otoczenia sieciowego,
-
uwierzytelniać klientów
logujących się do domeny Windows,
-
wspomagać odwzorowywanie
nazw jako serwer WINS.
Głównymi składnikami pakietu
Samba są dwa uniksowe demony, które udostępniają
współdzielone zasoby - zwane udziałem sieciowym - klientom SMB. Tymi
demonami są:
smbd
Demon umożliwiający współdzielenie
plików i drukarek w sieci SMB i zapewniający uwierzytelnianie klientów SMB.
nmbd
Demon świadczący usługi Windows
Internet Name Service (WINS) i wspomagający przeglądanie zasobów sieci.
1. Instalacja Samby
Oczywiście na początku trzeba
ściągnąć źródła samby lub paczkę i zainstalować. Najprostszym sposobem
jest dodać paczkę za pomocą
# pkg_add samba-2.2.7.tgz.
Instalacj z portów również przebiega w prsosty sposób:
# cd /usr/ports/net/samba
# make install clean
Po zainstalowaniu
musimy zmienić nazwę pliku konfiguracyjnego smb.conf.sample na smb.conf
oraz plik uruchamiający nam sambę samba.sh.sample na samba.sh,
które znajdują się odpowiednio w katalogach /usr/local/etc i /usr/local/etc/rc.d.
# cd /usr/local/etc
# mv smb.conf.sample smb.conf
# cd /usr/local/etc/rc.d
# mv samba.sh.sample samba.sh
2. Konfiguracja Samby
Samba zaraz po zainstalowaniu nie nadaje się do "użycia". Należy ją wstępnie
skonfigurować wedle własnych potrzeb. Poniżej znajduje się przykładowy plik
konfiguracyjny z wyjaśnieniem poszczególnych opcji.:
#=======================
Global Settings =====================================
[global]
# Twoja grupa robocza w sieci;
workgroup = MYGROUP
# nazwa pod jaką będzie widoczny serwer w Otoczeniu Sieciowym;
netbios name = Server
# komentarz wyświetlany obok komputera;
server string = Samba Server
# tutaj możemy ustawić dostęp do udziałów (z jakich adresów (sieci) można
łączyć
# się z sambą);
hosts allow = 192.168.1. 192.168.2. 127.
# tutaj z kolei możemy zabronić dostępu do udziałów (host zostaje
dopuszczony
# do udziałów tylko wtedy gdy jest na liście host allow i jednocześnie nie ma
# go na liście host deny;
host deny = 192.168.1.4 192.168.2.10
# umieszcza na liście
przeglądania wszystkie drukarki wymienione w systemowym
# pliku parametrów drukarek, używa opcji konfiguracyjnych z sekcji [printers]
# dozwolone wartości: YES, NO; wartość
domyślna = YES;
load printers = yes
# Samba użyje określonego
pliku jako pliku parametrów drukarek, zwykle jest to
# plik /etc/printcap możesz jednak ustawić tę opcję tak, aby wskazywała plik
# tylko z tymi drukarkami, które chcesz udostępnić w sieci;
printcap name = /etc/printcap
# ta opcja konfiguracyjna informuje Sambę o systemie druku używanym przez serwer
printing = bsd
# jeżeli chcemy umożliwić gościnny dostęp do niektórych udziałów musimy
podać
# jakiego konta będzie używał użytkownik podczas uwierzytelniania
# (w tym wypadku opcja security
= share);
guest account = nobody
# ścieżka do logów i pod jaką nazwą mają być zapisywane;
log file = /var/log/log.%m
# maksymalny rozmiar pliku z logami;
max log size = 50
# zabezpieczenie dostępu na poziomie użytkownika
# security = share
na poziomie zasobów;
security = user
# możesz skonfigurować Sambę do współpracy z
serwerem haseł (kiedy używasz
# zabezpieczeń na poziomie serwera security = server). Zauważ, że w opcji
# password server możesz podać nazwy
kilku komputerów. Samba będzie łączyć się
# z kolejnym serwerem na liście, jeśli pierwszy wybrany będzie
niedostępny.
# Serwery w opcji password server określa się za pomocą nazw NetBIOS-owych,
# a nie nazw DNS lub równoważnych
im adresów IP;
password server =
SERVERSAMBY1 SERVERSAMBY2
# włącza szyfrowanie haseł
metodą Windows NT, wymaga użycia programu
# smbpasswd w serwerze Samby;
encrypt passwords = yes
# ta opcja powoduje wczytanie pliku
konfiguracyjnego dla komputera o określonej nazwie
# NetBIOS-owej (%m) jeżeli nazwa klienta to host1, a w katalogu samby (lub tym, którego
# podałeś w pliku konfiguracyjnym) znajduje się plik smb.conf.host1, Samba dołączy
# jego za wartość do domyślnego
pliku konfiguracyjnego; jeśli plik smb.conf.host1
# modyfikuje którąś zmienną konfiguracyjną, to zmieniona
wartość będzie miała
# pierwszeństwo przed wartością zdefiniowaną wcześniej; jeśli któraś opcja
# konfiguracyjna
zostanie zmodyfikowana w głównym pliku już po opcji include, Samba
# przyjmie jej nową wartość dla udziału, w którym
została zdefiniowana;
include = /usr/local/etc/smb.conf.%m
# jest to opcja dostrajania systemu goszczącego Sambę (dokładnie nie wiem o
co chodzi);
socket options = TCP_NODELAY
# jeśli chcesz, aby dane były
wysyłane przez więcej niż jeden interfejs, musimy podać
# ich pełną listą w
opcji interfaces ponieważ nie można zagwarantować, że podstawowy
# interfejs wybrany przez
Sambę będzie tym właściwym;
interfaces = 192.168.10.1/24 192.168.20.1/24
# opcja ta określa, czy Samba zaraz po uruchomieniu spróbuje zostać główną
przeglądarką
# lokalną w swojej podsieci domyślnie opcja jest ustawiona na yes i Samba bierze udział
# w wyborach,
jednakże włączenie tylko tej opcji nie gwarantuje zwycięstwa (pomogą w
# tym inne parametry, takie jak preferred
master i oslevel);
local master = yes
# ustawia poziom systemu operacyjnego Samby podczas wyborów głównej
przeglądarki
# lokalnej;
os level = 60
# Samba może przejąć funkcję głównej przeglądarki
domeny we wszystkich podsieciach
# grupy roboczej dzięki tej opcji;
domain master = yes
# nakazuje Sambie ustawić bit preferowanej przeglądarki
głównej podczas udziału w
# wyborach, dzięki temu komputer uzyskuje w grupie roboczej wyższą preferencję niż inne
# komputery o tym
samym poziomie systemu operacyjnego jeśli chcesz, żeby komputer z
# Sambą został główną przeglądarką lokalną,
powinieneś użyć poniższej opcji;
preferred master = yes
# Logowanie do domeny (włączenie tej opcji powoduje domyślne włączenie opcji
# domain master);
domain logons = yes
# Skrypt wykonywany podczas logowania (musi być umieszczony w udziale netlogon);
logon script = start.bat
# Ścieżka do katalogu w którym będą przechowywane profile mobilne (wędrujące)
# - dla systemów win9x/Me;
logon home = %L%U.win9x
# Ścieżka do katalogu w którym będą przechowywane profile mobilne (wędrujące)
# - dla systemów winNT/2000/XP;
logon path = %L%U.winNT
# Mapowanie katalogu domowego np. jako dysk P: (tylko dla winNT/2000/XP);
logon drive = P:
# Windows Internet Name Serving Support Section:
# WINS Support - Tells the NMBD component of Samba to enable it's WINS Server
; wins support = yes
# WINS Server - Tells the NMBD components of Samba to be a WINS Client
# Note: Samba can be either a WINS Server, or a WINS Client, but NOT both
; wins server = w.x.y.z
# WINS Proxy - Tells Samba to answer name resolution queries on
# behalf of a non WINS capable client, for this to work there must be
# at least one WINS Server on the network. The default is NO.
; wins proxy = yes
# DNS Proxy - tells Samba whether or not to try to resolve NetBIOS names
# via DNS nslookups. The built-in default for versions 1.9.17 is yes,
# this has been changed in version 1.9.18 to no.
dns proxy = no
# Client codepage settings
# for Greek users
; client code page=737
# for European users (Latin 1)
; client code page=850
# for European users (Latin 2)
; client code page=852
#============================ Share Definitions ==============================
# opcje występujące w tej sekcji:
# comment - komentarz wyświetlany przy udziale;
# browseable - jeżeli yes udział będzie widoczny dla wszystkich;
# writeable - możliwość pisania po udziale;
# read only - udział tylko do odczytu (zamienne z writeable);
# guest ok (public) - udział dostępny dla wszystkich;
# write list - lista osób lub grup oddzielonych przecinkami, które
# mają
prawo pisania po udziale np.
# write list = user1, user2, @grupa1, @grupa2;
# path - ścieżka do udziału;
# only guest - udział, z którym łączymy się tylko za pomocą konta gościnnego;
# valid users - lista osób, które mogą korzystać z zasobu;
# create mask - maska nowo tworzonych plików np. create mask = 644;
# directory mask - maska nowo tworzonych katalogów;
# sekcja homes - katalogi domowe;
[homes]
comment = Katalog domowy
browseable = no
writeable = yes
guest
ok = no
create mask =
644
directory mask = 755
# Udział, w którym zamieszczamy podstawowy skrypt logowania
# (w tym przypadku start.bat);
[netlogon]
comment = Network Logon Service
path = /usr/local/samba/lib/netlogon
guest ok = yes
writeable = no
share modes = no
browseable = no
# Un-comment the following to provide a specific roving profile share
# the default is to use the user's home directory
;[Profiles]
; path = /usr/local/samba/profiles
; browseable = no
; guest ok = yes
# NOTE: If you have a BSD-style print system there is no need to
# specifically define each individual printer
[printers]
comment = All Printers
path = /var/spool/samba
browseable = no
# Set public = yes to allow user 'guest account' to print
guest ok = no
writeable = no
printable = yes
# udział public, do którego mają dostęp wszyscy (tylko do odczytu), a
zapisywać w tym
# udziale może tylko user1, user3 i wszyscy z grupy grupa2;
[public]
comment = Katalog publiczny
path = /home/samba/public
public = yes
browseable = yes
read only = yes
printable = no
write list = user1 user3 @grupa2
# udział dostępny dla wszystkich łączących się z danego komputera
(tzn. najpierw
# tworzymy katalogi o nazwach takich jak nazwy komputerów klientów) a zmienna %m
# powoduje, że
każdy komputer posiada swój katalog na serwerze, do którego mają
# dostęp osoby łączące
się z danej maszyny;
[pchome]
comment = Katalog PC %m
path = /usr/pc/%m
public = no
writeable = yes
# udział przeznaczony tylko i wyłącznie dla gości, po którym może pisać
każdy;
[public-guest]
path = /home/samba/public-guest
public = yes
only guest = yes
writeable = yes
printable = no
|
3. Uruchomienie Samby
Teraz wystarczy już tylko
uruchomić demony Samby i skonfigurować klientów do współpracy z Sambą. Są dwie możliwości
uruchomienia Samby: za pośrednictwem inetd
lub jako osobne demony Samby. Jeśli chcesz uruchamiać
Sambę za pośrednictwem inetd, najpierw otwórz w edytorze plik /etc/services.
Jeśli nie ma w nim jeszcze poniższych linii, dopisz je:
# vi /etc/services
netbios-ns 137/tcp #NETBIOS Name Service
netbios-ns 137/udp #NETBIOS Name Service
netbios-dgm 138/tcp #NETBIOS Datagram Service
netbios-dgm 138/udp #NETBIOS Datagram Service
netbios-ssn 139/tcp #NETBIOS Session Service
netbios-ssn 139/udp #NETBIOS Session Service |
Następnie robimy odpowiednie wpisy w inetd.conf i
powiadamiamy demona inetd o zmianie w pliku konfiguracyjnym i sprawdzamy czy usługi
zostały uruchomione:
# vi /etc/inetd.conf
netbios-ssn stream tcp nowait
root /usr/local/sbin/smbd smbd -D
netbios-ns dgram udp
wait root /usr/local/sbin/nmbd nmbd -D |
# kill -HUP inetd
# ps -ax | grep smbd
139 ?? Is 0:03.27
/usr/local/sbin/smbd -D
141 ?? Ss 0:31.07
/usr/local/sbin/nmbd -D
Drugim sposobem uruchomienia Samby
jest użycie osobnych demonów. W tym celu trzeba (jak już wcześniej napisałem)
zmienić (lub skopiować) nazwę pliku samba.sh.sample na samba.sh i uruchomić
Sambę:
# cp /usr/local/etc/rc.d/samba.sh.sample
/usr/local/etc/rc.d/samba.sh
# smbd start
# nmbd start
Za pmocą poleceń smbd stop i smbd restart możemy
zatrzymać Sambę lub ją przeładować. POWODZENIA ;-))
4. Konfiguracja klientów do
logowania domenowego
- dla Win9x/Me
W tym przypadku wystarczy utworzyć użytkownika
w systemie FreeBSD
# adduser
(chyba nie muszę tego opisywać)
dodajemy ich do pliku haseł Samby
# smbpasswd -a nazwa_usera
i podajemy hasła do naszego serwera plików (mogą być zgodne z hasłami systemowymi).
Następnie idziemy do zakładki Panel
sterowania -> Sieć -> Klient sieci Microsoft Network -> Właściwości
-> Zaloguj do domeny NT i
w tym miejscu należy wpisać nazwę domeny, do której chcemy się przyłączyć
i ponownie uruchomić komputer.
- dla WinNT/2000/XP
O ile w przypadku Win9x logowanie do domeny nie
sprawia żadnych kłopotów, to w tym przypadku zalogowanie wymaga nieco
bardziej skomplikowanej konfiguracji (szczerze powiem, że kilka dni spędziłem
na zalogowaniu do domeny komputera z systemem WinXP).
UWAGA! - te wpisy w rejestrze dotyczą tylko WinXP
Na początku trzeba zmienić wpisy w rejestrze systemowym.
Uruchamiamy regedit i przechodzimy do:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControl\SetServices\Netlogon\Parameters]
i zmieniamy wartości poniższych kluczy na
0
"requiresignorseal"=dword:00000000
"signsecurechannel"=dword:00000000
Następnie tworzymy użytkowników
w systemie FreeBSD
# adduser (chyba nie muszę tego opisywać)
dodajemy ich do pliku haseł Samby
# smbpasswd -a nazwa_usera
i podajemy hasła do naszego serwera plików (mogą być zgodne z hasłami systemowymi).
I to jeszcze nie wystarczy
ponieważ systemy z rodziny NT wymagają jeszcze tzw. konta zaufania komputera,
który chcemy podłączyć do domeny. Konto to musi mieć nazwę taką samą jak
nazwa komputera + znaczek $ na końcu tej nazwy np. nazwa_kompa$.
Niestety nie można utworzyć takiego konta tak jak zwykłego użytkownika
ponieważ polecenie adduser nie przyjmuje na końcu znaczka $. Wykonujemy
to w następujący sposób:
#
pw useradd nazwa_kompa$ -u 2001 -g nobody -s /sbin/nologin -d / -c "Konto
zaufania"
Teraz nasz plik /etc/passwd powinien zawierać wpis dotyczący naszego konta:
nazwa_kompa$:*:2001:65534:Konto zaufania:/:/sbin/nologin |
W ten sposób utworzyliśmy
użytkownika bez możliwości logowania się na niego i z pustym hasłem. Teraz
musimy jeszcze dodać to konto do pliku haseł Samby ale w nazwie nie używamy
już znaczka $
# smbpasswd -a -m nazwa_kompa
Password changed for user nazwa_kompa$.
Oprócz tego do pliku haseł Samby musimy dodać użytkownika root
# smbpasswd -a root
New SMB password:
Retype new SMB password:
Password changed for user root.
i dwa razy podajemy jakieś hasło (nie musi być takie samo jak
systemowe).
Teraz przystępujemy do
konfiguracji Windozy. Wchodzimy do Właściwości systemu -> Nazwa komputera ->
Zmień. Zaznaczamy pole Domena i wpisujemy nazwę
domeny. Po chwili zostaniemy poproszeni o podanie nazwy użytkownika i hasła i
w tym momencie jako użytkownika podajemy root a hasło takie jakie
nadaliśmy mu przy dodawaniu do pliku haseł Samby. Ta czynność jest
wykonywana tylko raz przy pierwszym dołączaniu do domeny. Po zatwierdzeniu
enterem zostanie wyświetlone okienko witające nas w domenie. Po ponownym
uruchomieniu komputera wpisujemy już swój login i hasło takie jakie mamy na
serwerze.
I to by było na tyle. Have Fun ;-))
5. Od autora
Nie wiem jak wy ale ja od
razy zaniechałem logowania do domeny z WinXp, ponieważ system ten (w przeciwieństwie
do Win98) przenosi cały profil na serwer tzn. pulpit, ustawienia, moje
dokumenty itd., co zajmuje bardzo dużo miejsca, a stworzenie tutaj profilu
obowiązkowego (w sieci domowej) wydaje mi się minięciem z celem (chyba, że
zmienimy typ tego profilu z mobilnego na lokalny w zakładce Konta użytkowników,
wtedy będzie on przechowywany na dysku lokalnym). Natomiast logowanie do domeny
polecam jak najbardziej z systemów Win9x gdzie możemy sami zdecydować jakie
ustawienia eksportujemy na serwer.
UWAGA!!!
Logowanie z WinXP jest opisane na moim przykładzie i tylko po takiej
konfiguracji zaczęło funkcjonować. Jeżeli macie jakieś uwagi lub propozycje
proszę o kontakt arti(at)hello.pl
Przykładowy
skrypt logowania np. start.bat
@echo off
# mapowanie katalogu domowego
net use R: /home
# mapowanie innych udziałów
net time nazwa_netbiosowa_serwera /set
net use S: nazwa_netbiosowa_serwerajakiś_udział
net use T: nazwa_netbiosowa_serwerainny_udział
|
Pamiętajcie o tym, że skrypt ten najlepiej
napisać pod windowsem a potem dopiero przekopiować go na serwer, ponieważ
skrypt ten jest zwykłym skryptem DOSowym!!
Autor: Artur Kulda
arti(at)bsd4u.org
Powyższy artykuł został udostępniony na zasadach Licencji BSD |
Re: Samba - nie mylcie z tańcem ;-)) Dodane przez adx w dniu - 2004-04-24 19:40:49 | TCP_NODELAY wyłącza algorytm Nagle'a (standardowy dla wszystkich połączeń TCP), zbierający wychodzące pakiety w buforze. Bufor ten jest następnie wysłany dopiero po upływie pół sekundy lub wcześniej (wszystko zależy od tego, kiedy ostatnio próbowano coś wysłać). Celem miała być redukcja obciążenia łącza przez eliminowanie małych pakietów, ale w zasadzie w żadnym właściwie napisanym programie nie przynosi to żadnej korzyści, a jedynie opóźnienia. Mimo to rzadko programiści pamiętają o wyłączeniu tej opcji, a z przyczyn kompatybilności musi być ona włączona by default. | regedit Dodane przez wheeler w dniu - 2006-08-15 10:02:36 | To juz jest od bardzo dawna nieaktualne. Przyklad dotyczy wersji 2.2.7, jednak napewno od wersji 3.x.x nie ma potrzeby edytowania rejestru w windows. Na początku trzeba zmienić wpisy w rejestrze systemowym. Uruchamiamy regedit i przechodzimy do: [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControl\SetServices\Netlog
on\Parameters] i zmieniamy wartości poniższych kluczy na 0 "requiresignorseal"=dword:00000000 "signsecurechannel"=dword:00000000 |
Tylko zarejestrowani użytkownicy mogą pisać komentarze. Prosze zaloguj się i dodaj komentarz. Powered by AkoComment! |