<!doctype linuxdoc system>

<article>

<title>Samba Server: Korak za korakom
<author>Ying Zhang,
prevedel: Damir Horvat, <htmlurl name="damir@x-si.org"
url="mailto:damir@x-si.org">
<date>19. september 1999
<abstract>
Prevod skripta "Samba Server, Step-by-Step Guide" avtorja Yinga Zhanga
</abstract>

<toc>

<sect>Zahvala
<p>
Hvala vsem, ki so me tako ali drugače spodbujali pri uporabi Linuxa in Sambe
ter mi pomagali z nasveti in odgovori na moja ne vedno bistra
vprašanja.
<p>
Hvala Ying Zhangu za njegov skript Samba Server, Step-by-Step Guide.
<p>
Hvala tudi celotni skupini razvijalcev Sambe za dobro opravljeno delo!


<sect>Predstavitev
<p>
Ta dokument vas bo popeljal po nastavitvah Sambe v vašem linuxovskem
stroju. Ob koncu dokumenta boste imeli:
<itemize>
<item>nastavljen strežnik Samba v vašem linuxovskem stroju za skupno rabo,
<item>nastavljene odjemalce Windows 95/98 za dostop do linuxovskega stroja.
</itemize>
Ta dokument (HOW-TO) ni nadomestek za odlično dokumentacijo, priloženo 
distribuciji Sambe. Pomagal naj bi k hitri in delujoči nastavitvi
Sambe. Preberite si tudi izvirno dokumentacijo Sambe!

<sect1>Pravno stališče
<p>
Ne jamčim za točnost in pravilnost informacij, ki jih predstavljam v
tem dokumentu. V nobenem smislu nisem povezan s skupino, ki razvija
Sambo, in tu v bistvu opisujem le tisto, kar sem naredil za to, da bi
strežnik Samba deloval v mojem linuxovskem stroju.  Ne valite krivde
mene, če se vam karkoli sfiži. Vsega se lotevate na lastno
odgovornost!
<p>
Če pa imate kakšno vprašanje, komentar ali predlog, mi pišite na <htmlurl
name="damir@x-si.org" url="mailto:damir@x-si.org">.  Po najboljših 
močeh se bom potrudil in vam odgovoril, ali vas vsaj
napotil k boljšim virom pomoči.
<p>
Dokument je preveden z dovoljenjem avtorja.

<sect1>Ozadje
<p>
Moje domače krajevno omrežje sestavljajo trije računalniki, en
linuxovski stroj in dva z Windows 98.  Linuxovski stroj opravlja cel
kup procesov, eden od njih je tudi strežba datotek mojima
računalnikoma Win98 prek strežnika Samba.
<p>
Za lažje razumevanje sem vse tri stroje poimenoval. Linuxovski stroj 
je Homer, stroja z Win98 pa sta Lisa in Bart. Vsi trije sestavljajo 
delovno skupino Simpsons. Homerjev naslov IP je 192.168.0.1,
Bartov 192.168.0.2, Lisin pa 192.168.0.3.
<p>
Delovne dokumente, domače naloge in druge osebne dokumente bom
shranjeval v imeniku za skupno rabo (shared directory) z imenom data. 
Ta imenik bo dostopen z obeh strojev z Win 98 (mapiran kot disk M:).
<p>
Rad bi imel tudi imenik za skupno rabo, do katerega bi imel dostop
vsakdo; to bo imenik public. Ta bo dostopen z obeh strojev z Win98 in
tudi vsakomur, ki bo imel račun (account) v Homerju.
<p>
Nazadnje pa še tole: Homer bo tudi primarni strežnik WINS za moje
krajevno omrežje, tako da ni treba imeti datoteke <file>lmhosts</file>
v Lisi in Bartu.


<sect>Zahteve
<p>
Pri snovanju tega dokumenta predpostavljam, da premorete:
<itemize>
<item>osnovno znanje, kaj Samba je in zakaj jo želite imeti, 
<item>delujoče omrežje TCP/IP, 
<item>delujoč linuxovski stroj, v katerega boste namestili Sambo,
<item>potrebne pakete za kompajliranje linuxovskih programov,
<item>delujoče stroje z Windows 95/98, pripravljene za povezovanje,
<item>in da nimate že nameščene Sambe; če jo imate, jo zaustavite
in odstranite.
</itemize>

<sect1>Nastavitveni načrt
<p>
Zdaj morate narediti načrt, kako boste nastavili Sambo. Opisal vam
bom svojega; morda bo kaj prišlo v poštev tudi pri vas.
<p>
Homer ima nameščen RedHat Linux 5.1 s kernelom 2.2.3, zato bom opisal
namestitev Sambe za RedHat (z RPM). Če uporabljate drugo
distribucijo Linuxa, verjetno ne boste mogli dobesedno slediti temu, kar
delam jaz!
<p>
V Barta in Liso je nameščen Windows 98. Ne bo velikih razlik, če
imate Windows 95. Če imate nameščen Windows NT, bodo koraki malce
drugačni, vendar gre za isto osnovo.
<p>
Ker imam v omrežju samo tri računalnike, me varnost čisto nič ne skrbi. 
Uporabljal bom stopnjo varnosti "share level" v Sambi. V
resnici uporabljam en račun v obeh, Lisi in Bartu, in TweakUI za
samodejno prijavo.

<sect1>Kako do Sambe
<p>
Med pisanjem tega dokumenta je 2.0.3 zadnja stabilna različica Sambe.
Potrebovali boste izvirno kodo, datoteka je samba-2.0.3.tar.gz, ki jo
dobite na domači strani Sambe, <url url="http://www.samba.org/">.


<sect>Namestitev Sambe
<p>
Najprej razširite izvirno kodo Sambe. Predpostavljam, da ste jo
prenesli v imenik <file>/tmp</file>, in naredite naslednje (ni še
treba, da ste root):
<p>
<tscreen><verb>
$ tar -zxvf samba-2.0.3.tar.gz
</verb></tscreen>
<p>
Če je vse potekalo v redu in niste dobili sporočil o napakah, bi
morali imeti razširjene datoteke v imeniku <file>samba-2.0.3</file>.
S Sambo dobite kup paketnih skriptov. Najzanimivejši so tisti, ki
naredijo pakete RPM za nas. Pa naredimo tako (zdaj morate biti
root):
<p>
<tscreen><verb>
$ su
# cd samba-2.0.3/packaging/RedHat
# sh makerpms.sh
</verb></tscreen>
<p>
Nekaj časa bo trajalo, preden se naredijo paketi RPM. Če je šlo kaj
narobe, bo treba, uh!, pač prebrati dokumentacijo Sambe. Če je šlo
vse kot po maslu, sta se naredili naslednji datoteki:
<itemize>
<item>/usr/src/redhat/RPMS/i386/samba-2.0.3-19990228.i386.rpm
<item>/usr/src/redhat/RPMS/i386/samba-2.0.3-19990228.src.rpm
</itemize>
<p>
Super, ne? No, pa namestimo Sambo:
<tscreen><verb>
# rpm -Uvh /usr/src/redhat/RPMS/i386/samba-2.0.3-19990228.i386.rpm 
</verb></tscreen>
<p>
Ali bi sploh lahko bilo še enostavneje? Zdaj bomo naredili novega uporabnika
in novo skupino, nato pa nov imenik. Priredili bomo nekaj datotek uporabi 
"Samba Web Administration Tool - SWAT".


<sect>Ustvarjanje
<p>
Hmm, tudi kakega boljšega naslova bi se lahko domislil, vendar bomo tu
ustvarjali (naredili) uporabniške račune, imenike, skupine in datoteke.

<sect1>Nov uporabnik in skupina
<p>
Ker bomo uporabljali stopnjo varnosti "share level", moramo narediti
gostiteljski račun (guest account). Ta uporabnik bo smbuser in bo pripadal
skupini smb.
<p>
Vse datoteke, ki jih Bart in Lisa pišeta v imenika za skupno rabo, data
in public, bodo v lasti smbuserja in bodo sodile v skupino smb.
<p>
Če imate Linuxconf, uporabite to za umazano delo. Drugače pa
uporabite ukaza useradd in groupadd za ustvarjanje novih računov.
<enum>
<item>Naredite skupino smb.
<item>Naredite uporabnika smbuser, domači imenik naj bo v /home/public.
</enum>
Preprečite prijavo za račun smbuser, ker se dejansko nihče ne bo
prijavljal pod tem imenom.

<sect1>Imenik <file>pub</file>
<p>
Zdaj naj bi že imeli imenik <file>/home/public</file>. Bil naj bi v
lasti smbuserja in pripadal skupini smb. Ker bodo vse datoteke v tem
imeniku vedno pripadale skupini smb, bomo tako nastavili SGID. Vsak
bo imel možnost brati in pisati v ta imenik, zato bodo dovoljenja
nastavljena tako:
<p>
<tscreen><verb>
# chown smbuser:smb /home/public
# chmod 2777 /home/public
</verb></tscreen>
<p>
Vsaka datoteka, ki je narejena v imeniku <tt>/home/public</tt>,
pripada skupini smb, ne glede na to, kdo jo naredi.

<sect1>Imenik <file>data</file>
<p>
Moj data imenik je v <file>/home/samba/data</file>. Ta imenik bo
dostopen samo določenim ljudem, tistim, ki pripadajo skupini smb. To
naredimo takole:
<p>
<tscreen><verb>
# mkdir /home/samba
# chown smbuser:smb /home/samba
# chmod 2770 /home/samba

# mkdir /home/samba/data
# chown smbuser:smb /home/samba/data
# chmod 2770 /home/samba/data
</verb></tscreen>
<p>
Tudi na te imenike sem nastavil SGID tako, da vse, kar se naredi v teh
Imenikih, pripada skupini smb.
<p>
Ker hočem tudi jaz imeti dostop do teh imenikov, se dodam v skupino smb. 
To lahko naredim z ukazom Linixconf ali pa ročno spremenim
datoteko <file>/etc/group</file>.

<sect1>Pregled datoteke <file>hosts</file>
<p>
Imeli naj bi datoteko <file>/etc/hosts</file>, ki mapira imena
gostiteljev (host names) v naslove IP. Moja je videti takole:
<p>
<tscreen><verb>
# /etc/hosts

127.0.0.1       localhost       localhost.localdomain
192.168.0.1     homer
192.168.0.2     bart
192.168.0.3     lisa
</verb></tscreen>

<sect1>Ustvarjanje datoteke lmhosts
<p>
Datoteka lmhosts mapira imena gostiteljev (host names) ali naslove IP
LanManagerju imena računalnikov. Normalno bi verjetno radi imeli enaka
imena za LanManager in imena gostiteljev:
<tscreen><verb>
# /etc/lmhosts

localhost        homer
bart             bart
lisa             lisa
</verb></tscreen>
<p>
Malo smešno je videti, ampak tisto na levi je ime gostitelja,
tisto na desni pa ime LanManagerja.


<sect>Uporaba SWAT
<p>
Za uporabo SWAT moramo preveriti datoteke <file>/etc/services</file> in
<file>/etc/inetd.conf</file>. Po izvirnih nastavitvah
SWAT deluje na vratih 901. To sicer lahko spremenimo, vendar pustimo
zaenkrat tako.
<p>
Poglejmo datoteko <file>/etc/services</file>, ali je v njej naslednja
vrstica:
<p>
<tscreen><verb>
swat      901/tcp     #Add swat service used via inetd
</verb></tscreen>
Če je, dobro. Če je ni, jo dodajte na konec datoteke.
<p>
Potem preverimo datoteko /etc/inetd.conf, ali je v njej vrstica:
<tscreen><verb>
swat stream tcp nowait.400 root  /usr/sbin/swat swat
</verb></tscreen>

<sect1>Varovanje SWAT
<p>
Če vas varovanje SWAT ne zanima, lahko preskočite to poglavje. Sam se
počutim veliko bolje, če mi "TCP wrappers" ščitijo SWAT.  Spremenim
prejšnjo vrstico takole:
<p>
<tscreen><verb>
swat stream tcp nowait.400 root /usr/sbin/tcpd /usr/sbin/swat
</verb></tscreen>
<p>
Če ne veste, kaj so "TCP wrappers", si preberite strani man:
<tscreen><verb>
# man hosts.allow
</verb></tscreen>
<p>
Vaš <file>/etc/hosts.deny</file> naj ima vrstico, ki pravi
<tt>ALL:ALL</tt>. Dodajmo še to v vašo datoteko
<file>/etc/hosts.allow</file>:
<p>
<tscreen><verb>
# swat:      127.0.0.1  192.168.0.
</verb></tscreen>
<p>
To dovoljuje Homerju, Lisi in Bartu dostop do SWAT.

<sect1>Poganjanje SWAT
<p>
Najprej še enkrat zaženimo datoteko inetd:
<tscreen><verb>
# killall -HUP inetd
</verb></tscreen>
<p>
Zdaj pojdite s svojim najljubšim internetnim brskalnikom na naslov:
<tt>http://192.168.0.1:901</tt>. Če je vse v redu, bi morali vnesti
uporabniško ime in geslo. Za uporabniško ime vnesite root, za geslo
pa svoje root geslo.

<sect1>Nastavitev Sambe
<p>
SWAT zdaj deluje. Preskusite vse gumbe in se spoznajte s njim. SWAT
ustvari <file>/etc/smb.conf</file> za vas. Zdaj bomo malo pogoljufali.
Namesto da bi šli skupaj čez vse vrstice datoteke
<file>/etc/smb.conf</file>, vam bom napisal svojo (imeni računalnika
in delovne skupine sta spremenjeni, da zaščitim svojo sistemsko
identifikacijo).
<p>
Oglejte si to in preprosto prekopirajte v svojo datoteko 
<file>/etc/smb.conf</file>. Ne pozabite je prirediti svojemu
sistemu:
<p>
<tscreen><verb>
# Samba config file created usin SWAT
# from bart (192.168.0.2)
# Date: 1999/02/02 18:27:26

#Global parametes
        workgroup = SIMPSONS
        server string = Samba SMB Server
        interfaces = 192.168.0.1/24 127.0.0.1/24
        bind interfaces only = Yes
        security = SHARE
        log file = /var/log/samba/log. %m
        max log size = 50
        read bmpx = No
        time server = Yes
        socket options = TCP_NODELAY
        os level = 65
        preferred master = Yes
        dns proxy = No
        wins support = Yes
        guest account = smbuser
        hide dot files = No

 [public]
        comment = Public
        path = /home/public
        read only = No
        create mask = 0664
        directory mask = 0775
        guest ok = Yes

 [data]
        comment = Data
        path = /home/samba/data
        read only = No
        create mask = 0660
        directory mask = 0770
        guest ok = Yes
</verb></tscreen>

<sect>Zagon Sambe
<p>
Sambo lahko zaženete na dva načina: uporabite SWAT ali z ukazom v
konzoli. Če bi radi uporabili SWAT, pojdite na stran STATUS in
kliknite start SMBD in NMBD. Če je bila Samba že zagnana, pritisnite
stop in še enkrat start, da boste videli nastavitveno datoteko.
<p>
Za zagon Sambe z ukazom v konzoli:
<tscreen><verb>
# /etc/rc.d/init.d/smb stop
# /etc/rc.d/init.d/smb start
</verb></tscreen>
<p>
Če niste opazili nobenih napak, potem vse deluje. No, pa jo preskusimo.

<sect1>Preskušanje Sambe
<p>
Poglejmo, kaj sploh deluje:
<tscreen><verb>
# smbclient -L localhost
</verb></tscreen>
<p>
Morda vpraša za geslo. Če vpraša, pritisnite Enter, in videti bi morali
nekaj podobnega:
<tscreen><verb>
Domain=[SIMPSONS]    OS=[Unix]    Server=[Samba 2.0.3]
     Sharename            Type         Comment
     ---------            ----         -------
     public               Disk         Public
     data                 Disk         Data
     IPC$                 IPC          IPC Service (Samba SMB Server)

     Server                            Comment
     -----                             -------
     HOMER                             Samba SMB server

     Workgroup                         Master
     ---------                         ------
     SIMPSONS                          HOMER
</verb></tscreen>
<p>
Vse v redu? Super! Zdaj nam preostaneta le še stroja z Windows.


<sect>Nastavitev sistema Windows 
<p>
Ker strežnik Samba deluje v Homerju, je zdaj čas, da se posvetimo tudi
Bartu in Lisi. Ta del je veliko lažji. Najprej se prepričajmo, ali so
omrežne komponente pravilno nameščene in v <em>Nastavitve/Nadzorna
plošča/Sistem/Upravitelj naprav</em> ni nobenih konfliktov.
<p>
Pazite, da so v <em>Omrežnih nastavitvah/zavihek Osebna izkaznica</em>
navedena pravilna imena računalnika in delovne skupine. Za naš
zgled: Bart naj bi imel ime računalnika Bart in delovno skupino
Simpsons. Enako velja za Liso.
<p>
Nadziranje dostopa naj bo na ravni skupne rabe. Pri lastnostih pa
odkljukajmo Wins server za Homerja.
<p>
Da bi spremembe začele veljati, je treba znova zagnati računalnik.
Ko se naloži Windows, bi morali v <em>Omrežni soseščini</em> videti
tudi Samba Server.
<p>
V naslednjem poglavju si bomo ogledali, kako zaščititi Sambo pred
zunanjimi napadi.


<sect>Varovanje Sambe
<p>
Vsakič, ko dodaste servis, je vaš stroj bolj izpostavljen vlomilcem.
Tu bomo obravnavali zaščito strežnika Samba.

<sect1>S Sambo
<p>
V nastavitveni datoteki Sambe <file>/etc/smb.conf</file> lahko
povemo, katerim vratom naj prisluškuje:
<p>
<tscreen><verb>
interfaces = 192.168.0.1/24 127.0.0.1/24
bind interfaces only = Yes
</verb></tscreen>
<p>
Tu seveda navedite svoje naslove IP. Ker sem nezaupljiv, bom dodal
še eno plast varovanja, filtriranje vrat.

<sect1>Filtriranje vrat
<p>
SMB uporablja vrata 137-139. Da bi bil varen, blokiram TCP in UDP
vrata 137-139. Če uporabljate različico 2.0 kernela, boste verjetno
uporabljali program <tt>ipfwadm</tt>. Z jedrom 2.1 in 2.2 uporabljajte
<tt>ipchains</tt>.

<sect2>Uporaba ipfwadm
<p>
Dodajte naslednje vrstice v datoteko /etc/rc.local:  
<tscreen><verb>
ipfwadm -I -P tcp -a deny -S any/0 137:139 -W eth0
ipfwadm -I -P udp -a deny -S any/0 137:139 -W eth0
ipfwadm -O -P tcp -a deny -S any/0 137:139 -W eth0
ipfwadm -O -P udp -a deny -S any/0 137:139 -W eth0
</verb></tscreen>

<sect2>Uporaba ipchains
<p>
Dodajte naslednje vrstice v datoteko <file>/etc/rc.local</file>:
<tscreen><verb>
ipchains -A input -p tcp -j DENY --destination port 137:139 -i eth0
ipchains -A input -p ucp -j DENY --destination port 137:139 -i eth0
ipchains -A output -p tcp -j DENY --destination port 137:139 -i eth0
ipchains -A output -p ucp -j DENY --destination port 137:139 -i eth0
</verb></tscreen>


<sect>Konec
<p>
S tem končujem mini postopni vodič po namestitvi strežnika Samba. Ta
dokument nikakor ni nadomestek za izvirno dokumentacijo!  Če
potrebujete več informacij, pojdite na naslov <url
url="http://www.samba.org/"> in preberite njihovo dokumentacijo.
<p>
Upam, da se vam bo zdel ta dokument uporaben.
</article>
