Samba-palvelin


Teknistä tietoa
Asennus
Demonit
Demonien käynnistäminen
Käyttäjien ja ryhmän luominen
Käyttäjän poistaminen
Hakemistorakenne
Verkkojuttuja
smb.conf
Samban testaaminen
 
 

Tässä ohjeistuksessa on tarkoitus antaa kuva siitä, miten smb-protokollaa voidaan hyödyntää samballa ja parilla muulla Sambaan olennaisesti liittyvällä ohjelmalla.
Tästä eteenpäin, viitatessani Sambaan, mikä on Linuxille suunniteltu palvelinpalvelu, viittaan samalla myöskin smb:hen (server message block, josta myös käytetään
session message block). Smb taas on lähinnä Windowsien käyttämä siirtoprotokolla. Tässä ohjeistuksessa oletan myös, että tiedät jonkin verran Linuxista ja sen
toiminnasta.

Sambaa käytetään lähinnä kovalevyjen ja tulostimien jakamiseen. Sitä voidaan hyödyntää kirjautumispalveluna ja siitä voidaan myös tehdä Windows-verkkojen
pääselainpalvelin. Samba toimii kaikissa 3.11/95/98/ME/NT -Windowseissa. Jos haluaa käyttää 3.11, on haettava microsoftin sivuilta tcp/ip tuki ja
win32s.dll-tiedosto, jotta Samba saataisiin toimimaan. Windows 95 lähtien ei tarvitse hakea mitään lisäosasia, tuki on jo sisäänrakennettu.

Tässä ohjeistuksessa käyn pääasiallisesti läpi seuraavat kohdat:

          · Linux levytilan jako Windows-koneille

          · Samba-jaon käyttö Linux- koneilla

          · Samba-kirjoittimen jako Windows-koneille

          · Windows-kirjoittimen jako Linux-koneille

Varaus: Tässä ohjeistuksessa esitellyt toimenpiteet voivat toimia tietyissä ympäristöissä hiukan eri tavalla. Kaikkien Samban ominaisuuksien toimintaa on hankalaa
kertoa, joten pyrin tekemään yleisimmissä verkkoympäristöissä toimivat ohjeet. Tämän vuoksi en pyrikään selostamaan kaikka yksityiskohtia.

Lisätietoja voi hakea osoitteesta www.samba.org

Teknistä tietoa sambasta lyhyesti

Samba käyttää tcp/ip-protokollaa ja sen liitännäisenä smb:tä (server message block). Smb on Lanmanagerin alainen protokolla, joka käyttää NetBIOS-rajapinnan
välityksellä alla olevia protokollia. Näiltä vaaditaan NetBIOS:in edellyttämät palvelut. NetBIOS hoitaa mm. käyttäjätietojen siirtämisen.

Vaatimukset:

          · käsitys siitä, mihin Samba haluat käyttää
          · toimiva tcp/ip-verkko ja tietoa verkkon toiminnasta
          · toimiva Linux-kone, jolle asennat Samban
          · tarvittavat paketit ohjelmien asetamiseen Linuxiin
          · toimiv(i)a Windows 3.1195/98/ME/NT/2000 -koneita jakojen käyttämiseen

Asennus

Useimmissa Linuxin levitysversioissa Samba tulee cd:n mukana. Jos se ei ole tullut tai haluat varmistaa että sinulla on viimeisin versio, Samban voi ladata
www.samba.org:ista tai siihen liittyviltä mirror-sivuilta. Paketteja on erilaisia; itse suosin redhatin rpm-tiedostoja niiden helppokäyttösyyden takia. Rpm-pakkaus käy
kyllä muissakin levitysversiossa joissa on rpm-tuki. Tuen voi hakea osoitteesta www.rpm.org:ista.

Mikäli käytössä on jokin muu, esim. Slackware, tuen joutuu itse asentamaan. Kun paketti on haettu tar.gz:na, se puretaan komennolla:

tar -xzvf sambaXXXXX

Siiryttän juuri luotuun hakemistoon. Siellä pitäisi olla install-tiedosto josta näkee, miten se on tarkoitettu asennettavaksi. Rpm:nä Samban asennus käy melko
tuskattomasti. Ensin kuitenkin, kannattaa varmistaa ettei se ole jo valmiiksi asennettuna, komennolla:

rpm -q samba

Jos ei Sambaa löytynyt, asentaminen käy komennolla:

rpm -i sambaXXXX

X-kirjainten paikalle tulee käytettävän version numerot. Mikäli sinulla on jo jokin versio ja haluat sen päivittää, se käy komennolla:

rpm -U sambaXXXX

Demonit

Samban käyttämiseen tarvitaan seuraavia demonia:

snmb (samba demoni)
nmbd (NetBIOS demoni) nimipalvelua varten

Nämä löytyvät yleensä /usr/sbin -hakemistosta.

Kannattaa huomioda ettei nmbd-nimipalvelu ole dns-tyyppinen nimipalvelu. Nmbd-nimipalvelu on wins-tyyppinen nimipalvelu, jota käytetään Windows-verkoissa.

Samban mukana tulee tavallisesti vielä seuraavat ohjelmat:

smbclient (asiakasohjelma toisille Linuxeille)
smbprint (skripti jolla voidaan lähettää tulostustyöt smb-koneille)
smbprint.sysv (sama kuin edellinen mutta, svr4 unix -koneille)
smbstatus (joka listaa avoinna olevat smb-yhteydet)
smbrun (skripti jolla voidaan käynnistää ohjelmia toisilla smb-koneilla).

Demonien käynnistäminen

Samban käyttöön tarvittavat demonit ovat /usr/sbin -hakemistossa (snmb ja nmbd). Usein löytyy helppokäyttöinen skripti jo valmiiksi demonien käyttöön.
Redhatissa se löytyy /etc/rc.d/init.d/smb-nimisenä tiedostona. Siinä on seuraavat valinnat:

start = käynnistää demonit
restart = uudelleen käynnistää demonit
stop = pysäyttää demonit
status = näyttää demonien tilan

Mikäli et halua käyttää demonia xinetd:n välityksellä, voit käyttää niitä yksistäänkin. Tämä on vähän nopeampaa, joskin vähän turvattomampaa, mikä kannattaa
huomioida. Jos Samba on valmiiksi asennettu, muuttaminen voi olla varsin hankalaa ja siihen voi tulla ongelmia.

Mikäli ongelmia ilmenee, kannattaa tarkistaa että /etc/services -tiedostosta löytyy seuraavat rivit:

netbios - ns 137/tcp nbns
netbios - ns 137/udp nbns
netbios - dgm 138/tcp nbdgm
netbios - dgm 138/udp nbdgm
netbios - ssn 139/tcp nbssn

Kannattaa myös katsoa, ettei niitä ole kommentoitu (kommentoitu rivi alkaa #-merkillä). Joissakin tapauksissa nuo kyseiset rivit joutuu lisäämään.

Samba voidaan käynnistää sen käynnistysscriptillä joka täytyy viedä esim. hakemistoon /etc/rc.d/rc3.d (init level 3). Tällöin palvelu käynnistyy bootin yhteydessä.
HUOM. chkconfig-komenolla voit tehdä tämän myös.

Jos saat ensimmäisen käynnistyksen yhteydessä vikailmoituksen joka kertoo demonin ongelmasta portin 139 kanssa, se tarkoittaa että käytössä on toinen Samba
sessio, jota ei ole sammutettu. Tämän voi vielä varmistaa komennolla:

ps -e |grep smpd

Mikäli seuraavalle riville tulee jotain palveluun viittaavaa teksiä, se pitää ”tappaa” sieltä pois komennolla:

kill -9 <pid>

Jos Samba käynnistetään Xinetd:n kautta, joudutaan lisäämään tiedostoja /etc/xinetd.d/-hakemistoon.

Seuraavassa esimerkissä tiedostot luodaan vi-editorilla:

vi smbd
service smbd

{

disable = no
socket_type = stream
wait = no
server = /usr/sbin/smbd
server_args = -D
user = root

}

ja

vi nmbd

service nmbd

{

disable = no
socket_type = dgram
wait = no
server = /usr/sbin/nmbd
server_args = -D
user = root

}

Myös xinetd:ä käytettäessä pitää sammuttaa smb ja nmb -demonit, mikäli ne ovat toiminnassa ja käynnistää xinetd uudellen, komennolla:

xinetd -sigusr1

Mikäli on tarvetta ajaa Sambaa palomuurin läpi, seuraavien portien on oltava auki:

Tcp 137
Tcp 168
Tcp 139
Udp 137
Udp 138

Käyttäjien ja ryhmän luominen

Koska käytämme nyt user-tason turvallisuutta, meidän on hyvä luoda vierailija-kirjautumisnimi. Tästä nimestä tulee nimeltään esim. vieras ja se kuuluu
käyttäjäryhmään smb. Tässä esimerkissä luodaan myös käyttäjät Matti ja Teppo.

Käytä groupaddia ja useraddia uusien kirjautumisnimien ja ryhmien luontiin.

          1. luo käyttäjäryhmä smb, käskyllä:

     groupadd smb

          2. luo käyttäjätilit: vieras, matti ja teppo. Matin ja Tepon kotihakemiston pitäisi olla /home/<käyttäjänimi>. Vieraan kotihakemisto on
          /<smbhakem> esim. /samba-hakemisto. Vieras-käyttäjälle ei anneta komentotulkkia eikä salasanaa, jolloin vieras käyttäjä ei voi kirjautua
          koneeseen.

          Kaikki tiedostot ja hakemistot, jotka käyttäjät Matti ja Teppo luovat tavaraa- tai yleinen -jaoille, omistaa käyttäjä ja ne kuuluvat
          smb-ryhmään.

     adduser -g smb <käyttäjänimi>
     adduser -g smb -d /dev/null -s /bin/false vieras

          Matille ja Tepolle voidaan tarvittaessa antaa salasanat, jotta he voivat kirjautua koneeseen, käskyllä:

     passwd <käyttäjänimi>

          3. Luodaan smbpasswd-tiedosto ja käyttäjille samban salasanat.

     smbpasswd -a <käyttäjänimi>

          Tarvittaessa vieraalle voidaan luoda salasanaton käyttäjätunnus, jolloin lisätään loppuun -n merkintä

     smbpasswd -a vieras -n

Käyttäjän poistaminen

Poistaminen tehdään melkein samalla tavalla kuin luominen, mutta toisinpäin. Siis ensin poistetaan käyttäjä smpasswd:sta, käskyllä:

smbpasswd -x <käyttäjätunnus>

Sitten käyttäjän tunnus poistetaan.

userdel -r <käyttäjätunnus>

Huom! Mikäli tämä käyttäjä on luonut kansioihin tiedostoja/hakemistoja, niiden poistamiseen tarvitaan root-käyttäjän oikeuksia. Poistaminen pitää tehdä paikallisesti.

Hakemistorakenne

Nyt luomme hakemistorakenteen sambaa varten. Ensiksi tehdään kansioita, joissa omistajana on root ja omistajaryhmänä smb.

mkdir /samba
chgrb smb /samba
chmod 700 /samba

mkdir /samba/yleinen /samba/matin /samba/tepon /samba/tavaraa
chgrb smb /samba/yleinen /samba/tavaraa
chown matti:smb /samba/matin
chown teppo:smb /samba/tepon
chmod 700 /samba/matin
chmod 700 /samba/tepon
chmod 770 /samba/yleinen /samba/tavaraa

Oikeudet määritellään aluksi tiedostojärjestelmässä, johon Samba tekee vaadittaessa muutoksia. Tarvittaessa voidaan hakemiston käyttöoikeudet määritellä
käyttäjien mukaan sekä Sambassa että tiedostojärjestelmässä. Hakemiston käyttöoikeuksien määrittely tulee esille, jos Matti ja Teppo haluavat kirjautua paikallisesti
koneelle ja pitää yllä samoja oikeuksia kuin Samban jako-oikeuksissa.

Jos käytetään hakemistoja/tiedostoja ainoastaan Samban kautta tätä ongelmaa ei tule, koska oikeudet on määritelty Sambassa.

Koska /samba/yleinen -kansio tulee yleiseen käyttöön, /samba/yleinen -hakemistoon määritellään -t bitti, jolla haluamme estää toisien käyttäjien muutosoikeudet
omiin tiedostoihin. Tämä asetetaan:

chmod a+t /samba/yleinen

Huom! Tässä käyttäjille annetaan samalla ajo-oikeudet.

Verkkojuttuja

Katsotaan /etc/hosts-tiedostoa. Tällä ei suoranaisesti ole mitään tekemistä samban kanssa, mutta se helpottaa Linux-koneen yleistä käyttöä.

Sinulla pitäisi olla /etc/hosts -tiedosto, joka yhdistää koneiden ip-osoitteet niiden nimiin (hostname).

Omani näyttäisi tällaiselta:

# /etc/hosts

127.0.0.1 localhost localhost.localdomain
192.168.0.1 työasema1
192.168.0.2 työasema2
192.168.0.3 työasema3

Lmhosts-tiedosto yhdistää koneiden nimet (tai IP-osoitteet) NetBIOS (Windowsin tietokone) nimiin. Normaalisti haluat luultavasti koneen nimen ja NetBIOS-nimen
olevan sama.

Omani näyttäisi tällaiselta:

# /etc/lmhosts

localhost linux
työasema1 wtyöasema1
työasema2 wtyöasema2
192.168.0.3 wtyöasema3

Se näyttää hieman hölmöltä, mutta vasemmalla puolella oleva on koneen nimi tai ip-osoite, ja oikealla puolella on NetBIOS-nimi.

Yleinen konfiguraatiotiedosto smb.conf

Koko Sambaa konfiguroidaan yleensä /etc/samba/smb.conf:in kautta. Siinä määritellään mitä jaetaan, millä oikeuksilla jaetaan, mitkä koneet sallitaan pääsemtä jakoon käsiksi. Koska näitä kohtia käydään vielä myöhemmässä vaiheessa läpi tarkemmin, en mene tässä vielä kovinkaan syvälle.

Smb.conf on jaettu kolmeen osaan ja jokaisessa osassa käsitellään tiettyjä osa-alueita. Osa-alueet ovat [global], [homes] ja [printers].

[global] -osassa määritellään Samban yleisiä ja laitteistokohtaisia asetuksia.

[homes] -osassa määritellään jaetut resurssit ja jaettujen resurssien oikeuksia. Tässä kannattaa huomioda, että Samballa on oma käyttäjätietokanta, eli Windowsiin
kirjautumis-käyttäjätunnukset/salasanat on tietyissä tapauksissa oltava samat Samban kanssa, jotta näihin resursseihin päästään käsiksi.

[printers] -osassa määritellään tulostusta/tulostimia koskevat asiat.

Seuraavassa on esimerkki, miten tämä palvelin saadaan toimimaan näillä ehdoilla:

Huom! Jokainen #-merkillä alkava rivi on kommentti, eli sitä ei tavitse kirjoittaaa.

workgroup = joku
#työryhmä tai toimialue, johon palvelin kuuluu

netbios name = linux
#Asetetaan netbios nimi. Jos tätä ei aseteta, niin samba asettaa
#oletusarvoisesti koneen nimen

server string = Samba palvelin
#koneen kuvaus

hosts allow = 192.168.1. 127.
#Näistä ip osoitteistoista pääsee koneen reursseihin.
#hosts denyn vastakohta

printcap name = /etc/printcap
load printers = yes
printing = bsd
#tulostimien asetuksia

guest account = vieras
#vierastilin nimi

security = user
#käyttäjätietokanta otetaan omalta koneelta

encrypt passwords = yes
smb passwd file = /etc/samba/smbpasswd
#käytetäänkö kryptattuja salasanoja? Kannattaa pitää päällä, jos
#halutaan toimia windows-verkossa.

socket options = IPTOS_LOWDELAY
#rajapinnan asetus

remote announce = 192.168.1.255
#määritetään osoite johon lähetetään broadcast-sanoma

local master = no
os level = 0
preferred master = no
#näillä määritetään koneen asema verkossa. Näillä arvoilla kone ei
#ala tapella verkon herruudesta Windowsien kanssa. Ellet tiedä mitä
#teet, en suosittele näiden asetusten muuttamista.

name resolve order = wins lmhosts bcast
#työasemien verkkonimen selvittämijärjestys

wins support = no
#asennetaanko koneesta wins-palvelin ?

wins server = 192.168.1.10
#wins-palvelimen osoite
#Huom!!! Jos sambasta tehdään wins-palvelin, niin wins
#server kommentoidaan (#). Samba ei voi olla samanaikaisesti
#wins server ja mikä hakee wins-nimet muualta.

null passwords = yes
#Tämä mahdollistaa salasanattomien käyttäjätunnuksien käytön.

[yleinen]

comment = yleinen tila
#kommentti, jolla kuvaillaan jakokansiota
path = /samba/yleinen
#jaettavan kansion polku
guest ok = yes
#sallitaan vieraskäyttäjä
writeable = yes
#sallitaan kirjoitus

[matti]

comment = matin
path = /samba/matin
valid users = matti
#sallitaan vain käyttäjä matti
writeable = yes
 

[teppo]

comment = tepon
path = /smb/jako
guest ok = no
valid users = teppo
writeable = yes

[tavaraa]

comment = tavaraa
path = /smb/jako
guest ok = yes
writeable = yes

On myös mahdollista välttää koko merkkipuolen ihanuudet Swatt:ia käyttämällä Se on graafinen konfigurointi-ohjelma smb.confiin.

Näiden konfausten jälkeen kannattaa tehdä varmuuskopio ja ajaa seuraava käsky:

testparm smb.conf

Testparm näyttää mahdolliset kirjoitusvirheet riveillä sekä mitkä resurssit on jaettu ja millä ehdoilla.

Samban testaaminen

Tarkistetaan, saatiinko Samba toimimaan. Kirjoita käsky:

$ smbclient -L localhost -U matti

Salasanaksi annetaan sama salasana, mikä matille annettiin smbpasswd:in yhteydessä.

Domain=[JOKU] OS=[Unix] Server=[Samba 2.0.7]
Sharename                 Type                 Comment
---------                     ----                   -------
yleinen                         Disk                 Yleinen
matin                           Disk                  matin
tepon                           Disk                 tepon
tavaraa                        Disk                 tavaraa
IPC$                           IPC                 IPC Service (Linux)

Server                                 Comment
---------                              -------
LINUX                               Samba palvelin

Workgroup                         Master
---------                             -------
WORKGROUP                 MASTER