Lajber Zoltán lajbi@jht.gau.hu
Bemutatok egy megoldást arra, hogy hogyan lehet egy Linuxos gépet egy munkacsoport számára file, nyomtató és fax szerverré tenni.
Ismertetek egy tipikus szerver oldali beállítást, néhány megfontolást a felhasználók jogairól, és persze néhány kliens programról is lesz szó.
Ennyi információ csak az elinduláshoz elég, de a SaMBa nagyon jó dokumentációval rendelkezik, persze angolul.
Mi is az a SaMBa?
Szabadon fordítva a SaMBa FAQ-ból:
SaMBa olyan programcsomag, amely elérhetővé teszi a kliensek számára a kiszolgáló file- és nyomtatóterületeit az SMB (Session Message Block) protokollon keresztül.
Eredetileg Unixra irták, de ma már futatható VAX VMS, Novell Netware, OS/2 és AmigaDOS operációs rendszereken is.
Néhány fogalom
\\server\share
módon történhet.
A SaMBa fő részei
/usr/local/samba/lib/smb.conf
helyen található, de ha Linux
diszrtibució (mint példaul a Debián) tartalmazza, akkor az
/etc/smb.conf
helyre kerül.
/usr/local/src/samba-1.9.16p11/docs/
könyvtárban található, a
disztribució részeként pedig a verb+/usr/doc/samba+ helyen keresendő.
Továbbá vannak szabvanyos UNIX kézikönyv lapok, nagyon tanulságos a
man smb.conf
.
Elterjedtebb kliensek
\windows\system\
könyvtár mindenki által olvasható.
A rendszer itt tárolja a usernev.pwl
fájlokat. Lehetséges
következményei már ismertek fentebbről.
/usr/doc/samba/DOMAIN_CONTROL.txt
fájlban olvashatunk.
Néhány kliens nem rendelkezik olyan lehetőséggel, hogy más felhasználóként
kapcsolódjunk egy share-hez, mint ahogy bejelentkeztünk. Ez a "Kapcsolodás
másként" (Connect As). Ekkor használhatjuk a \\server\share%username
formát. Ez akkor is használható, ha azt tapasztaljuk, hogy a kliens
figyelmen kivül hagyja azt, amit megadunk neki a fenti dialógus ablakban.
Egy példa konfiguráció Itt bemutatok egy általam évek óta használt konfigurácót.
Tervezett csoportok és jogaik Egy felhasználó vagy a user
vagy
a jht
csoportba tartozik elsődlegesen. A többi csoport úgynevezett
másodlagos. (Egy már meglévő felhasználót a adduser lajbi masik
parancsal tehetünk be másodlagos csoportba.
Az alábbi táblázatban az r olvasási (read), a w irási (write) az x böngészési (browse) jogot jelent. Egy sor egy share, egy oszlop egy group.
user | jht | pusr | tdk | efi | guest | |
homes | -rw | -rw | -rw | -rw | -rw | --- |
printers | x-- | xw- | x-- | xw- | x-- | x-- |
admin | x-- | xrw | x-- | x-- | x-- | x-- |
tdk | x-- | x-- | x-- | xrw | x-- | x-- |
alkalmazasok | x-- | xr- | xrw | xr- | x-- | x-- |
annonftp | xr- | xr- | xr- | xr- | xr- | xr- |
netlogon | xr- | xr- | xrw | xr- | xr- | xr- |
efi | --- | --- | --- | --- | -rw | --- |
Szavakkal elmondva: a user
csoport tagjai elérhetik saját home
könyvtárukat irásra olvasásra, és az annonymous ftp területet olvasásra.
A jht
csoportnak van egy közös munkaterülete admin névvel.
A pusr (power user) csoport irhat is az alkalmazasok
share-re.
Ök installálhatnak a kliensek számára programokat.
A tdk csoport hasonló a jht-hoz, de ők nem az admin-t használjak, hanem
annak egy alkönyvtárát, tdk névvel.
Az efi share érdemel egy kis figyelemet. Ez senki számára nem browse-olható,
tehát csak úgy lehet elérni, ha valaki tudja hogy létezik, es beirja, hogy
\\jht\efi
. Innentöl már a normális kapcsolódási eljárás folyik le.
Ezt megvalósító smb.conf így néz ki:
; Configuration file for jht. ; ============================================================================ ; For the format of this file and comprehensive descriptions of all the ; configuration option, please refer to the man page for smb.conf(5). ; ; last update: Lajbi 96.11.05 [global] server string = %h Jarmu- es Hotechnika tanszek, Samba %v workgroup = JARMUTECHNIKA printing = bsd printcap name = /etc/printcap load printers = yes guest account = guest security = user hosts allow = 192.188.244. 192.188.243. 192.188.245. domain logons = yes domain master = yes guest ok = no logon script = %G.bat max diks size = 120 log file = /usr/local/samba/var/log.%m lock directory = /usr/local/samba/var/locks share modes = yes os level = 34 remote announce = 192.188.243.255/JHT 192.188.245.255/JHT message command = /usr/bin/mail -s 'message from %f on %m' root < %s; rm %s ; sajat home konyvtar mindenkinek [homes] comment = Home directories browseable = no read only = no create mode = 0700 mangled map = (*.html *.htm) ; nyomtatas csak a jht es tdk csoportnak [printers] comment = All Printers path = /var/tmp browseable = no printable = yes public = no writable = no create mode = 0700 ; maganterulet valid users = @jht, @tdk ; kozos munkaterulet a jht group tagjainak, full access minden tagnak [admin] comment = Tanszek kozos dolgai path = /home/admin valid users = @jht ; ok kapcsolodhatnak public = no writable = yes printable = no force user = admin force group = jht ; a leterhozott file-ok tulajdonosa admin.jht lesz create mode = 770 ; a csoport szabadon garazdalkodhat ; kozos munkaterulet a tdk group tagjainak, az [admin] resze! [tdk] comment = TDK-s hallgatok terulete path = /home/admin/tdk valid users = @tdk public = no writable = yes printable = no force user = admin force group = jht create mode = 770 ; dos/windoze binarisok a jht,tdk groupnak es guest usernek, de read-only ; pusr group irhat ra! [dosbin] comment = DOS es Windows alkalmazasok path = /home/jht/dosbin writable = no printable = no write list = @pusr valid users = @jht,@tdk force user = jht force group = jht ; ez a dosbin meg1x [alkalmazasok] copy = dosbin ;annon ftp terulet, de itt read-only az incoming is [anonftp] comment = JHT anonnymous ftp terulete path = /home/ftp/pub public = yes writable = no printable = no ; domain controller miatt [netlogon] comment = Domain Controller logon directory path = /home/jht/netlogon writable = no printable = no guest ok = yes write list = @pusr browseable = no force user = jht force group = jht ; ezek itt nem browse-olhato, csak azoknak, akik tudnak rola :-) ; egy project altal hasznalt terulet ; efi: EFI project tagjainak (efi group) [efi] comment = EFI project path = /home/efiproject valid users = @efi public = no writable = yes printable = no force user = lajbi force group = efi create mode = 770 browseable = no
A SaMBa a valid users
opcióval szabályozza, hogy ki kapcsolódhat az
adott share-hez. Az elindított smbd procces ugyanolyan jogokkal
rendelkezik mint belépett felhasználó, vagy (ha van) a force user
és force group
előír.
De ekkor meg nem jelenti azt, hogy minden fájlt fölött urtalkodik, mert a
hagyományos UNIX-os jogosultságok érvényben vannak.
Ez nem egyszerű, mert harom szinten szabályozhatjuk a hozzáféréseket:
valid users
)force user
, force group
)Ezért nézzünk még két konfigurációs fájlt. Egy rövid /etc/passwd részlet:
lajbi:xxx:510:101:Lajber Zoltan,aula 120,1535,,:/home/lajbi:/bin/bash znagy:xxx:505:100:Nagy Zoltan:/home/znagy:/bin/bash czanik:xx:512:100:Czanik Andras,ELTE JTK,,,:/home/czanik:/bin/bash admin:xxx:1002:101:Tanszeki adminisztracio,aula 125,1430:/home/admin:/bin/bash jht:xxxxx:1003:101::/home/jht:/bin/bash fjuhasz:x:1008:100:Juhasz Ferenc,GM IV,,,:/home/fjuhasz:/bin/bash jritz:xxx:1013:100:Ritz Jozsef,GM V/8,C/4026,,:/home/jritz:/bin/bash guest:xxx:1016:109::/home/guest:/bin/true
és /etc/group részlet:
users:*:100: jht::101:lajbi,ari,jbeke,llaib,admin pusr::103:jht,lajbi tdk::104:znagy,tracz,losgyan,fjuhasz,horvath,jritz,bhamza,beno efi::107:lajbi,fjuhasz
Mivel a Linuxos gép tartományvezérlő is, szükség van a kliensek számára
lefuttatható logon script
re is.
Mivel az smb.conf-ban a logon script = %G.bat
sor szerepel, a
beléptetett felhasználó elsődleges csoport neve szerinti batch fájl fog
elindulni. Ezek:
users.bat:
net use i: \\jht\homes /yes net use h: \\jht\tdk /yes net use w: \\jht\alkalmazasok /yes
jht.bat:
net use i: \\jht\homes /yes net use h: \\jht\admin /yes net use w: \\jht\alkalmazasok /yes
Az smb.conf security opciója
Ennek háromféle értéke lehet:
Úgy tűnik, némelyik NT4-esnél van hasonló mizéria, ekkor használjuk a
\\server\share%user
formát. Bár ezt meg nem minden kliens fogadja el
:-).
password server = gepnev
opciót is, és a
felhasználói név/jelszó ellenörzést az adott gép fogja elvégezni. Ez
általában egy NT AS szokot lenni.
Hogyan is müködik ez?
Az SMB szerver a kapcsolat létrehozásakor közli a klienssel, hogy milyen üzemmódban van. Ez azt befolyásolja, hogy a kliens milyen módon probálja azonosítani magát.
Ha ez megtörtént, akkor a kliens elvárja, hogy a késöbbiekben a tree connection blokkal mount-olni tudjon share-eket.
Egy kliens több session setup kérést is küldhet. A szerver a válaszban ad egy "felhasználó azonosítót", így a kliens elvileg képes többszörözött kapcsolatok fentartására.
Sok kliens küld session setup blokkot még akkor is, ha share szintű az
ellenörzés, és ebben megad egy felhasznói nevet, de nem ad jelszót. A SaMBa
feljegyzi ezt a nevet egy lehetséges felhasználók listára. Amikor a
kliens küld egy tree connection blokkott, akkor az ebben kért share
neve is felkerül a lehetséges felhasználók listájára, továbbá az összes, az
smb.conf
file adott share-hez tartozó valid users
sorában
szereplő nevek.
Ha a küldött jelszó bármelyik, a lehetséges felhasználók listáján szereplő névhez megfelel, akkor a kliens engedélyezett a hozzáférésre, mint az a felhasználó, ahol az egyezés történt.
password server
-re. Ha ez sikerül, akkor elfogadja a kérést,
különben nem.
A titkosított jelszavak A SaMBa a kapcsolat létrehozásakor nem csak azt közli, hogy milyen üzemmódban van, hanem azt is, hogy képes-e titkosított jelszavakat kezelni. Ha ezen opcióval fordítottuk a SaMBa-t, akkor visszaküld a kliensnek egy kulcsot is. Ez esetben a kliens az összes jelszavát titkosított formában fogja küldeni.
Ekkor külön jelszó fájlt kell karbantartani a SaMBa számára, ugyanis kriptográfialilag lehetetlen a UNIX tipusú jelszavakat SaMBa tipusúra konvertálni.
Előnyként jelentkezik, hogy a bizonyos kliensek felhasználói távolból is megváltoztathatják a jelszavukat, ehhez nem szükséges bejelentkezniük pl. telnet-el a SaMBa-s gépre.
Fax szerver
A forrás: /usr/doc/samba/Faxing.txt
-ben, a beszerzési helyekkel együtt.
Mi szükséges hozzá?
Fax szám
.g3tolj
vagy hasonló eszközökkel. Ezt követöen küldhetjük nyomtatóra,
vagy pl. ghostview-el képernyőre. Vagy küldhetünk e-mailt , esetleg a
smbclient -M jucika < fax jött!
parancsal értesítjük a felhasználót.
Egyéb szolgáltatások
#/usr/sbin/bootpd -v bootpd+dhcp 2.4.3Így ez alkalmas rá. Nem kell semmi különös beállítás, a hagyományos
/etc/bootptab
használható, sőt még a bf=netzImage
is maradhat
a diskless Linuxokhoz. Ha nem ilyen a bootpd, akkor upgrade, vagy patch és
újrafordítás.
Összehasonlítás
host allow =
és host deny =
tipusú korlátozásra. Ez akkor jelent gondod a WinNT-nél ha van TCP/IP a
NetBEUI mellet, és így az egész világ láthatja szerverünket.remote announce = 192.168.2.255/SERVERS 192.168.4.255/STAFF
Ezzel elérhető, hogy a 192.168.2.0 -es hálón mint SERVER, a
192.168.4.0-ás hálózaton pedig mint STAFF feltünjön gépünk.
Érvek a Linux + SaMBa ellen
share modes = no
-ra állítjuk, vagy a
samba-t megfellő opciókkal újrafordítjuk. Lásd:
/usr/doc/samba/Speed.txt.gz
.
Ezen anyag az MLF "második buli"-jára készült szóbeli előadás módosított
fóliái. A dokumentum időnként frissített verziója megtalálható a
http://jht.gau.hu/~lajbi/sambaeloadas.html
címen.
A SaMBa web lapok:
http://lake.canberra.edu.au/pub/samba/
,
ahol lehet keresni a levelezési lista archivumában is.
A SaMBa levelezesi lista (angol): samba@samba.anu.edu.au
A SaMBa-s újdonságok (angol): samba-announce@samba.anu.edu.au
A beiratkozás ezekre úgy történhet, hogy küldünk egy levelet a
listproc@samba.anu.edu.au
cimre. A Subject legyen üres, és a levél
törzsében:
subscribe samba (nevünk)
vagy
subscribe samba-announce (nevünk)
Elég sokszor beszélnek a SaMBaról a comp.protocols.smb
newsgroupban
is.
Sok sikert a Linuxos és bármilyen más SaMBázáshoz.
Köszönöm
Iványi Péter peteri@carme.sect.mce.hw.ac.uk
és
Szekeres István szekeres@fornax.hu
segítségét.