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