Samba kasutamine

Allikas: Kuutõrvaja
Redaktsioon seisuga 23. september 2010, kell 00:13 kasutajalt Jj (arutelu | kaastöö)
(erin) ←Vanem redaktsioon | Viimane redaktsiooni (erin) | Uuem redaktsioon→ (erin)

Konfiguratsioonifail

Samba kasutamise juures on kõige keerulisem koostada sobiv konfiguratsioonifail, mille nimi ja asukoht sõltub sellest, kuidas Samba installeeriti, kuid on tavaliselt /etc/smb.conf või /etc/samba/smb.conf või /usr/local/samba/lib/smb.conf

Konfiguratsioonifailis on kahte tüüpi osi:

   * üks üldosa (global) - reguleerib serveri toimimist; seal on näidatud Samba serveri üldised omadused. Näiteks, millisesse Windowsi töögruppi server
     kuulub.
   * mitu teenuse osa - defineerib faili- või printimisteenuse. Näiteks tehakse kõigile kasutajatele ainult lugemiseks kättesaadavaks UNIXi  
     kataloogi /home/avalik sisu. 

Konfiguratsioonifaili osa nimi kirjutatakse kantsulgude vahele ning konfiguratsiooniparameetritele omistatakse väärtus võrdusmärgiga. Kommentaarideks loetakse read, mida alustatakse # või ; märgiga. Rida võib jätkata tagurpidi kaldkriipsuga (\), kuid see peab olema ise viimane sümbol real. Tühja rida ignoreeritakse.

Toome näite konfiguratsioonifailist eesmärgiga selgitada selle süntaksit; viited kommenteeritud konfiguratsioonifailidele leiate altpoolt.

[global]
  workgroup = ZOO
  security = user
  server string = Samba server %v

# Kasutaja priit jagu
[homes]
  comment = kasutaja %u kodukataloog
  path = /home/%u
  writeable = yes
  browseable = no

; koigile lugemiseks
[lugemik]
  comment = Koigile lugemiseks
  path = /home/lugemik
  writeable = no
  public = yes

[printers]
  path = /var/spool/lpd/samba
  comment = Mustvalge HP 6MP PostScript printer
  public = yes
  printable = yes

Samba server pakub faili-ja printeriteenuseid ja seepärast peab iga teenuse juures olema tee. Tee näitab vastava UNIXi kataloogi nime või printeri spooliks kasutatavat kataloogi. Tee ja muud teenuste omadused näidatakse tavaliselt konfiguratsiooniparameetrite abil iga teenuse juures eraldi. Näiteks on teenuse lugemik puhul keelatud sinna kirjutamine.

Enamusel parameetritel on vaikeväärtused. Näiteks võiks jätta teenuses lugemik ära rea writeable, kuivõrd 'no' on ka parameetri väikeväärtus. Vaikeväärtuste väljakirjutamine aitab aga selgemini mõista teenuse iseloomu.

Mõnda parameetrit on lubatud kasutada vaid üldosas (security), mõnda ainult teenuse juures (path), mõnda aga mõlemas (browseable). Kehtima hakkab teenuse juures viimasena näidatud.

Paljudel parameetritel on olemas sünonüümid, näiteks düskraafide jaoks on tehtud lisaks browseable'le browsable. Sarnaselt on sama tähendusega public ja guest ok.

Erilisteks eeldefineeritud osadeks on ka homes, printers ja netlogon.

Samba käivitamine ning seiskamine

Samba server töötab tavaliselt juurkasutaja õigustes ning ta käivitatakse süsteemi alglaadimisskriptidest. Sambat saab kävitada kahte moodi, kas iseseisva serverina või superserveri Inetd abil. Kui Sambat kasutatakse tõenäoliselt harva ja masina ressurssidega on kitsas, siis pole põhjust pidevalt protsesse mälus hoida. Siiski peab arvestama, et Samba serveri poole pöördumisel läbi Inetd kulub veidi rohkem aega.

Iseseisva serverina

Tuleb käivitada deemonitena kaks programmi:

   * nmbd - teeb alamvõrgule teatavaks Samba serveri nime ning tema abil saab tööle seada WINSi nimeserveri
   * smbd - teenindab faili-ja printeriteenuste kasutamise kohta tulevaid päringuid 

Serveri käivitamiseks ja seiskamiseks sobib kasutada näiteks sellist skripti

#!/bin/sh
case $1 in
            'start')
                    echo "Starting smbd..."
                    /usr/local/samba/bin/smbd -D
                    echo "Starting nmbd..."
                    /usr/local/samba/bin/nmbd -D
                    ;;
            'stop')
                    echo "Stopping smbd and nmbd..."
                    killall smbd
                    killall nmbd
                    rm -f /usr/local/samba/var/locks/smbd.pid
                    rm -f /usr/local/samba/var/locks/nmbd.pid
                    ;;
            *)
                    echo "usage: smb {start|stop}"
                    ;;
    esac

Superserveri Inetd abil

Lisage Inetd konfiguratsioonifaili /etc/inetd.conf read

netbios-ssn stream tcp nowait root /usr/local/samba/bin/smbd smbd
netbios-ns dgram udp wait root /usr/local/samba/bin/nmbd nmbd

Peale Samba konfiguratsioonifaili muutmist ei ole tavaliselt vajadust serverit taaskäivitada. Server loeb iga minuti järel automaatselt läbi konfiguratsioonifaili ning samuti igal kliendi pöördumisel.

Samba kasutamine

Kuna Samba server töötab juurkasutaja õigustes, siis valesti konfigureeritud Samba server võib ohustada kogu süsteemi turvalisust. Sambat kasutatakse

   * jaosrežiimis või
   * kasutajarežiimis 

Järgides neid viiteid saate teada, millistel tingimustel kasutada üht või teist režiimi ning kuidas seda teha.

Failiteenuse puhul saab kasutajate lugemise ja kirjutamise õigusi määrata Samba konfiguratsioonifailist, kuid need ei ületa vastavaid UNIXi failisüsteemi piiranguid. UNIXi kvoot toimib ka Samba failiteenuse jaoks.

Kui Samba server täidab kliendi korraldusi, siis kaasneb sellega tavaliselt protsesside käivitamine, näiteks failide tekitamine või printimine. Protsessi käivitamiseks peab Samba otsustama millise UNIXi kasutaja õigustes seda teha. Kuna Windowsi maailmas on kasutajate ja nende õigustega suhteliselt ebamäärane olukord, siis seda enam tuleb Samba konfigureerimisel tähele panna, millistes õigustes UNIXi masinas Samba serveri kasutajad tegutsevad.

Alamvõrgu konfigureerimine

Windowsi masinad kasutavad oma teenuste jagamisel ja nende poole pöördumisel SMB protokolli, mis toimib vaid samas alamvõrgus. Paraku UNIX ei toeta otseselt SMB võrguprotokolli, küll aga on võimalik standardse TCP/IP protokolli peal emuleerida SMBd. Kuna TCP/IP on väga levinud võrguprotokoll, siis oskavad ka enamus uusi Windowsi operatsioonisüsteeme (95/98/2000/NT) samuti emuleerida TCP/IP peal SMBd ja seda nimetatakse NBT (NetBIOS over TCP/IP) protokolliks. Tänu sellele on võimalik panna SMB protokolli kasutades omavahel suhtlema UNIXi ja Windowsi masinad, kusjuures UNIXi poolel "räägib" Windowsi võrgu keelt SMB Samba server.

Kuna SMBd ainult emuleeritakse ja reaalselt asub all TCP/IP, siis peab kõigi osavõtvate masinate juures konfigureerima TCP/IP võrgu, so näitama ära vähemalt:

   * masina IP-aadressi ja DNSi nime
   * broadcasti aadressi
   * alamvõrgu maski 

Lisaks tuleb Windowsi masinatele omistada ka NetBIOSi nimed.

Erinevates alamvõrkudes töötavaid Windowsi masinaid koos tööle panna ei pruugi olla lihtne, näiteks tekitada olukord, et ühes kontoris asuvas masinas töötav programm saaks printida teises kontoris asuvale printerile.

Siiski, kui Samba server asub korraga mitmes alamvõrgus on võimalik korraldada asjad nii, et Samba jagab ühe võrgu teenuseid edasi teise alamvõrgu klientidele. Näiteks printerit.

Samba server tegutseb alati mingi UNIXi kasutaja õigustes

Konfiguratsioonifaili teenuste sektsioonid konfigureerivad teenused, kusjuures teenust kasutatakse alati mingi UNIXi kasutaja õigustes. Näiteks kirjeldame skeemiga, kuidas toimub sellise teenuse kasutamine kasutajaõiguste seisukohast

[www]
  comment = Veebi sisu
  path = /home/html
  writeable = yes
  browseable = no
  force user = www
  force group = veeb
  directory mode = 755
  create mode = 744
  valid users = mart priit

Tegemist on failiteenusega //samba/www, mille tarvitamine seisneb võimaluses tegeleda UNIXi kataloogi /home/html alla jäävate failide ja kataloogidega.

Teenust on lubatud kasutada ainult kasutajatel mart ja priit, kuid nad tegutsevad kasutaja www õigustes


              Samba serveri              /home/html
 Windows       teenus www                kataloog

 |   | -- > -----|   |-------- > ----------|   |
            
              ligi lubatakse            tegutsetakse kasutaja www
              vaid mart ja priit        ja grupi veeb õigustes;
                                        luuakse faile ja katalooge
                                        loabittidega vastavalt
                                        744 ja 755


Failiteenuse puhul saab kasutajate lugemise ja kirjutamise õigusi määrata Samba konfiguratsioonifailist, kuid need ei ületa vastavaid UNIXi failisüsteemi piiranguid. UNIXi kvoot toimib ka Samba failiteenuse jaoks. Samba poolt kasutatav printer on tavaliselt defineeritud UNIXi printerite kirjeldusfailis.

Kui konfigureerida lihtsalt selline failiteenus

[unixikasutajad]
  comment = UNIXi kasutajatele
  path = /home/unixikasutajad
  writeable = yes
  browseable = yes

siis toimetab seal igaüks oma UNIXi kasutaja õigustes.

Muutujad

Konfiguratsioonifailis on väga otstarbekas kasutada muutujaid, mille väärtus sõltub sellest kes, kust, kunas jne Samba serveri poole pöördus. Näiteks võiks serveri stringi esitada selliselt

server string = Samba, versioon %v

Töö ajal asendatakse %v Samba versiooninumbriga, näiteks 2.0.7

Teised enamkasutatavad muutujad

   * %u - kasutaja nimi
   * %g - kasutaja esmase grupi nimi
   * %H - kasutaja kodukataloog
   * %v - Samba versioon
   * %h - Samba serveri UNIXi nimi
   * %m - kliendi NetBIOSi nimi
   * %L - Samba serveri NetBIOSi nimi
   * %M - kliendi masina UNIXi nimi
   * %d - Klienti teenindava serveri protsessi ID
   * %a - kliendi arhitektuur
   * %I - kliendi IP-aadress
   * %T - käesolev aeg

Kasutajate kodukataloogid

Paljude kasutajate korral on tülikas igaühele tekitada isiklikku failiteenust. Seepärast on välja mõeldud eriline teenus nimega homes. Kui Samba serveri poole pöördub klient ja ta soovib kasutada näiteks teenust mart, mida aga Samba konfiguratsioonifailis pole ning olemas on teenus homes, siis vaadatakse süsteemiparoolifailist järele, kas leidub kasutaja mart. Kui leidub, siis tekitatakse automaatselt failiteenus mart, mille sisuks saab UNIXi kasutaja mart kodukataloogi sisu.

Tekitame näieks teenuse homes eesmärgiga anda kasutajale tema kodukataloog ja kui ta sinna faile või katalooge moodustab, siis tekivad need õigustega 700

[homes]
  comment = Kasutaja %u kodukataloog
  browseable = no
  writable = yes
  create mode = 700
  directory mask = 700

Avalik failiteenus

Avalike failiteenuste puhul on ikka see oht, et failidel on kas liiga palju või liiga vähe õigusi. St kui üks kasutaja moodustab avalikku failiteenusesse kataloogi, siis ei saa teine sinna sisse faile salvestada või hullem, saab sealt faile kustutada. Selleks, et tekitada kõigile enamvähem vastuvõetavat olukorda, tuleb kombineerida Samba ja UNIXi failisüsteemi vahendeid (eelkõige ettenägelik kasutajate UNIXi gruppidesse jaotamine, kasutades võimalust teha üks kasutaja mitme grupi liikmeks).

Näiteks tekitame failiteenuse, kuhu saavad ligi vaid kasutajad mart, priit, manna ja riis. Nad saavad üksteise poolt moodustatud faile muuta ja kataloogidesse salvestada. Samuti faile kustutada, kuid faili omanikuks jääb faili tekitaja.

[mpmr]
   comment = mart, priit, manna ja riis tegutsevad siin
   path = /home/mpmr
   writeable = no
   create mode = 770
   directory mode = 770
   valid users = mart priit manna riis

Absoluutselt kõigile kasutajatele lugemiseks ja kirjutamiseks mõeldud failiteenus. Kõik toimingud tehakse aga UNIXi kasutaja samba õigustes

[sodipodi]
  comment = Kõigile kasutajatele lugemiseks ja kirjutamiseks
  path = /home/sodipodi
  public = yes
  writeable = yes
  create mode = 777
  directory mask = 777
  guest account = samba
  guest only = yes

Kui viimased kaks parameetrit ära jätta, siis saavad kasutajad tegeleda avaliku teenusega endiselt, kuid toimetavad enda UNIXi kasutaja õigustes.

Võimalik on tekitada mitu sarnast avalikku teenust nii, et nad töötavad erinevate kasutajate õigustes.

Printeriteenus

Soovides teha Samba kasutajaile vabalt kättesaadavaks kõik UNIXi printerikirjeldusfailis defineeritud printerid, kasutage sellist teenust

[printes]
  comment = Koik UNIXi prinerid
  path = /tmp
  browseable = yes
  printable = yes
  public = yes
  guest account = samba
  guest only = yes

Soovides konfigureerida ühte konkreetset printerit, tekitage näiteks selline sektsioon

[hp6mp]
  comment = HP 6MP - mustvalge PostScript printer
  printable = yes
  print command = /usr/bin/lpr -Php6mp -r %s
  printer = lj-6
  printing = BSD
  public = yes
  guest account = samba
  guest only = yes

parameetriga print command on näidatud otsesõnu, millise UNIXi käsuga printida ja kuidas seda teha. Antud juhul saadetakse trükitav fail (%s) UNIXi printerisse hp6mp.

Printeri kasutamiseks tuleb Windowsis sobivad printeri draiverid intalleerida, kusjuures peab arvestama seda, kuidas printer on UNIXis kirjeldatud.

Kui Windowsi programm prindib Windowsis konfigureeritud printerile, siis ta kasutab selles konfiguratsioonis näidatud printeri draivereid. Nii väljub Windowsi masinast teatud printkeeles ettevalmistatud fail ja liigub printeri poole. Antud juhul liigub see fail printerisse läbi UNIXi printerikirjeldusfailis näidatud filtrite.

Soovides printida UNIXi küljes olevale printerile nimega otse ja kasutades Windowsis selle printeri enda draivereid, tarvitage näiteks sellist printerikirjeldusfaili printerisektsiooni

otse:\
       :sd=/var/spool/lpd/otse:\
       :mx#0:\
       :sh:\
       :lp=/dev/lp0:\
       :if=/var/spool/lpd/otse/otse.sh:


ja filtrit otse.sh

#!/bin/sh
cat -

Seesuguse asjakorralduse puhul liigub Windowsis sobivalt ettevalmistatud printerikeelne bitijada läbi UNIXi ilma, et seal midagi muudetakse edasi printerisse.

Sellesse filtrisse võib kirjutada juurde mõned printerikasutust logivad read.

Teeninduspiirkonna määramine

Kui Samba serveriks olevasse UNIXi masinasse on installeeritud mitu võrgukaarti, siis parameetri interfaces abil saab näidata, milliste kaartide küljes olevaid alamvõrke teenindatakse. Näiteks määrame Samba teenindama alamvõrke 192.168.1.0 (võrgumaskiga 255.255.255.0) ja 192.168.2.128 (võrgumaskiga 255.255.255.224) lisades üldossa rea

interfaces 192.168.2.128/24 192.168.2.128/255.255.255.224

Võrgumaski võib näidata esimeste ühtede bittide arvuga (24 vastab 255.255.255.0) või tavalise neljaosalise maskiga (255.255.255.224, millele vastab ühtede arv 27).

https://wiki.itcollege.ee/index.php/Samba_jõudluse_parandamine