Content extract
Document1 2001. 04 19 9:31 Page 1 k tá ad i og tő elf lesz an fej los a ta b va am Hi a S Fájl- és nyomtatószerver heterogén hálózatokra Samba KOSSUTH Robert Eckstein, David Collier-Brown, Peter Kelly Tartalom Előszó . A Samba . A könyv olvasóközönsége . Kellékek a Samba telepítéséhez . A könyv felépítése . Tipográfiai jelölések . A szerzők kérései . 5 5 6 7 7 8 9 1. fejezet Ismerkedés a Sambával 11 Mi a Samba? . Mit nyújthat számunkra a Samba? . Ismerkedés egy SMB/CIFS hálózattal . Microsoft implementációk . A SAMBA disztribúció áttekintése . Hogyan szerezhető be a Samba? . A Samba 2.0 újdonságai Ez még nem minden . 11 13 19 28 36 38 38 40 2. fejezet A Samba telepítése Unix rendszerre A Samba disztribúció letöltése . A Samba konfigurálása . A Samba fordítása és telepítése . A Samba alapvető konfigurációs fájlja . A Samba démonjainak indítása . A Samba démonok tesztelése . 41 41 44 48 51 56 59 3.
fejezet Windows ügyfelek konfigurálása Windows 95/98 számítógépek beállítása. Windows NT 4.0 számítógépek beállítása Röviden az SMB/CIFS protokollról . 60 60 72 83 4. fejezet Lemezmegosztások 92 A Samba konfigurációs fájlja . 92 A konfigurációs fájl szakaszai . 98 A konfigurációs fájl beállításai . 101 420 | SAMBA A kiszolgáló konfigurálása . A lemezmegosztás konfigurálása . A Samba hálózati beállításai . Virtuális kiszolgálók . A naplózás konfigurációs beállításai . 103 106 111 117 118 5. fejezet Tallózás és a lemezmegosztások folytatása 125 Tallózás . Fájlrendszerbeli különbözőségek . Fájlengedélyek és attribútumok MS-DOS és Unix rendszerben . Névzsugorítás és a kis- és nagybetűk . Zárolások és ,,opportunista” zárolások . 125 138 146 154 161 6. fejezet Felhasználók, biztonság és tartományok Felhasználók és csoportok . Megosztások elérésének szabályozása .
Hitelesítési biztonság . Jelszavak . Windows tartományok . Bejelentkezési szkriptek . 167 167 170 176 184 196 204 7. fejezet Nyomtatás és névfeloldás Nyomtatási feladatok küldése a Sambára . Nyomtatás Windows ügyfél nyomtatóján . Névfeloldás a Sambában . 213 213 225 236 8. fejezet Különleges Samba ismeretek A programozók segítése . Mágikus szkriptek . Nemzetközi beállítások . WinPopup üzenetek . Újonnan felvett beállítások . Vegyes beállítások . Biztonsági másolatok készítése az smbtar eszközzel . 242 242 245 246 249 250 252 258 9. fejezet Hibakeresés a Sambában Az eszközkészlet . A hibafa . Különleges erőforrások . 263 263 270 304 A függelék. A Samba konfigurálása SSL protokollal Röviden a hitelesítésekről . Követelmények . Az SSLeay telepítése . Az SSL Proxy telepítése . Az SSL konfigurációs beállításai . 307 307 308 309 317 318 TARTALOM | 421 B függelék. A Samba teljesítményének
finomhangolása Egy egyszerű teszt . A Samba finomhangolása . Samba kiszolgálók méretezése . 324 324 325 332 C függelék. A Samba konfigurációs beállításainak gyors áttekintése 341 D függelék. A Samba démonjainak és parancsainak összefoglalása 377 A Samba disztribúció programjai . 377 E függelék. A Samba letöltése CVS-sel 398 F függelék. Minta konfigurációs fájl 399 Tárgymutató . 405 A szerzőkről Robert Eckstein szinte mindenbe belekóstolt, ami a számítógépekkel kapcsolatos. Foglalkozott elektronikus kereskedelemmel, készített fordítóprogramokat, de a mesterséges intelligencia bizonyos területei (fuzzy logic) sem állnak távol tőle Mindenesetre a barátai egyetértenek abban, hogy túlságosan is sok időt tölt a számítógép monitora előtt Az O’Reilly kiadónál Robert többnyire Java könyveken dolgozik (ilyen például a Java Swing), de az XML Pocket Reference és a Webmaster in a Nutshell című könyveknek is ő a
szerzője. Szabad idejében rendszeresen beszámol a világhálón népszerű konferenciákról, továbbá cikkeket ír a Java World magazinba. Robert a Trinity egyetem számítástudományi és kommunikációs szakán végezte tanulmányait. Korábban egy biztosítási cégnél dolgozott, majd ezt követően négy évet töltött el a Motorola celluláris szoftverrészlegénél. Jelenleg a Texas állambeli Austinban él újdonsült feleségével, Michelle-lel, és remélik, hamarosan újabb taggal bővül a család. David Collier-Brown rendszerintegrátor tanácsadó, jelenleg Torontóban, a Sun Opcom mérnöki csoportjában dolgozik. Szabad idejében sokat olvas, figyelemmel kíséri felesége baseballcsapatának szereplését, és az ottani nyár két hetében vitorlázik Torontó külső kikötőjében. Peter Kelly szabadúszó rendszertanácsadóként dolgozik a kanadai Torontóban, és elsősorban az internet és a hálózati biztonság a szakterülete. Az utolsó vizsgáira
készül, hogy megkapja az MCSE (Microsoft Certified System Engineer) minősítést, de amikor lehetősége nyílik, szívesen dolgozik Linux rendszerben is. Szabad idejében golfozik, és a hálózati biztonsággal kapcsolatos szakirodalmat tanulmányozza. A borítóról Az O’Reilly-könyvek külső megjelenését az olvasói megjegyzések, a kiadói tapasztalatok és a terjesztők visszajelzései alakítják. Különleges borítók teszik teljessé a különböző műszaki jellegű témák különleges megközelítését, hogy egyéniséget és életet adjanak az élő természettől igencsak távol eső szövegeknek. Könyvünk címoldalán a mintegy ötven fajt számláló szarvcsőrűfélék egyik tagja, a kaffer szarvasvarjú (Bucorvus cafer) látható. Afrika déli és keleti füves vidékein honos Méretét tekintve közepes termetű, igen hosszú, kampós csőre alatt világospiros pikkelyes a nyaka, sötét színű a teste és a szárnya, a lábai rövidek, a felső
szemhéja fölött merev, szőrszerű pillákat visel. A többi szarvcsőrű madárhoz hasonlóan ennek a fajnak is egy sisakszerű kinövés található a csőre fölött, amely évek múltán sűrűn redőssé válik Ez az egyedüli szarvcsőrű, amely a föld talaján él, szükség esetén repülni is tud, és a többi fajtól eltérően a fák lombkoronáiban fészkel – amazok földbe vájt üregekkel is beérik. Többnyire gyümölcsökkel, valamint nagy testű rovarokkal és kis emlősökkel táplálkozik Számos afrikai törzs a kaffer szarvasvarjút szent állatnak tartja, amelyhez ilyen minőségében sok legenda és babona fűződik. FELELŐS KIADÓ KOCSIS ANDRÁS SÁNDOR A KOSSUTH KIADÓ RT. ELNÖK-VEZÉRIGAZGATÓJA A KÖTETET BODÓ KÁROLY SZERKESZTETTE MŰSZAKI VEZETŐ KUN GÁBOR MŰSZAKI SZERKESZTŐ PÁNYI BÉLA WWW.KOSSUTHHU E-MAIL: RT@KOSSUTED.HU NYOMTA ÉS KÖTÖTTE A SZEKSZÁRDI NYOMDA KFT. FELELŐS VEZETŐ VADÁSZ JÓZSEF IGAZGATÓ Előszó Reggel kilenc
óra, és éppen most érkeztünk egy kellemesen átaludt éjszaka után a számítógépközpontba. Rendszergazdaként kellemes az életünk – miért is ne lenne az, ha kiválóan működik a hálózatunk? Kétszáz egyforma számítógép, és mindegyiken ugyanaz az operációs rendszer. Az összes nyomtató bekötve a hálózatba, és bármelyik bárhonnan elérhető az épületen belül. Az automata konfigurációs szkripteknek köszönhetően a cég összes dolgozója számára azonos módon jelennek meg azok a megosztott lemezek, amelyeket beállítottunk a számukra. Igen, így valóban kellemes az élet Hátradőlünk a karosszékben, és belekóstolunk az első reggeli kávéba Aztán egyszer csak riasztás zökkent ki bennünket a kellemes semmittevésből. Csak rossz álom lehet – gondoljuk. Sajnos nem, ez a valóság! Négy különböző számítógép három eltérő operációs rendszert futtatva kétségbeesetten próbál meg kapcsolatot teremteni, és szünet
nélkül cseng a telefon. A felhasználóink többsége nem érti, miért nem tud hozzáférni egy másik számítógépen lévő állományhoz, vagy miért nem tud nyomtatni egy távoli nyomtatón. A naplófájlok arról tanúskodnak, hogy már késő biztonsági másolatokat készíteni Valamilyen rejtélyes oknál fogva a második emeleten lévő PC nem találja a szalagkiszolgálót. Mit tehet ilyen nehéz helyzetben egy rendszergazda? Egyszerű a válasz: vegyen ki egy nap szabadságot, olvassa el ezt a könyvet, és tanuljon meg Sambázni! A Samba A Samba egy sor eszközből áll, amelyek segítségével a hálózaton olyan erőforrások oszthatók meg, mint a nyomtatók és a fájlok. Ezzel ugyan egy kicsit leegyszerűsítjük a dolgot, de a Samba tényleg arra használható, hogy könnyebbé tegye az életünket. A Samba a Microsoft és az IBM által is elfogadott Server Message Block (SMB) protokollt használja arra, hogy TCP/IP hálózaton keresztül alacsony szinten
adatokat cseréljen Windows ügyfelek és Unix kiszolgálók között. A négy képesség, amely rendkívül vonzóvá teszi a Sambát: • A Samba ugyanazt az SMB protokollt használja, amelyet a Microsoft és az IBM operációs rendszerei is használnak a DOS 3.0 verziója óta • A Samba különböző platformokon futhat, beleértve a Unix, az OpenVMS, az OS/2, az AmigaDOS és a NetWare különböző változatait. Ez azt jelenti, hogy a kiszolgálón egyetlen program futtatásával tehetjük elérhetővé a fájlokat és a nyomtatókat a PC-s közösség számára 6 | SAMBA • A Samba szabad szoftver. A Sambának kereskedelmi forgalomban kapható változatai is léteznek, amelyek leutánozzák a Samba képességeit, és meglehetősen drágák. A Samba e programok alternatívájaként használható, és jelentősen csökkenti a kiadásainkat. A Samba a GNU General Public License (GPL) szabályai szerint terjeszthető, és a szerzői Open Source (nyílt forráskódú)
szoftvernek szánják. Más szavakkal ez azt jelenti, hogy szabadon letölthetők mind az alkalmazásai, mind a forráskódjai, sőt, akinek kedve van hozzá, tovább is fejlesztheti az eredeti Samba programokat. • A Samba a kiszolgálóra összpontosítja a hálózat felügyeletét. Nincs szükség arra, hogy egy hajlékonylemezzel vagy CD-vel a kezünkben szaladgáljunk a hálózathoz csatlakozó számítógépekhez az ügyfélszoftverek frissítése céljából. A Samba teljes megoldást kínál a helyi hálózatok számára – álljanak azok akár két otthoni számítógépből, akár egy nagyvállalat több száz csomópontjából. A Samba könnyen telepíthető és felügyelhető, és olyan átlátszó hálózati környezetet teremt, amelyben a felhasználók a munkájukhoz szükséges összes erőforráshoz hozzáférhetnek Miután telepítettük és beállítottuk a Sambát, a következő szolgáltatásokat nyújtja: • Unix fájlokat kínálhatunk fel Windows, OS/2 és
más operációs rendszereket használó ügyfeleknek. • Unixos ügyfelek számára elérhetővé tehetjük a PC-s fájlokat. • Elérhetővé tehetjük a hálózati nyomtatókat a Windows ügyfelek számára. • Névkiszolgálást kínálhatunk (broadcast és WINS). • Engedélyezhetjük, hogy Windows ügyfelek böngésszék a hálózati erőforrásokat. • Windows munkacsoportokat vagy tartományokat hozhatunk létre. • Előírhatjuk az ügyfelek felhasználónevének és jelszavának a hitelesítését. A könyv olvasóközönsége A szerzők a könyvet elsősorban olyan Unix rendszergazdáknak ajánlják, akiknek PC-ket is kell kezelniük a hálózatban, továbbá mindazoknak, akiknek PC-s környezetben Unix kiszolgálóra van szükségük. Ugyanakkor a szerzők nem akarják különböző rendszergazdai eszközök végeláthatatlan sorával terhelni az olvasót Abból indulnak ki, hogy az olvasó alapvetően tisztában van a Unixos rendszerek felügyeletével, de nem
tételezik fel róluk, hogy hálózati szakemberek. Mindenesetre minden segítséget megadnak a különböző meghatározások és kifejezések megértéséhez Mivel a szerzők azt sem feltételezik, hogy az olvasónak óriási gyakorlata lenne a Microsoft Windows operációs rendszer használatában, jóval részletesebben térnek ki a PC oldali telepítési feladatokra, és mind a Windows 95/98, mind a Windows NT rendszerben különböző példákat mutatnak be (a két rendszer több vonatkozásban is eltér egymástól). Unix oldalon olyan, általánosan használt operációs rendszerekhez mutatnak példákat, mint amilyen a Linux 2.0 vagy a Solaris 26 ELŐSZÓ | 7 Kellékek a Samba telepítéséhez Mielőtt elindulnánk, a következőkre lesz szükség: • a legfrissebb Samba disztribúcióra, ami a http://www.sambaorg címen letölthető az internetről, vagy egyszerűen elővehető a számítógépes lapok CD-inek gyűjteményéből; • a hálózathoz csatlakozó
kiszolgáló- és ügyfélgépek nevére és IP címére, a hálózat hálózati maszkjára és a tartománynév-kiszolgálók (DNS) nevére és IP címére. A könyv felépítése A könyv durván két részre osztható. Az első rész a Samba telepítésével (1–3 fejezet), a második a Samba konfigurálásával és optimalizálásával (4–9. fejezet) foglalkozik Az egyes fejezetek rövid tartalma: 1. fejezet Ismerkedés a Sambával Ebben a fejezetben megismerkedünk a Samba összetevőivel, és röviden áttekintjük a NetBIOS és a Windows hálózati vonatkozásait. 2. fejezet A Samba telepítése Unix rendszerre Ebben a fejezetben arról olvashatunk, miként konfigurálhatjuk, fordíthatjuk le, telepíthetjük és tesztelhetjük a Samba kiszolgálót Unix platformon. 3. fejezet Windows ügyfelek konfigurálása Ez a fejezet arról szól, hogy miként konfigurálhatjuk a Microsoft Windows 95/98 és az NT 4.0 ügyfeleket úgy, hogy csatlakozhassanak egy SMB hálózathoz
Röviden bemutatja az SMB protokoll működését is. 4. fejezet Lemezmegosztások Ebben a fejezetben a Samba konfigurációs fájljának különböző részeivel ismerkedünk meg, és megtudjuk, hogyan hozhatunk létre lemezmegosztásokat. 5. fejezet Tallózás és a lemezmegosztások folytatása Ebben a fejezetben folyatjuk a lemezmegosztások tárgyalását, és megvizsgáljuk a tallózás beállítását. 6. fejezet Felhasználók, biztonság és tartományok Ebben a fejezetben arról olvashatunk, miként konfigurálhatjuk az ügyfeleket, milyen biztonsági intézkedéseket tehetünk a Sambában, és hogyan kezelhetjük a titkosított és titkosítatlan jelszavakat. Arról is szólunk, hogyan készíthetjük fel a Sambát arra, hogy elsődleges tartományvezérlő legyen Windows 95/98 és NT rendszert használó ügyfelek számára. 7. fejezet Nyomtatás és névfeloldás A fejezet a nyomtatókkal és a WINS (Windows Internet Name Service) névfeloldás használatával foglalkozik.
8 | SAMBA 8. fejezet Különleges Samba ismeretek Ebben a fejezetben olyan különleges ismereteket sajátíthatunk el, mint a Samba megosztások konfigurálása programozók részére, a nemzetközi beállításokkal kapcsolatos kérdések és a biztonsági másolatok készítése. 9. fejezet Hibakeresés a Sambában Ha problémáink lennének a Samba telepítésével, akkor ez a meglehetősen terjedelmes fejezet ötletekkel szolgál a hiba kijavításához. A. függelék A Samba konfigurálása SSL protokollal Ebben a függelékben arról olvashatunk, hogy az SSL protokollt használva miként konfigurálhatjuk úgy a Sambát, hogy biztonságos kapcsolat jöjjön létre a kiszolgáló és az ügyfelei között. B. függelék A Samba teljesítményének finomhangolása Ez a függelék különböző eljárásokat mutat be a Samba teljesítményének optimalizálásához. C. függelék A Samba konfigurációs beállításainak gyors áttekintése Ez a függelék az smb.conf
fájlban használható beállításokat tekinti át D. függelék A Samba démonjainak és parancsainak összefoglalása Ez a függelék áttekinti a Samba készletébe tartozó démonokat és eszközöket, továbbá felsorol néhány olyan tükörkiszolgálót, ahonnan letölthető a Samba. E. függelék A Samba letöltése CVS-sel Ebben a függelékben arról tájékozódhatunk, miként tölthetjük le CVS rendszer segítségével a Samba legfrissebb verzióját. F. függelék Minta konfigurációs fájl A függelék egy terjedelmes konfigurációs fájlra mutat példát, amit akár egy nagyobb cégnél is használhatunk. A ritkábban használt beállítások szerepét megjegyzésekben tesszük érthetővé Tipográfiai jelölések A könyvben az alábbi tipográfiai jelöléseket használjuk: Dőlt betűs Ezzel jelöljük a fájlneveket, a fájlnevek kiterjesztését, az internetes címeket, a végrehajtható fájlok és parancsok nevét, és a különleges fogalmakat. Azonos
betűszélesség Így jelöljük a Samba konfigurációs beállításait, a szövegben megjelenő egyéb kódokat, és azokat a parancssori adatokat, amelyeket betűhíven kell beírni a képernyőn. Félkövér és azonos betűszélesség Ezzel jelöljük a felhasználó által beírandó parancsokat és azokat az új konfigurációs beállításokat, amelyekre fel akarjuk hívni az olvasó figyelmét. ELŐSZÓ | 9 Dőlt és azonos betűszélesség A kódok és a parancssori információk megváltoztatható részeit jelöli. A bagoly szimbólummal jelölt szövegrész a környezetével kapcsolatos valamilyen fontos megjegyzést tartalmaz. A pulyka szimbólummal megjelölt szövegrész a környezetével kapcsolatban valamilyen figyelmeztetést tartalmaz. A szerzők kérései E könyv szerzői a legjobb képességeik szerint tesztelték és ellenőrizték a könyvben leírtakat, de előfordulhat, hogy időközben megváltoztak bizonyos beállítások (de maguk a szerzők is
hibázhattak). Kérjük, értesítsenek bennünket bármely hibáról, továbbá várjuk az olvasók javaslatait a további kiadásokhoz. Címünk: O’Reilly & Associates, Inc. 101 Morris Street Sebastopol, CA 95472 1-800-998-9938 (az USA-ban és Kanadában) 1-707-829-0515 (nemzetközi/helyi) 1-707-829-0104 (FAX) A kiadó elektronikus levélben is elérhető. A levelezőlistára való feliratkozáshoz vagy katalógus kéréséhez az alábbi címre várjuk az elektronikus leveleket: info@oreilly.com Műszaki jellegű kérdéseket vagy a könyvvel kapcsolatos megjegyzéseket az alábbi címre kérjük: bookquestions@oreilly.com A kiadó egy webhelyet is készített ehhez a könyvhöz, ahol példák, hibajavítások és a további kiadásokkal kapcsolatos tervek tekinthetők meg. A webhely az alábbi címen érhető el: http://www.oreillycom/catalog/samba/ További tudnivalók erről és más könyvekről az O’Reilly alábbi webhelyén találhatók: http://www.oreillycom A magyar
kiadó webhelye, ahol a könyv szövege is megtalálható: http://www.kossuthhu Ismerkedés a Sambával Ha az olvasó tipikus rendszergazda, akkor tudhatja, mit jelent mindenesnek lenni. Nap mint nap azzal telik a munkaideje, hogy vég nélkül bajlódik a hardverek inkompatibilitási problémáival, a rendszerek elavulásával, az adatok biztonsági mentésével és a felhasználók aggódó seregével. Ezért némi fenntartással fogadhatja azt, hogy újabb programmal bővítse az amúgy is sokrétű eszköztárát, amelynek a karbantartásáért felelősséggel tartozik. Ha viszont úgy dönt, hogy csökkenteni kívánja a számítástechnikai környezetének bonyolultságát, valamint a programok zökkenőmentes futtatásához szükséges feladatait, akkor talán pont a Samba lehet az, amire szüksége van. Egy kis magyarázat: e könyv egyik írójának rendszergazdaként az volt a feladata, hogy 70 UNIX fejlesztő munkájáról gondoskodjon, akik 5 Unix kiszolgálón
osztoztak. A szomszédjának 20 Windows 31 felhasználó és 5 OS/2 és Windows NT kiszolgáló volt a gondjaira bízva Erről az emberről igazán elmondható, hogy mindenes volt Amikor kilépett a cégtől, és az összes gépet közös hálózatba kellett kapcsolni, a Samba jelentette a megoldást. A szerzőnk gyorsan lecserélte a Windows NT és az OS/2 kiszolgálókat egy Sambát futtató Unix kiszolgálóra, és a cég fejlesztői számára PC-ket vásárolt. Ez utóbbi miatt azonban nem vett föl egy új, PC-s rendszergazdát; a rendszergazda most öt elosztott PC helyett egyetlen, központi Unix alkalmazásból kezeli a teljes rendszert. Ha Önnek problémái vannak a hálózatával, és biztos abban, hogy van jobb megoldás, akkor bátran fogjon hozzá ennek a könyvnek az olvasásához. Ha pedig már hallott valamit a Sambáról, és szeretné tudni, miben segíthet Önnek, akkor szintén ajánlható ez a könyv. Mindenekelőtt azért, mert megismerteti az olvasóival a Samba
használatát és a képességeit. Rövid időn belül Unix szolgáltatásokkal tudja ellátni az összes Windows alapú gépét anélkül, hogy különösebben sok pénzt vagy időt kellene áldoznia erre. Csábítóan hangzik? Nos, ha igen a válasz, akkor vágjunk is bele! Mi a Samba? A Samba olyan Unix alkalmazások gyűjteménye, amelyek az SMB (Server Message Block = kiszolgálói üzenetblokk) protokollt használják. Számos operációs rendszer, köztük a Windows és az OS/2 ezt az SMB protokollt használja az ügyfél–kiszolgáló típusú hálózatokban. Azzal, hogy a Samba támogatja ezt a protokollt, lehetővé teszi, hogy munkába álljanak a Unix kiszolgálók, és ugyanazt a hálózati protokollt használják, mint amit a Microsoft Windows alkalmazások. Így egy Sambával felszerelt Unix gép álcázott kiszolgálóként jelenhet meg az Ön Microsoft hálózatában, és a következő szolgáltatásokat nyújthatja: 12 • • • • • | SAMBA egy vagy
több fájlrendszer megosztása; mind a kiszolgálón, mind az ügyfelein telepített nyomtatók megosztott használata; ügyfelek segítése a Hálózatok ablak tallózásával; Windows tartományba bejelentkező ügyfelek hitelesítése; a WINS névkiszolgáló használata. A Samba Andrew Tridgell szellemi gyermeke, aki jelenleg a Samba fejlesztői csoport vezetője az ausztráliai Canberrában. A projekt 1991-ben indult el, amikor Andrew a helyi hálózatához olyan fájlkiszolgáló programot készített, ami a Digital Pathworks bármelyik DEC protokollját támogatta. Abban az időben azonban nem tudhatta, hogy a későbbiek során ebből alakul ki az SMB protokoll. Néhány évvel ezután bővítette a testre szabott kiszolgálóját, és SMB Server néven terjeszteni kezdte az interneten a termékét Andrew azonban nem tarthatta meg ezt a nevet – időközben ugyanis már egy másik cég termékének neve lett –, ezért megpróbálkozott az alábbi Unix átnevezési
kísérlettel: grep -i ’s. *m. *b’ /usr/dict/words Az erre érkezett válasz ez volt: salmonberry samba sawtimber scrable A legjobban a ,,Samba” név tetszett. Jelenleg a Samba csomag működése két Unix démon körül forog, amelyek megosztott erőforrásokat – vagy más szóval megosztásokat – kínálnak a hálózatba kapcsolódó SMB ügyfeleknek. (A megosztásokat helyenként szolgáltatásoknak is nevezik) A két démon: smbd Ez a démon lehetővé teszi fájlok és nyomtatók megosztását SMB hálózatban, és az SMB ügyfelek azonosságának és jogosultságának vizsgálatát. nmbd Ez a démon a WINS (Windows Internet Name Service, Windows internet névkiszolgáló) kezeléséről gondoskodik, és segítséget nyújt a tallózásban. A Sambát jelenleg egy önkéntesekből álló csoport tartja karban és bővíti Andrew Tridgell aktív felügyelete alatt. A Linux operációs rendszerhez hasonlóan a Sambát is nyitott forrású szoftvernek (OSS) tekintik a
szerzői, és a GNU General Public License (GPL) szabályai szerint terjesztik. A Samba kifejlesztését kezdetektől fogva részben az Ausztrál Nemzeti Egyetem támogatja, ahol Andrew Tridgell megszerezte a Ph.D doktori címét Emellett bizonyos fejlesztéseket független cégek is támogattak, mint például a Whistle és az SGI. A Sambának jól jött az a törekvés, hogy mind a kereskedelmi, mind a civil szervezetek készek anyagilag is segíteni a nyílt forráskódú programok kifejlesztését. 1. FEJEZET ISMERKEDÉS A SAMBÁVAL | 13 A Microsoft is hozzájárult a fejlesztéshez anyagilag azzal, hogy felkínálta a saját SMB definícióját és az internetes nyelvet ,,beszélő” közös internetes fájlrendszerét (Common Internet File System, CIFS), mint nyilvános RFC-t (Request for Comments), vagyis a szabványos dokumentációját. A CIFS protokoll nem más, mint az SMB protokoll jövőbeli verzióinak Microsofttól származó átnevezése, amelyet a Windows
termékeiben fognak használni – ezért ez a két fogalom, az SMB és a CIFS felváltva szerepel ebben a könyvben is, vagy gyakran olvasható egymás mellett (,,SMB/CIFS” alakban) a protokoll neveként. Mit nyújthat számunkra a Samba? Amint az előzőekből kitűnt, a Samba a Windows és a Unix gépek egymás mellett létezését segíti ugyanazon a hálózaton. Emellett különleges okai is lehetnek, hogy miért szeretnénk Samba kiszolgálót telepíteni a hálózatunkra: • Nem szeretnénk vagy nem engedhetjük meg magunknak, hogy fizetni kelljen egy minden extrával felszerelt Windows NT kiszolgálóért, ugyanakkor szükségünk van azokra a funkciókra, amelyeket a kiszolgáló kínál. • Közös területet kívánunk az adat- vagy felhasználói könyvtárak számára, hogy át lehessen lépni egy Windows kiszolgálóból egy Unix kiszolgálóba vagy fordítva. • Szeretnénk megosztani a nyomtatókat mind a windowsos, mind a unixos munkaállomások között. • Azt
szeretnénk, hogy Unix kiszolgálóból is elérhessünk NT fájlokat. Tegyünk egy képzeletbeli sétát, hogy lássuk, miként működik a Samba. Tegyük fel, hogy alapvetően a következő hálózati konfigurációval dolgozunk: van egy Sambát értő Unix gépünk, amelyhez a hydra nevet rendeljük, és van két Windows ügyfelünk, melyek a phoenix, illetve a chimaera nevet kapták, ők helyi hálózatban (LAN) vannak összekötve. Tételezzük fel továbbá, hogy a hydra géphez hozzá van kapcsolva egy lp nevű helyi tintasugaras nyomtató, továbbá egy network nevű megosztott lemez, és mindkét eszközhöz a másik két gép is hozzáférhet. A hálózati elrendezést az 11 ábra szemlélteti 1.1 ábra Samba kiszolgálóra épülő egyszerű hálózat 14 | SAMBA Ebben a hálózatban az összes számítógép ugyanannak a munkacsoportnak a része. A munkacsoport egyszerűen egy névvel azonosított tetszőleges gépcsoport, amelyben a tagszámítógépek és azok
erőforrásai SMB hálózaton keresztül kapcsolódnak egymáshoz. A hálózatban tetszőleges időben különböző munkacsoportok létezhetnek, de a mi alapvető hálózati példánkban csak egyetlen, SIMPLE nevű munkacsoport található. Lemezszolgáltatások megosztása Ha mindent jól állítottunk be, akkor a phoenix gép Asztalán a Network Neighborhood (Hálózat) ablakban látnunk kell a hydra nevű Samba kiszolgálót. Az 12 ábrán a phoenix gépnek ez az ablaka látható, amelyben valóban fel van sorolva a SIMPLE munkacsoporthoz tartozó összes számítógép, köztük a hydra is. Figyeljük meg, hogy a lista elején az Entire Network (Teljes hálózat) tétel áll. Amint előbb említettük, egy SMB hálózatba bármely időben egynél több munkacsoport is tartozhat Ha a felhasználó rákattint az Entire Network ikonra, felsorolást láthat a hálózatban éppen létező összes munkacsoportról. 1.2 ábra A Network Neighborhood ablak Közelebbről is szemügyre
vehetjük a hydra kiszolgálót, ha kétszer rákattintunk az ikonjára. Ekkor a hydra saját magával lép kapcsolatba, és bekéri megosztott erőforrásainak listáját – azokat a fájl- és nyomtató-erőforrásokat, amelyekkel a gép fel van szerelve Esetünkben ez a kiszolgálóhoz kapcsolódó lp nyomtató és a network nevű megosztott lemez, amint az 1.3 ábrán látható Vegyük észre, hogy a Windows a gazdanevek megjelenítésekor vegyesen használ kis- és nagybetűket (Hydra) A gazdanevekben nincs jelentősége a kis- és nagybetűk használatának, így a különböző ablakokban a hydra, Hydra és a HYDRA írásmódokkal is találkozhatunk, de mindegyik ugyanazt az egyetlen rendszert jelenti. A Sambának köszönhetően a Windows 98 a Unix kiszolgálót érvényes SMB kiszolgálónak látja, és ugyanúgy férhet hozzá a network mappához, mintha egyszerűen csak egy másik rendszermappa lenne. 1. FEJEZET ISMERKEDÉS A SAMBÁVAL | 15 1.3 ábra A hydra
kiszolgálón elérhető megosztások a phoenix gépből nézve A Windows 95/98/NT egyik népszerű képessége lehetővé teszi, hogy a Windows Intéző Hálózati meghajtó csatlakoztatása parancsának választásával meghajtóazonosító betűjelet rendeljünk egy ismert hálózati könyvtárhoz*. Miután ezt megtettük, alkalmazásaink egy normál meghajtóbetűjellel érhetik el a mappát a hálózaton keresztül. Így ebben a mappában adatokat tárolhatunk, programokat telepíthetünk és futtathatunk, sőt még jelszóval is megvédhetjük a nemkívánatos látogatókkal szemben. Az 14 ábra arra mutat példát, miként rendelhetünk meghajtóbetűjelet egy hálózati könyvtárhoz. 1.4 ábra Windows meghajtóbetűjel hozzárendelése hálózati meghajtóhoz * Azt is megtehetjük, hogy az egér jobb oldali gombjával rákattintunk egy megosztott erőforrásra, majd a menüben a Hálózati meghajtó csatlakoztatása parancsot választjuk. 16 | SAMBA Vessünk egy
pillantást az 1.4 ábrán látható ablak Path (Elérési út) bejegyzésére Egy hálózatban lévő gépen hasonlóképpen jeleníthető meg egy könyvtár úgy, hogy két fordított törtjel (backslash) után beírjuk a hálózati gép nevét, majd egy újabb fordított törtjel után a hálózati gép könyvtárát, amint itt látható: \hálózati számítógépkönyvtár A Windows világában ez a névmegadás UNC (Universal Naming Convention) megadásként ismert. Így például az 14 ábra párbeszédablakában a hydra kiszolgáló hálózati könyvtárát az alábbi megadás azonosítja: \HYDRA etwork Ha némiképp ismerősnek tűnik ez a névmegadás, akkor valószínűleg az URL (Uniform Resource Locator) megadásra gondolunk, amit webes böngészők, például a Netscape Navigator vagy az Internet Explorer használ az internethez kapcsolódó gépek neveinek feloldásához. Ügyeljünk arra, hogy ne keverjük össze a kétféle megadást: a webböngészők rendszerint a
normál törtjelet használják a fordított törtjel helyett, továbbá az első törtjel előtt megkívánják az adatátviteli protokoll jelölését is (úgy mint ftp, http), valamint utána egy kettőspontot. Az URL-eknek és az UNC-knek a valóságban semmi közük egymáshoz Miután csatlakoztattuk a hálózati meghajtót, a Windows és a programjai úgy tekintik a hálózati könyvtárat, mintha egy merevlemezes meghajtó lenne. Ha bármely olyan alkalmazásunk van, amely támogatja a többfelhasználós működést egy hálózaton, akkor ezeket a programokat a hálózati meghajtóra is telepíthetjük* Az 1.5 ábrán látható az így létrejött hálózati meghajtó, ami a Windows 98 ügyfél ablakában pontosan úgy jelenik meg, mint bármely más tárolóeszköz. Figyeljük meg a G: meghajtó ikonja előtti csővezeték szimbólumot! Jelzi, hogy az illető meghajtó valójában nem merevlemez, hanem hálózati meghajtó. A chimarea nevű Windows NT munkaállomásunkból
nézve a Samba majdnem pontosan úgy látható, mint a Windows 98-as gépből. Az 16 ábrán a Windows NT 40 Network Neighborhood párbeszédablakában ugyanúgy jelenik meg a hydra kiszolgáló A Windows NT Workstation 4.0-s gépen ugyanúgy rendelhetünk betűjelet a hálózati meghajtóhoz, amint azt az előbbiekben tettük Nyomtató megosztása Észrevehettük, hogy az 1.3 ábra párbeszédablakában a hydra gépen elérhető megosztások között az lp jelű nyomtató is megjelenik Ez azt jelenti, hogy a Unix kiszolgálón olyan nyomtató is található, amelyhez a munkacsoportba tartozó különböző SMB ügyfelek hozzáférhetnek. Bármely ügyfél adatokat küldhet a nyomtatóra, amelyeket a Unix kiszolgáló nyomtatási sorba állít, és az érkezésük sorrendjében kinyomtat. * Ne feledkezzünk meg arról, hogy számos végfelhasználói engedély tiltja egy program olyan telepítését a hálózatra, amely lehetővé tenné több ügyfél számára a hozzáférést.
Nézzünk utána a licencszerződésben, hogy biztosak legyünk a dolgunkban 1. FEJEZET ISMERKEDÉS A SAMBÁVAL | 17 1.5 ábra A network könyvtárhoz az ügyfél gépén a G: meghajtóbetűjel van hozzárendelve 1.6 ábra A hydra kiszolgálón elérhető megosztások (a chimarea gépből nézve) Egy megosztott nyomtatónak a Windows oldali telepítése még egyszerűbb, mint egy lemezmegosztás elkészítése. Kettőt kattintva a nyomtatóra, majd a gyártóját és a típusát kiválasztva telepíthetjük a Windows ügyfélgépre a nyomtató illesztőprogramját. A Windows ekkor az illető nyomtatónak megfelelő formátumban tudja az információkat a hálózati nyomtatóra küldeni, amelyet úgy érhet el, mint egy helyileg telepített nyomtatót (a fejezet későbbi részében bemutatjuk ezt a műveletet). Az 17 ábrán a Windows 98-as gép Printers (Nyomtatók) ablakában látjuk a hálózati nyomtatót. Figyeljük meg, hogy a nyomtató ikonja fölött is megjelenik a
csővezeték szimbóluma, jelezve, hogy az illető nyomtató a hálózaton keresztül érhető el. A dolgok a Unix oldaláról nézve Amint korábban említettük, a Samba a Unix környezetben démonprogramok gyűjteményeként jelenik meg. Ezeket a démonokat a Unix ps és netstat parancsaival tekinthetjük meg, az általuk létrehozott üzeneteket pedig egyéni debug fájlokon keresztül vagy a Unix syslog segítségével, a beállítástól függően. A konfigurálást a Samba egyetlen, smb.conf nevű konfigurációs fájljában végezhetjük el Ha ezen felül még az egyes démonok működését is látni szeretnénk, akkor a Samba smbstatus programját kell futtatnunk, ami szép sorjában mindent megjelenít. 18 | SAMBA 1.7 ábra A hydra kiszolgálón elérhető hálózati nyomtató (a chimarea gépből nézve) Íme a működése: # smbstatus Samba version 2.04 Service uid gid pid machine -------------------------------------network davecb davecb 7470 phoenix
(192.168220101) Sun May 16 network davecb davecb 7589 chimaera (192.168220102) Sun May 16 Locked files: Pid DenyMode R/W Oplock Name ----------------------------------------------7589 DENY NONE RDONLY EXCLUSIVE+BATCH /home/samba/quicken/inet/ common/system/help.bmp Sun May 16 21:23:40 1999 7470 DENY WRITE RDONLY NONE /home/samba/word/office/ findfast.exe Sun May 16 20:51:08 1999 7589 DENY WRITE RDONLY EXCLUSIVE+BATCH /home/samba/quicken/ lfbmp70n.dll Sun May 16 21:23:39 1999 7589 DENY WRITE RDWR EXCLUSIVE+BATCH /home/samba/quicken/inet/ qdata/runtime.dat Sun May 16 21:23:41 1999 7470 DENY WRITE RDONLY EXCLUSIVE+BATCH /home/samba/word/office/ osa.exe Sun May 16 20:51:09 1999 7589 DENY WRITE RDONLY NONE /home/samba/quicken/ qversion.dll Sun May 16 21:20:33 1999 7470 DENY WRITE RDONLY NONE /home/samba/quicken/ qversion.dll Sun May 16 20:51:11 1999 Share mode memory usage (bytes): 1043432(99%)free+4312(0%)used+832(0%)overhead = 1048576(100%)total 1. FEJEZET ISMERKEDÉS A SAMBÁVAL |
19 Az eredményben három adatcsoportban jelenik meg a Samba állapota, melyek mindegyike különálló szakaszokból áll. Az első szakasz azt mondja meg, hogy milyen rendszerek kapcsolódnak a Samba kiszolgálóhoz, megadva mindegyik ügyfélgép nevét (phoenix és chimarea) és IP címét. A második szakasz felsorolja azon fájlok nevét és állapotát, amelyek a kiszolgáló megosztásain éppen használatban vannak, beleértve írás/olvasási állapotukat és a fájlok esetleges zárolásait is. Végül a harmadik szakasz annak a memóriának a méretét adja meg, amelyet a Samba az általa felügyelt megosztásokhoz aktuálisan kiosztott, beleértve azt a méretet is, amelyet a megosztások aktívan használnak, plusz a további fejlécet. (Vegyük figyelembe, hogy ez nem ugyanaz a memóriaméret, mint amit az smbd vagy az nmbd eljárásai teljes memóriaterületként használnak.) Ne aggódjunk, ha most nem értenénk ezeket a statisztikákat – ahogyan előre haladunk a
könyvben, könnyebben meg fogjuk érteni őket. Ismerkedés egy SMB/CIFS hálózattal Miután befejeztük a Sambában tett rövid sétánkat, szenteljünk némi időt arra, hogy megismerkedjünk a Samba választott környezetével: egy SMB/CIFS hálózattal. Az SMB környezetben folyó hálózati munka lényegesen különbözik egy Unix környezetben folytatott, TCP/IP alapú hálózati munkától, mert számos új koncepcióval és információval kell megismerkednünk. Először az SMB hálózathoz tartozó alapvető koncepciókat tekintjük át, azt követően megismerkedünk néhány Microsoftos megvalósításával, végül megtudjuk, hol illeszthető be egy Samba kiszolgáló a képbe, és hol nem. Röviden a NetBIOS-ról Először menjünk vissza egy keveset időben. 1984-ben az IBM elkészített egy egyszerű alkalmazásprogramozási felületet (API) a számítógépeinek hálózati működtetéséhez, aminek a Network Basic Input/Output (NetBIOS) nevet adta. A NetBIOS API
kezdetleges eszközt kínált ahhoz, hogy egy alkalmazás hozzáférhessen más számítógépekhez, és adatokat osszon meg velük. A NetBIOS API jórészt úgy tekinthető, mint a szabványos BIOS API hívások hálózati kiegészítése. A BIOS csak arra alkalmas, hogy minden egyes alacsony szintű hívás a helyi gép hardverére korlátozódjon, és semmiféle segítséget nem nyújt ahhoz, hogy egy hívás rendeltetési helyét megváltoztathassuk. Ezzel szemben a NetBIOS eredeti rendeltetése az volt, hogy IBM PC-s vagy Token Ring hálózatokban a számítógépek kicserélhessék egymás közt az utasításokat. Ezért szükség volt egy alacsony szintű szállítási protokoll megvalósítására, amin keresztül kéréseket lehetett küldeni az egyik számítógépből a másikba. Az 1985-ös év vége felé az IBM kiadott egy ilyen protokollt, amit összeolvasztott a NetBIOS API-val, és az így létrejött terméknek a NetBIOS Extended User Interface (NetBEUI) nevet adta. A
NetBEUI protokollt kisebb helyi hálózatokhoz (LAN) tervezték, lehetővé téve, hogy a hálózatba kötött mindegyik gépnek saját neve legyen (max. 15 karakteresig) A ,,kisebb hálózat” itt olyan hálózatot jelent, amelyik 255-nél kevesebb csomópontból áll – 1985-ben ez még ésszerű korlátozásnak volt tekinthető. 20 | SAMBA A NetBEUI protokoll nagyon népszerű volt a hálózati alkalmazásokban, beleértve azokat is, amelyek Windows for Workgroups alatt futottak. A későbbiekben a NetBIOS olyan változatai kerültek előtérbe, melyek a Novell IPX hálózati protokolljain valósultak meg, s ezek a NetBEUI-val versengtek. Az akkoriban fejlődésnek indult internetes közösség a meglévő hálózati protokollok közül azonban TCP/IP-t és a UDP/IP-t választotta, ezért hamarosan elengedhetetlenné vált a NetBIOS API megvalósítása ezeken a protokollokon. Emlékezzünk arra, hogy a TCP/IP számokat használ a számítógépek megcímzéséhez,
olyanokat, mint például 192.168220100, a NetBIOS pedig neveket használ Ez jelentette az egyik fő problémát a két protokoll összegyúrásakor. Az Internet Engineering Task Force (IETF) 1987-ben RFC 1001 és 1002 jelöléssel kiadott egy sor szabványosító dokumentumot, melyekben körvonalazták, hogy a NetBIOS miképpen volna képes működni egy TCP/UDP hálózaton. Ez a dokumentumcsomag szabályozza még ma is az összes létező megvalósítást, beleértve azokat is, amelyeket a Windows használ a saját operációs rendszereiben, valamint a Samba szoftverkészletét is. Azóta a szóban forgó dokumentumcsomag által szabályozott szabvány NetBIOS over TCP/IP vagy röviden NBT néven vált ismertté. Az NBT szabvány (RFC 1001/1002) jelenleg a szolgáltatások alábbi hármasát vázolja egy hálózatban: • névkiszolgáló; • két kommunikációs szolgáltatás, nevük: – datagrams (vagy datagram szolgáltatás); – sessions (vagy session szolgáltatás). A
névkiszolgáló az előbb említett, névvel és címmel kapcsolatos problémát oldja meg: lehetővé teszi, hogy a hálózatban mindegyik számítógép deklaráljon egy rá jellemző nevet, ami aztán lefordítható egy, a számítógépek által érthető IP címre, nagyon hasonlóan ahhoz, ahogyan ezt az interneten a DNS teszi. A datagram és a session szolgáltatások másodlagos kommunikációs protokollok, amelyeknek az a feladata, hogy adatokat továbbítsanak a hálózatba kötött NetBIOS számítógépek között. Név igénylése Egy emberi lény viszonylag könnyen igényelhet magának nevet. Ugyanez azonban egy NetBIOS hálózatba kapcsolt gép esetén már nem ennyire egyszerű. Lássunk néhány részletet! Amikor a NetBIOS világában egy számítógép bejelentkezik a hálózatba, és szeretne nevet kapni magának, ezt névregisztrálásnak nevezik. Ugyanabban a munkacsoportban azonban nem igényelheti két gép ugyanazt a nevet, mert ez vég nélküli zavarokhoz
vezethet, amikor bármelyik másik gép kommunikálni szeretne a két gép egyikével. A probléma elkerülésének két megközelítése van: • A NetBIOS névkiszolgáló (NetBIOS Name Server, NBNS) használatával nyomon kell követni, hogy mely gazdagépek regisztráltak maguknak NetBIOS nevet. • Lehetővé kell tenni, hogy a hálózatba kapcsolt mindegyik gép megvédje a saját nevét, amikor egy másik gép megpróbálja használni az ő nevét. Az 1.8 ábra két (sikertelen) névregisztrálást mutat be: egyet a NetBIOS névkiszolgáló segítségével, egyet anélkül. 1. FEJEZET ISMERKEDÉS A SAMBÁVAL | 21 1.8 ábra Névregisztrálás NBNS igénybevételével és anélkül Ezen kívül kell még valamilyen módot találni arra, hogy egy NetBIOS név átalakítható legyen specifikus IP címmé, amint erről már volt szó. Ezt a módot névfeloldásnak nevezik Az NBT-nél erre kétféle megoldás létezik: • Minden egyes gép jelentse vissza az IP címét, amikor
broadcast (üzenetszórásos) hívás kéri be a gép NetBIOS nevét. • Az NBNS segítse a NetBIOS nevek feloldását IP címekké. Az 1.9 ábra szemlélteti a névfeloldásnak ezt a két módját Amint várható, az NBNS névkiszolgáló megléte a hálózaton nagyon sokat segíthet. Azért, hogy pontosan lássuk, hogyan történhet ez, tekintsük át az NBNS nélküli esetet. Ilyenkor, ha bejelentkezik egy ügyfélgép, szétküld egy üzenetet, amelyben kijelenti, hogy a saját, specifikus NetBIOS nevét akarja regisztrálni. Ha többszöri regisztrálási kísérletet követően sincs senkinek kifogása a név használata ellen, akkor a gép megtartja a nevet. Ha viszont a helyi alhálózatban valamelyik gép már használja a szóban forgó nevet, egy üzenetet küld vissza a névigénylő ügyfélnek, amelyben közli, hogy a név már foglalt. Ezt a gazdanév megvédésének nevezik. Az ilyen módszer akkor jöhet jól, ha egy ügyfél váratlanul kilép a hálózatból: ekkor
ugyanis egy másik gép probléma nélkül megkaphatja a nevét. Másrészt viszont rendkívüli módon megnőne a hálózat forgalma, ha még az olyan egyszerű műveleteket is, mint a névregisztrálás, az egész hálózatot érintően kellene lebonyolítani. 22 | SAMBA 1.9 ábra Névfeloldás NBNS igénybevételével és anélkül Az NBNS használata esetén ugyanez történik azzal a különbséggel, hogy a kommunikáció csak az igénylő gépre és az NBNS kiszolgálóra korlátozódik. Amikor az ügyfélgép bejelenti az igényét egy név regisztrálására, a regisztrálási kérelem az ügyféltől közvetlenül az NBNS kiszolgálóra kerül, és az NBNS kiszolgáló válaszol, hogy a név foglalt-e már vagy sem. Ezt ponttól-pontig kommunikációnak nevezik, és különösen azoknál a hálózatoknál előnyös, amelyeknek egynél több alhálózatuk van. Ennek oka, hogy a forgalomirányítók gyakran eleve úgy vannak konfigurálva, hogy blokkolják a broadcast
csomagokat. Ugyanezek az elvek alkalmazhatók a névfeloldóknál is. Az NBNS nélkül a NetBIOS név feloldása szintén a ,,szétszórásos” mechanizmussal történne. Az összes igénybejelentő csomag eljutna a hálózat összes számítógépéhez, abban a reményben, hogy egyetlen, esetleg érintett gép közvetlenül válaszol a kérő gépnek. Ennyiből már világosan érthető, hogy egy NBNS kiszolgáló és a ponttól-pontig kommunikáció használata összehasonlíthatatlanul kisebb mértékben terheli le a hálózatot, mint az az áradat, amit az összes gépnek elküldendő névfeloldási kérelmek sokasága idézne elő. Csomóponttípusok Hogyan tudnánk megmondani, hogy a hálózatunkban lévő egyes ügyfelek milyen stratégiát használnának a nevük regisztrálásához és feloldásához? Egy NBT hálózat minden egyes gépe a következő jelölések egyikét kapja, attól függően, hogy miként kezeli a név- 1. FEJEZET ISMERKEDÉS A SAMBÁVAL | 23
regisztrálást és -feloldást: b-csomópont, p-csomópont, m-csomópont és h-csomópont. Az egyes csomóponttípusok viselkedését az 1.1 táblázat foglalja össze 1.1 táblázat A NetBIOS csomóponttípusai Típus Jelentés b-csomópont p-csomópont m-csomópont Csak broadcast regisztrálást és feloldást használ. Csak ponttól-pontig regisztrálást és feloldást használ. Broadcast eljárást használt a regisztráláshoz. Ha ez sikeres, akkor értesíti az eredményről az NBNS kiszolgálót. Broadcast eljárást használ a feloldáshoz; NBNS kiszolgálót használ, ha a broadcast sikertelen. NBNS kiszolgálót használ a regisztráláshoz és a feloldáshoz; broadcast eljárást használ, ha az NBNS kiszolgáló nem válaszol vagy nem működik. h-csomópont (hibrid) Windows ügyfelek esetében általában azt tapasztaljuk, hogy ezek h-csomópontokként vagy hibrid csomópontokként vannak felsorolva. Mellesleg szólva a h-csomópontokat mint hibatűrőbb típust a
Microsoft fejlesztette ki később, és így nem szerepel az RFC 1001/1002 dokumentációban. Egy Windows 95/98-as gépről úgy tudhatjuk meg, hogy milyen típusú csomópontot képvisel, hogy a futtatási parancssorba beírjuk a winipcfg parancsot, és a megnyíló párbeszédablakban a További információ (More Info) gombra kattintunk. Windows NT gépen írjuk be az ipconfig /all parancsot, majd keressük meg a Csomóponttípus (Node Type) sort. Mit tartalmaz egy név? A NetBIOS által használt nevek eléggé különböznek a feltehetően ismerős DNS nevektől. Először is a NetBIOS nevek betűi folyamatosan helyezkednek el a számukra adott helyen. Másként fogalmazva ez azt jelenti, hogy a neveknek nincsenek olyan, a gazdagép nevétől ponttal elválasztott toldalékai, mint amilyenek például az ora.com vagy a sambaorg nevekben találhatók. Minden egyes számítógépet rá jellemző egyetlen név azonosít Másodszor, a NetBIOS nevek maximum 15 karakterből állhatnak,
nem kezdődhetnek csillaggal (*), továbbá csak az (angol) szabványos alfanumerikus karaktereket (a–z, A–Z, 0–9) és a következő speciális jeleket tartalmazhatják: !@#$%^&()-’{}.~ Bár a pont (.) karakter használata engedélyezett, mégsem tanácsos használni, mert nem garantálható, hogy az ezt tartalmazó nevek a TCP/IP-re épülő NetBIOS jövőbeli változataiban is működni fognak. Nem véletlen egybeesés, hogy az összes érvényes DNS név egyúttal érvényes NetBIOS név is. A valóságban gyakran előfordul, hogy egy Samba kiszolgáló DNS neve egyúttal a kiszolgáló NetBIOS neveként is szolgál. Ha például van egy phoenixoracom nevű 24 | SAMBA gépünk, akkor ennek a NetBIOS neve feltehetően PHOENIX lenne (amely után nyolc üres hely áll). Erőforrások nevei és típusai Egy számítógép a NertBIOS révén nem csak közli másokkal a jelenlétét, hanem arról is tájékoztatja a többieket, hogy milyen típusú szolgáltatásokat
kínál. Így például a phoenix gép jelezheti, hogy nem csupán egy munkaállomás, hanem egyúttal fájlkiszolgáló is, és képes WinPopup üzenetek fogadására. Ezt azzal teheti meg, hogy egy 16 bájtot – úgynevezett erőforrástípus-jelzést – fűz a gép (erőforrás) nevének végére (lásd az 110 ábrát), és egynél többször regisztrálja a nevét. 1.10 ábra A NetBIOS nevek felépítése Az egy bájtos erőforrástípus-jelzés azt a szolgáltatást jelzi, amelyet a megnevezett gép nyújtani képes. Ebben a könyvben gyakran találkozhatunk erőforrástípusokkal, amelyek hegyes zárójelek (<>) között állnak a NetBIOS név után, például így: PHOENIX<00> Megnézhetjük, hogy egy adott NBT géphez milyen nevek vannak regisztrálva, ha a Windows parancssorába az NBTSTAT parancsot beírva futtatjuk ezt a segédprogramot. Mivel a szolgáltatások egyediek (vagyis egynél több nem lehet regisztrálva), az eredménylistában UNIQUE
típusúakként listázódnak ki. Az alábbi részlet például a hydra kiszolgálót írja le: D:>NBTSTAT -a hydra NetBIOS Remote Machine Name Table Name Type Status ------------------------------------------HYDRA <00> UNIQUE Registered HYDRA <03> UNIQUE Registered HYDRA <20> UNIQUE Registered . A listából kiolvasható, hogy a gép (munkaállomás) neve hydra NetBIOS névként van regisztrálva, képes WinPopup üzenetek fogadására, továbbá fájlkiszolgáló. Az 12 táblázat a név lehetséges attribútumai közül sorol fel néhányat. 1. FEJEZET ISMERKEDÉS A SAMBÁVAL | 25 1.2 táblázat A NETBIOS Unique erőforrástípusai Megnevezett erőforrás A bájt hexadecimális értéke Szabványos munkaállomás szolgáltatásai Üzenetküldő szolgáltatás (WinPopup) RAS kiszolgáló szolgáltatás Tartomány-főtallózó szolgáltatás (az elsődleges tartományvezérlővel társítva) Főtallózó neve NetDDE szolgáltatás Fájlkiszolgáló
(beleértve a nyomtatókiszolgálót) RAS ügyfél szolgáltatás Hálózati monitor közvetítőprogram Hálózati monitor segédprogram 00 03 06 1B 1D 1F 20 21 BE BF Figyeljük meg, hogy mivel a DNS neveknek nincsenek erőforrástípusaik, a tervezők szándékosan a 20-as hexadecimális értéket (egy ASCII szóközt) tették a fájlkiszolgáló típusának alapbeállításává. Csoportnevek és típusok Az SMB a csoportok fogalmát is használja, amivel a gépek regisztrálhatják magukat. Korábban már említettük, hogy a példánkban a gépek egy munkacsoporthoz tartoznak, ami ugyanannak a hálózatnak valamely gépcsoportját jelenti. Így egy hálózatban könnyen lehet például egy EXPORT és egy IMPORT nevű munkacsoport, melyek mindegyike különböző kiszolgálókból és nyomtatókból állhat. A Windows világában egy munkacsoport és egy SMB csoport ugyanazt jelenti. Folytatva az NBTSTAT példánkat, a hydra Samba kiszolgáló egyúttal a SIMPLE munkacsoport
tagja is (a csoport – GROUP – attribútuma hexa 00), és főtallózóként is választható (1E csoport-attribútum). Az NBTSTAT kimenetének fennmaradó része: NetBIOS Remote Machine Name Table, continued Name Type Status --------------------------------------------SIMPLE <00> GROUP Registered SIMPLE <1E> GROUP Registered . MSBROWSE <01> GROUP Registered Az 1.3 táblázat azokat a lehetséges csoport-attribútumokat sorolja fel, amelyekkel egy gép rendelkezhet. További információk a Windows NT in a Nutshell című O’Reilly-könyvben olvashatók, amelynek szerzője Eric Pearce. (Az O’Reilly hasonló témájú könyvei közül Aelen Frisch Windows NT rendszeradminisztráció című kötete jelent meg magyar nyelven a Kossuth Kiadónál, és ugyancsak részletesen foglalkozik a csoportok kérdéseivel – a szerkesztő megjegyzése.) 26 | SAMBA 1.3 táblázat A NETBIOS csoport-erőforrástípusai Megnevezett erőforrás A bájt hexadecimális
értéke Szabványos munkaállomás csoport Logon Server Főtallózó neve Normál csoportnév (a tallózó megválasztásánál használt) Internet csoportnév (rendszergazda) <01><02> MSBROWSE <02> 00 1C 1D 1E 20 01 Az utolsó bejegyzés, az MSBROWSE , arra szolgál, hogy bejelentse magát egy csoport a többi főtallózónak. A névben a nem nyomtatódó karakterek az NBTSTAT nyomaton pontokként jelennek meg. Ne aggódjunk, ha nem értjük az összes erőforrás- és csoporttípust Közülük egyeseket nem kell használnunk a Sambához, másokról pedig a könyvben máshol részletesebben olvashatunk Itt csak az a fontos, hogy az elnevezési mechanizmus logikáját értsük Datagram és session Ezen a ponton tegyünk egy kis kitérőt, és ismerkedjünk meg az NBT másik feladatkörével, nevezetesen két NetBIOS gép közötti kommunikációs szolgáltatásokkal. A TCP/IP alapú NetBIOS két szolgáltatástípust kínál: a datagram szolgáltatást
és a session szolgáltatást. A Samba használatához e két szolgáltatás működésének megértése nem lényeges, de arra azért jó, hogy képet kapjunk az NBT működéséről, valamint arról, hogy miként kereshetünk hibát a Sambában, ha nem működne. A datagram szolgáltatás nem létesít állandó kapcsolatot az egyik és a másik gép között. Az egyik gép egyszerűen kiküldi az adatcsomagokat egy vagy több másik gépnek anélkül, hogy tekintettel lenne a rendeltetési állomásra érkezésük sorrendjére, vagy hogy figyelne arra, hogy egyáltalán megérkeznek-e a csomagok. A datagramok küldése kevésbé terheli ugyan a hálózatot, mint a session szolgáltatás, ennek ellenére képes lefagyasztani a hálózatot, ha nem kellő gondossággal használják (emlékszünk a broadcast névfeloldásra az előző részből?). Ezért a datagramok elsősorban azt a célt szolgálják, hogy gyorsan elküldjenek egyszerű blokkokat egy vagy több gépre A datagram
szolgáltatás az 14 táblázatban felsorolt egyszerű primitíveket használja a kommunikáláshoz. 1.4 táblázat Datagram primitívek Primitív Leírás Datagram küldése Elküld egy datagram csomagot egy gépre vagy gépcsoportra. Datagram küldése mindazon gépekre, amelyek egy datagram broadcast vételével várakoznak. Fogad egy datagramot egy géptől. Várakozik egy broadcast datagramra. Datagram broadcast küldése Datagram vétele Datagram broadcast vétele 1. FEJEZET ISMERKEDÉS A SAMBÁVAL | 27 A session szolgáltatás ennél bonyolultabb. A session olyan kommunikációs eljárást jelent, ami elvileg lehetőséget nyújt két NetBIOS alkalmazás közötti problémák vagy működésképtelen kapcsolatok észlelésére. Az NBT session megértését segíti, ha úgy tekintjük, mint egy telefonhívást.* A hívó és a hívott gép között teljes duplex kapcsolat létesül, aminek a beszélgetés egész idején nyitottnak kell maradnia. Mindkét fél tudja,
hogy ki a hívó és ki a hívott, és az 1.5 táblázatban felsorolt egyszerű primitívek segítségével beszélhetnek egymással 1.5 táblázat A session primitívjei Primitív Leírás Hívás Session kezdeményezése egy géppel, amely egy adott néven figyel. Hívást vár egy ismert vagy bármely más hívó féltől. Kilépés egy hívásból. Adatokat fogad egy másik géptől. Információkat kap a kért sessionról. Figyelés Letétel Küldés Session állapota A session az erőforrások megosztásának alapja egy NBT hálózaton. Tipikusan arra használják őket, hogy tartós kapcsolatok jöjjenek létre az ügyfélgépek és a kiszolgáló lemezvagy nyomtatómegosztásai között Az ügyfél ,,felhívja” a kiszolgálót, és információkat küld arra vonatkozóan, hogy mely fájlokat akarja megnyitni, mely adatokat akarja kicserélni stb. A hívások hosszú ideig tarthatnak – órákig vagy akár napokig –, és mindez egyetlen kapcsolat keretében zajlik. Ha
hiba lépne fel, akkor a session szoftvere (TCP) újra elküldi az adatokat mindaddig, amíg azok rendben meg nem érkeznek, ellentétben a datagram szolgáltatás (UDP) ,,küldd el és fohászkodj” típusú módszerével. A valóságban azonban – miközben azt feltételezzük, hogy a session képes a problematikus kommunikációs kapcsolatok kezelésére – nem mindig ilyen jó a helyzet. Amint talán már tapasztalhattuk, a Windows hálózatok használatakor komoly problémák merülhetnek fel. Ha a kapcsolat valamilyen oknál fogva megszakad, a két számítógép között megnyitott session információk könnyen érvénytelenné válhatnak Ha ez történik, akkor a session információk újbóli megszerzésének csak egyetlen módja marad: ugyanaz a két számítógép újra hívja egymást, és elölről kezdik a kapcsolat felépítését. Aki további tudnivalókat szeretne olvasni erről a két szolgáltatásról, annak ajánlható az RFC 1001-es dokumentáció
tanulmányozása. Itt mindössze két fontos dologra hívjuk fel még a figyelmet: • A session mindig két NetBIOS számítógép között jön létre, nem kevesebb, és nem több gép között. Ha egy session szolgáltatás megszakad, akkor a kapcsolat feltételezi, hogy az ügyfél elegendő állapotinformációt tárol ahhoz, hogy újból megteremtődjenek a kapcsolatok. A gyakorlatban azonban ez ritkán fordul elő • A datagramok több gépre is elküldhetők (broadcast), viszont megbízhatatlanok. Más szavakkal ez azt jelenti, hogy a küldő fél semmilyen módon nem képes megtudni, vajon a küldött datagramok tényleg megérkeztek-e a rendeltetési helyükre. * Amint láthatjuk az RFC 1001-ben, a telefonos hasonlat egyértelmű volt az NBT szolgáltatás elkészítését tekintve. 28 | SAMBA Microsoft implementációk Ennyi háttérismeret birtokában most már megnézhetjük, miként valósította meg a Microsoft a bemutatott koncepciókat a CIFS/SMB hálózatokon.
Amint várható volt, a gyakorlati kivitelezés során néhány bonyolult bővítésre is sor került, melyekkel szintén megismerkedünk. Windows tartományok Emlékezzünk vissza, hogy egy munkacsoport olyan SMB számítógépek együttese, amelyek mindegyike egy alhálózatban van, és ugyanahhoz az SMB csoporthoz tartozik. Egy Windows tartomány (domain) ennél egy lépéssel tovább lép: ez a tartomány az SMB gépek olyan csoportját jelenti, amelyben van egy kiszolgáló is, amely a tartományvezérlő szerepkörét tölti be. Ahhoz, hogy egy munkacsoport Windows tartománnyá váljék, a munkacsoportban kell lennie egy tartományvezérlőnek.* Ellenkező esetben csak egy SMB munkacsoportról van szó (lásd az 1.11 ábrát) 1.11 ábra Egy egyszerű Windows tartomány Jelenleg egy tartományvezérlő (logon kiszolgáló) két különálló protokollt használ: egyet a Windows 95/98-as gépekkel való kommunikációhoz, egyet pedig a Windows NT gépekkel való
kommunikációhoz. Mivel a Samba jelenleg csak a Windows 95/98-as gépek tartományvezérlő protokollját valósítja meg (ami lehetővé teszi, hogy tartományvezérlőként működjön Windows 9x gépek körében), még nem támogatja teljes körűen a Windows NT gépekhez szükséges ilyen protokollt. Ugyanakkor a Samba fejlesztő csapata ígéretet tett arra, hogy a jövőbeli Samba 2.1-es változat a Windows NT tartományvezérlő protokollt is támogatni fogja. * A Windows tartományokat a Microsoft ,,Windows NT tartománynak” nevezi, mert feltételezi, hogy a tartományvezérlő szerepét Windows NT gépek töltik be. Mivel azonban ezt a szerepet egy Samba gép is betöltheti, a félreértések elkerülése végett az ilyen csoportokat egyszerűen Windows tartománynak nevezzük. 1. FEJEZET ISMERKEDÉS A SAMBÁVAL | 29 Mi az oka ezeknek a nehézségeknek? Az a protokoll, amit a Windows tartományvezérlők az ügyfeleikkel és más tartományvezérlőkkel való
kommunikációhoz használnak, a cég tulajdonát képezi, és a Microsoft még nem tette közzé. Ez arra kényszerítette a Samba fejlesztő csoportját, hogy visszafejtsék a tartományvezérlő protokollt, hogy lássák, milyen kódok hajtják végre az egyes speciális feladatokat. Tartományvezérlők A tartományvezérlő egy Windows tartomány idegközpontja, ahhoz hasonlóan, amiképp egy NIS kiszolgáló is az idegközpontja egy Unix hálózati információszolgáltatásnak. A tartományvezérlők különböző feladatokért felelnek Az egyik ilyen felelősségi kör, amellyel foglalkoznunk kell, az úgynevezett hitelesítés. A hitelesítés az az eljárás, amellyel megadható vagy megtagadható egy felhasználótól a hozzáférés egy megosztott erőforráshoz vagy másik hálózati géphez, tipikusan jelszó használata révén. Minden egyes tartományvezérlő használ egy biztonságos fiókkezelőt (SAM), amellyel karbantartja a felhasználónév–jelszó
kombinációt. A tartományvezérlő ezután elkészíti a felhasználói nevekhez kapcsolt jelszavak központi tárát (felhasználónként egy jelszó), ami sokkal hatékonyabb, mintha külön-külön tartaná nyilván az egyes ügyfeleket és a rendelkezésre álló hálózati erőforrásokhoz tartozó jelszavak százait. Amikor egy Windows tartományban egy nem hitelesített ügyfél hozzá szeretne férni a kiszolgáló megosztásaihoz, a kiszolgáló a tartományvezérlőhöz fordul, és megkérdezi tőle, hitelesítve van-e az adott felhasználó. Amennyiben igen, akkor a kiszolgáló létrehoz egy kapcsolatot azokkal a hozzáférési jogokkal, amelyekkel a felhasználó az adott megosztás vonatkozásában rendelkezik. Amennyiben nem, akkor megtagadja a kapcsolat létrehozását Miután a tartományvezérlő elvégezte a felhasználó hitelesítését, visszaküld a felhasználónak egy speciális hitelesítő jelzést, úgyhogy a felhasználónak nem kell ismét bejelentkeznie
ugyanezen tartomány más erőforrásaihoz. Ettől a pillanattól kezdve úgy tekinthető, hogy a felhasználó ,,bejelentkezett” magába a tartományba (lásd az 1.12 ábrát) 1.12 ábra Tartományvezérlő használata a hitelesítéshez 30 | SAMBA Elsődleges és tartalék tartományvezérlők A Windows tartomány egyik alapvető elve a redundancia. Azt a tartományvezérlőt, amelyik egy tartományban éppen aktív, elsődleges tartományvezérlőnek (PDC) nevezik A tartományban e mellett lehet még egy vagy több tartalék tartományvezérlő (BDC) is, amelyek átvehetik az elsődleges tartományvezérlő szerepét, ha az meghibásodna vagy elérhetetlenné válna A BDC-k sűrűn szinkronizálják a SAM adatokat az elsődleges tartományvezérlővel, így ha felmerül az igény, akkor bármelyikük átveheti a az elsődleges tartományvezérlő (PDC) szerepét anélkül, hogy zavart okozna az ügyfelek körében Tudjunk persze, hogy a BDC-k a SAM adatoknak csak egy
olvasható másolatával rendelkeznek, ezért ezeket az adatokat úgy frissíthetik, hogy szinkronizálják őket a PDC-vel. Egy Windows tartományban egy kiszolgáló bármelyik elsődleges vagy tartalék tartományvezérlő SAM-ját használhatja annak a felhasználónak a hitelesítéséhez, aki megpróbál hozzáférni az erőforrásaihoz, és be akar jelentkezni a tartományba. Vegyük észre, hogy egy Windows munkacsoport és egy Windows tartomány viselkedése számos tekintetben átfedi egymást. Ez nem véletlen, hiszen a Windows tartományok koncepciója csak a Windows NT 3.1 bevezetését követően alakult ki, és a Windows tartományokat szándékosan úgy tervezték meg, hogy megtartsák a kompatibilitásukat a Windows for Workgroups 3.1 változatban meglévő munkacsoportokkal A lényeg nagyjából úgy foglalható össze, hogy egy Windows tartomány egyszerűen olyan Windows munkacsoportot jelent, amely kiegészül egy vagy több tartományvezérlővel A Samba minden
probléma nélkül elsődleges tartományvezérlőként működhet Windows 95/98-as gépek között. Ugyanakkor a Samba 20 mint elsődleges tartományvezérlő csak hitelesítési feladatokat tud ellátni; jelenleg más feladatokat nem képes átvenni egy PDC-től. (A könyv olvasásának idején talán már létezik a Samba 21 változat, amivel a Sambát NT ügyfelek körében is használhatjuk PDC-ként.) Továbbá, mivel a Microsoft által a SAM adatok szinkronizálásához használt protokoll zárt protokoll, a Samba jelenleg tartalék tartományvezérlőként sem használható. Tallózás A tallózás ebben a szövegösszefüggésben magas szintű választ jelent az olyan felhasználói kérdésre, mint hogy ,,Milyen gépek vannak ebben a Windows hálózatban?”. Ügyeljünk arra, hogy ennek a tallózásnak semmi köze sincs a World Wide Weben való böngészéshez, eltekintve attól, hogy a tallózás azt is jelenti: lássuk, mit is fedezhetünk fel a környezetünkben. És van
még egy közös sajátosságuk: akárcsak a weben, egy hálózatban is megváltozhat valami minden külön értesítés nélkül A tallózás használata nélkül a felhasználónak ismernie kell annak az adott számítógépnek a nevét, amelyhez a hálózaton keresztül kapcsolódni akar, majd egy alkalmazásban vagy fájlkezelőben kézzel be kell írnia egy alábbihoz hasonló UNC-t (Universal Naming Convention), hogy kapcsolódhasson a hálózatra: \HYDRA etwork A tallózással viszont – egy szabványos felhasználói illesztőfelületet (GUI) használva, például egy Windows ügyfél Hálózatok ablakában – egy egérkattintással megvizsgálhatjuk a számítógép tartalmát. 1. FEJEZET ISMERKEDÉS A SAMBÁVAL | 31 Tallózási szintek Amint a fejezet elején már említettük, egy SMB/CIFS hálózatban a tallózás kétféle szintjével találkozhatunk: • tallózás a számítógépek listájában (megosztott erőforrásokkal rendelkező gépek); • tallózás
egy adott gép megosztott erőforrásaiban. Nézzük először az első szintet. Minden egyes Windows munkacsoport (vagy tartomány) alhálózatában van egy számítógép, amely a hálózaton aktuálisan elérhető gépek listájának karbantartásáért felel. Ennek a számítógépnek helyi főtallózó a neve, az általa karbantartott listát pedig tallózólistának nevezik Az alhálózatban lévő gépek ezt a tallózólistát használják, hogy csökkenthető legyen a tallózás okozta hálózati forgalom nagysága Ahelyett, hogy minden egyes számítógép dinamikusan lekérdezné az éppen rendelkezésre álló számítógépek listáját, az illető gép a helyi főtallózóhoz fordul, amelytől megkapja a teljes frissített listát. Ahhoz, hogy egy felhasználó egy gép aktuális erőforrásai között tallózhasson, kapcsolódnia kell az adott számítógéphez – a gépen lévő információkat a tallózólistából nem tudja megkapni. Valamely gépen elérhető
erőforrások listájában úgy tallózhat, hogy a Windows 95/98 vagy a Windows NT Hálózatok ablakában rákattint az illető gép ikonjára. Amint a fejezet elején láttuk, a gép erre megjeleníti a rajta elérhető megosztott erőforrások listáját, miután a felhasználó sikeresen átesett a hitelesítésen. Egy Windows munkacsoportban a kiszolgálók mindegyikének – miután regisztrálta a NetBIOS nevét – be kell jelentenie a jelenlétét a helyi főtallózónak, és (elméletileg) azt is, hogy kijelentkezik a munkacsoportból, amikor befejezi a működését. A helyi főtallózó feladata, hogy feljegyezze, mit jelentettek be a kiszolgálók. Hozzátesszük, hogy a helyi főtallózónak nem kell feltétlenül ugyanannak a gépnek lennie, mint amelyik a korábban tárgyalt NetBIOS névkiszolgáló (NBNS). A Windows Hálózatok ablak (Network Neighborhood) furcsán viselkedhet: addig, amíg nem választunk ki tallózásra egy adott számítógépet, a Hálózatok
ablakban elavult adatok is megjelenhetnek. Ez azt jelenti, hogy olyan gépek is lehetnek, amelyek lefagytak, és hiányozhatnak olyanok, amelyeket korábban nem vettünk észre. Röviden szólva: csak akkor bízhatunk abban, hogy a megjelenő megosztások és nyomtatók valóban ,,élnek” a hálózaton, ha kijelöltünk egy kiszolgálót és megteremtettük hozzá a kapcsolatot. A korábban látott szerepektől eltérően szinte bármilyen Windows gép (NT kiszolgáló, NT munkaállomás, 98, 95 vagy Windows 3.1 for Workgroups) betöltheti a helyi főtallózó szerepét A tartományvezérlőkhöz hasonlóan a helyi főtallózónak is lehet egy vagy több tartaléka a helyi alhálózatban, amely meghibásodás vagy elérhetetlenség esetén átveszi a szerepét A folyamatos működés biztosítása céljából a helyi tartaléktallózók gyakorta szinkronizálják a listájukat a helyi főtallózó listájával Bővítsük ki az eddigi Windows tartományunk rajzát egy helyi
főtallózóval és egy helyi tartaléktallózóval Az eredmény az 113 ábrán látható. 32 | SAMBA 1.13 ábra Egy Windows tartomány helyi főtallózóval és helyi tartaléktallózóval kiegészítve Az alábbiak szerint számíthatjuk ki azoknak a tartaléktallózóknak a minimális számát, amelyeket el kell helyezni egy munkacsoportban: • Ha a hálózatban a Windows NT munkaállomások száma 1 és 32 között van, vagy a Windows 95/98-a gépek száma 1 és 16 között van, akkor a helyi főtallózó mellé egy tartaléktallózót kell telepíteni. • Ha a Windows NT munkaállomások száma 33 és 64 között van, vagy ha a Windows 95/98 munkaállomások száma 17 és 32 között van, akkor a helyi főtallózó mellé két tartaléktallózót kell telepíteni. • Minden további, 32 NT munkaállomás-csoporthoz vagy 16 Windows 95/98 gépcsoporthoz eggyel több tartaléktallózót kell telepíteni a helyi főtallózó mellé. Jelenleg nincs felső határa a helyi
főtallózó mellé telepíthető tartaléktallózók számának. Tallózó kiválasztása A tallózás bármely Windows munkacsoportban nagyon lényeges művelet. A hálózatokon azonban nincs mindig minden rendben. Tegyük fel például, hogy egy kis cég főnökének asztalán álló Windows NT kiszolgáló játssza a helyi főtallózó szerepét a hálózatban – mindaddig, amíg a főnök ki nem kapcsolja a gépét, és el nem megy ebédelni. Megegyezés szerint ekkor az alkatrészraktárban lévő Windows NT munkaállomás veszi át a helyi főtallózó szerepét. Igen ám, csakhogy ezen a gépen éppen egy gyengén megírt program fut, ami teljes mértékben igénybe veszi a processzor erejét, és nem tud megbirkózni az újabb feladattal. Ebből levonhatjuk azt a következtetést, hogy a tallózásnak igen nagyfokú türelmet kell tanúsítania a jövő, menő kiszolgálók iránt Mivel szinte bármely Windows gép alkalmas a tallózó szerepkör betöltésére, lennie kell
egy eljárásnak, hogy bármikor eldönthető legyen, melyik gép vegye át ezt a feladatot. Ennek a döntéshozó eljárásnak kiválasztás (election) a neve A kiválasztás algoritmusa majdnem az összes Windows operációs rendszerbe be van építve, tehát ezek megegyezhetnek egymással, hogy melyikük legyen a helyi főtallózó, és melyikük a helyi tartaléktallózó. A választás bármikor kikényszeríthető Visszatérve az 1. FEJEZET ISMERKEDÉS A SAMBÁVAL | 33 előző példához, tegyük fel, hogy a főnök befejezte az ebédjét, és újraindítja a kiszolgálóját. Amikor a kiszolgáló feléled, bejelenti a jelenlétét a hálózaton, végbemegy egy kiválasztáskérés, hogy lássa, még mindig az a gép-e a főtallózó, amelyik az alkatrészraktárban van. Miután elküld egy kiválasztáskérést, minden egyes gép datagramokon keresztül szétküldi (broadcast) a magára vonatkozó információkat. Ezek az információk a következőket tartalmazzák: •
a használt kiválasztási protokoll verziója; • a gépen futó operációs rendszer; • az ügyfél által a hálózaton eltöltött idő tartama; • az ügyfél gazdaneve. Ezek az értékek határozzák meg, hogy melyik operációs rendszernek van elsőbbsége, és melyik töltheti be a helyi főtallózó szerepkörét. (A Felhasználók, biztonság és tartományok című 6 fejezet részletesebben is foglalkozik a kiválasztási folyamattal) A kiválasztás programozástechnikai megvalósítása nem túl elegáns, és biztonsági problémák is rontják a helyzetet. Míg egy tallózó tartomány integrálható tartományi biztonsággal, addig a választási algoritmus nem veszi figyelembe, hogy mely számítógépekből lettek tallózók. Ezért a tallózó szolgáltatást futtató bármely számítógép úgy regisztrálhatja magát, mint amelyik részt vesz a tallózó kiválasztásaában, majd (miután győzött) képes lesz a tallózólista módosítására. Ennek ellenére
a tallózás a windowsos hálózati munka egyik kulcseleme, és a kompatibilitás fenntartása iránti igények azt is biztosítják, hogy a következő években is használatban maradjon Felbontható egy Windows munkacsoport több alhálózatra? Igen, bár azok közül, akik ezt megtették, sokaknak nem kis fejfájást okozott. A több alhálózatra való bontás lehetőségét a Windows NT 35 vagy a Windows for Workgroups fejlesztői eredetileg nem tervezték be Ezért az a Windows tartomány, amely két vagy több alhálózatra van felbontva, a valóságban inkább két vagy több egymáshoz ,,ragasztott” munkacsoportnak tekinthető, amelyek ugyanazon a néven osztoznak. Jó hír azonban, hogy továbbra is használható egy elsődleges tartományvezérlő a hitelesítésre minden egyes alhálózatban. Rossz hír viszont, hogy a tallózás már nem annyira egyszerű dolog Amint korábban említettük, minden egyes alhálózatban kell lennie egy saját helyi főtallózónak. Amikor
egy Windows tartomány több alhálózatra bomlik, a rendszergazdának a gépek egyikét tartomány-főtallózóvá kell kijelölnie. Ez a tartomány-főtallózó tartja nyilván a tallózólistát a teljes Windows tartományra vonatkozóan. E tallózólista úgy készül, hogy minden egyes helyi főtallózó tallózólistája rendszeres időközönként szinkronizálódik a tartomány-főtallózó listájával. A szinkronizálást követően a helyi főtallózónak és a tartomány-főtallózónak egymással azonos bejegyzéseket kell tartalmaznia Erre az 114 ábra mutat példát. 34 | SAMBA 1.14 ábra Egynél több alhálózatra bontott munkacsoport Jól hangzik? Azért ez még nem egészen a nirvána, a következő okok miatt: • Ha létezik elsődleges tartományvezérlő, akkor az egyúttal mindig a tartomány-főtallózó is. A Microsoft tervei szerint a kettő mindig ugyanazon a NetBIOS erőforrástípuson (1B) osztozik, és (sajnos) nem választható szét. • A
Windows 95/98-as gépekből nem lehet tartomány-főtallózó, sőt még kapcsolatba sem léphetnek ilyennel. A Samba fejlesztőcsoportja úgy gondolja, hogy ez egy marketingfogás a Microsoft részéről, amely így akarja kényszeríteni a felhasználókat, hogy a több alhálózatból álló munkacsoport minden egyes alhálózatában legalább egy Windows NT munkaállomás (vagy Samba kiszolgáló) legyen. Minden egyes alhálózat helyi főtallózója továbbra is karbantartja az alhálózatára vonatkozó tallózólistát, és az alhálózatban ez lesz a hiteles lista. Így ha egy számítógép szeretné látni a saját alhálózatán belüli kiszolgálók listáját, akkor ennek az alhálózatnak a helyi főtallózóját kérdezi le. Ha egy számítógép az alhálózatán kívüli kiszolgálók listáját szeretné megtekinteni, akkor is csak a helyi főtallózót kell megkeresnie. Erre azért van lehetőség, mert az alhálózat helyi főtallózójának hiteles listája adott
időközönként szinkronizálódik a tartomány-főtallózójával, ami viszont szinkronizálódik a tartományban lévő többi alháló- 1. FEJEZET ISMERKEDÉS A SAMBÁVAL | 35 zat helyi főtallózóival. Ennek a műveletnek a tallózólista továbbadása (browse list propagation) a neve Amennyiben szükséges, a Samba betöltheti a tartomány-főtallózó szerepét egy Windows tartományban. Emellett még helyi főtallózóként is működhet egy Windows alhálózatban, és szinkronizálhatja a saját tallózólistáját a tartomány-főtallózóéval. A Windows Internet Name Service (WINS) A Windows Internet Name Service (Windows internetes névszolgáltatás, WINS) a NetBIOS névkiszolgáló (NBNS) Microsoft általi megvalósítása. Mint ilyen, a WINS a NetBIOS számos jellemzőjét örökölte. Először is a WINS egyszerű neveket használ a számítógépek és a munkacsoportok azonosítására: egy géphez például a fred, egy munkacsoporthoz pedig a CANADA név
rendelhető. Emellett a WINS dinamikus: amikor egy ügyfél először kezdeményezi a kapcsolatfelvételt, meg kell adnia a gazdanevét, a címét és a helyi WINS kiszolgálóban lévő munkacsoportjának a nevét. A WINS kiszolgáló mindaddig fenntartja a kapcsolatot, amíg az ügyfél rendszeres időközönként frissíti a WINS regisztrálását, jelezve, hogy még kapcsolatban van a hálózattal. Jegyezzük meg, hogy a WINS kiszolgálók nem egy tartomány vagy egy munkacsoport jellegzetességei, hanem bárhol lehetnek, és bárkit kiszolgálhatnak. Több WINS kiszolgáló beállítható úgy, hogy megadott idő eltelte után egymást szinkronizálják. Ez lehetővé teszi, hogy a hálózatra belépő vagy onnan kijelentkező gépeket az egyik WINS kiszolgáló egy másikhoz küldje. Míg elméletben ez hatékonynak tűnik, hamar zavarossá válhat a helyzet, ha több WINS kiszolgáló fedi le a hálózatot. Mivel a WINS kiszolgálók keresztül-kasul járhatnak több
alhálózatban (vagy fixen bekódoljuk egy WINS kiszolgáló címét minden egyes ügyfelünkbe, vagy DHCP útján juthatunk a címhez), gyakran hatékonyabb, ha – a Windows tartományok számától függetlenül – minden egyes Windows ügyfélhez ugyanazt a WINS kiszolgálót rendeljük. Ilyen módon csak egyetlen hiteles és a helyes információkat tartalmazó WINS kiszolgálónk lesz, és nem több, amelyek közül mindegyik igyekezne folyamatosan szinkronban tartani magát a legutolsó változásokkal. Az éppen aktív WINS kiszolgálót elsődleges WINS kiszolgálónak nevezik. E mellé egy másodlagos WINS kiszolgáló is telepíthető, amely az elsődleges WINS kiszolgáló meghibásodása vagy elérhetetlenné válása esetén átveszi annak a szerepét. Jegyezzük meg, hogy itt nincs lehetőség olyan választásra, amellyel meghatározhatnánk, hogy melyik gépből legyen elsődleges vagy tartalék WINS kiszolgáló – a WINS kiszolgálók megválasztása statikus, és
a rendszergazdának előre el kell döntenie, hogy melyik legyen az. Mind az elsődleges, mind bármelyik tartalék WINS kiszolgáló rendszeres időközönként szinkronizálja a címadatbázisait. A Windows operációs rendszerek családján belül csak egy NT munkaállomás vagy egy NT kiszolgáló töltheti be a WINS kiszolgáló szerepét. A Samba is működtethető elsődleges WINS kiszolgálóként, másodlagos WINS kiszolgálóként viszont nem. Mire képes a Samba? Az Olvasó feltehetően soha nem gondolta volna, hogy ennyire bonyolultak lehetnek a Microsoft hálózatok. Nos, akkor lássuk, hogy miben segíthet nekünk a Samba! Az 16 táb- 36 | SAMBA lázat felsorolja azokat a szerepköröket, amelyeket a Samba egy Windows NT tartományban vagy Windows munkacsoportban betölthet, illetve nem tölthet be. Látható, hogy mivel az NT tartomány protokolljainak jó része a Microsoft tulajdonában van, és még nem dokumentálták őket, a Samba nem tudja helyesen
szinkronizálni az adatait egy Microsoft kiszolgálóval, és számos helyen nem alkalmazható tartalékgépként. Ugyanakkor a Samba 2.0 változata korlátozott mértékben már támogatja az elsődleges tartományvezérlő hitelesítési protokolljait, és naponta újabb és újabb funkciókkal gyarapszik 1.6 táblázat A Samba által betölthető szerepkörök (a 204b változat szerint) Szerepkör Betölthető? Fájlkiszolgáló Nyomtatókiszolgáló Elsődleges tartományvezérlő Tartalék tartományvezérlő Windows 95/98 hitelesítő Helyi főtallózó Helyi tartaléktallózó Tartomány-főtallózó Elsődleges WINS kiszolgáló Másodlagos WINS kiszolgáló Igen Igen Igen (Samba 2.1 vagy újabb ajánlott) Nem Igen Igen Nem Igen Igen Nem A SAMBA disztribúció áttekintése Amint korábban már említettük, a Samba különböző programokból áll, amelyek különféle, de egymással kapcsolatban álló feladatokat végeznek. Ismerkedjünk meg röviden ezekkel, és
lássuk, miként működnek együtt egymással. A Samba disztribúcióban található programok többsége a két démonja köré csoportosítható Nézzük meg egy kicsit közelebbről az egyes démonok feladatát: smbd Az smbd démon a Samba kiszolgáló gép és az ügyfelei közötti megosztott erőforrások kezeléséért felelős. Ez a démon fájl-, nyomtató- és tallózószolgáltatásokat kínál az SMB ügyfelek számára egy vagy több hálózaton keresztül. Az smdb kezeli a Samba kiszolgáló és a hálózati ügyfelei közötti összes értesítést, továbbá ez felel a felhasználó hitelesítéséért, az erőforrások zárolásáért és az adatok SMB protokollon keresztüli megosztásáért. nmbd Az nmbd démon egy egyszerű névkiszolgáló, lemásolja a WINS és a NetBIOS névkiszolgáló funkcióit, amint ez várható is, amikor a LAN Manager csomagjával találkozunk. Ez a démon figyel a névkiszolgáló kéréseire, és a felhívásakor rendelkezésre
bocsátja a megfelelő információkat. Ugyancsak ez a démon adja át a hálózatnak a tallózólistákat, és vesz részt a tallózó kiválasztásában. 1. FEJEZET ISMERKEDÉS A SAMBÁVAL | 37 A Samba disztribúció emellett még néhány kisebb Unix parancssori eszközt is tartalmaz: smbclient FTP-szerű Unix ügyfél, ami Samba megosztásokhoz való kapcsolódáshoz használható. smbtar Megosztásokban lévő adatok biztonsági másolatának létrehozásához használható program, hasonló a Unix tar parancsához. nmblookup TCP/IP alapú NetBIOS névkereséseket végző program. smbpasswd Ez a program a rendszergazda számára lehetővé teszi a Samba által használt titkosított jelszavak megváltoztatását. smbstatus Ez a program jelentést készít azokról az aktuális hálózati kapcsolatokról, amelyek egy Samba kiszolgálón lévő megosztásokat célozzák. testparm Egyszerű program a Samba konfigurációs fájljának vizsgálatához. testprns Ez a program azt
teszteli, hogy észlelte-e a különböző nyomtatókat az smbd démon. A Samba minden jelentősebb kiadását alapos tesztelésnek teszik ki a bejelentését megelőzően. Emellett a kibocsátását követően gyorsan frissítik, ha valamilyen problémát vagy nemkívánatos mellékhatást fedeznek fel benne. A könyv írásának idején a legfrissebb stabil disztribúció a Samba 205, a Samba 20 régóta várt legújabb verziója Ez a könyv a ma már elavultnak tekinthető 1.9x verziók helyett a Samba 20 által támogatott funkciókra összpontosít. (Amint a szerzők írják, könyvük akkor készült, amikor a Samba fejlesztői a 2.05 sz verziót bocsátották útjára. A magyar kiadás idején a Samba a 220 verziónál tart, a forgalomban lévő Debian stabil [potato] és más disztribúciók azonban még tartalmazzák a 2.07-est, aminek következtében nagyon sok felhasználó bizonyára ezt a ,,régebbi” verziót használja. Mindazonáltal az O’Reilly könyvének
értékét alapvetően nem a verziószámok határozzák meg. A könyv összes információja, útmutatása rendkívül aktuális és hasznos a hazai Linux-társadalom számára. Elsősorban azért, mert még nem jelent meg magyar nyelven ennyire átfogó és ilyen nívójú Samba-szakkönyv. És persze hiba volna a verziószám jelentőségének eltúlzása azért is, mert az újabb és újabb Samba-fejlesztéseket sokszor pusztán a Windows-forráskódok megszerzésének nehézkessége, a kódvisszafejtés elhúzódása kényszeríti ki, aminek a következményeivel viszont e kötet szerzői is foglalkoznak – a lektor megjegyzése.) 38 | SAMBA Hogyan szerezhető be a Samba? A Sambának mind a bináris, mind a forráskódja az interneten keresztül különböző tükörkiszolgálókról szerezhető be. A Samba elsődleges helye a http://wwwsambaorg/ címen érhető el. Aki viszont nem akar arra várni, hogy feltétlenül Ausztráliából érkezzenek meg a csomagok, az az
internet különböző helyein is megtalálja a Samba tükrözéseit. A tükrözések listája a Samba elsődleges honlapján található meg. A Samba 2.0 újdonságai A Samba 2.0 változatát nagy várakozás előzte meg Legfőbb újdonsága az NT tartományok sokkal erősebb támogatása, valamint az új Samba webadminisztrációs eszköz (Samba Web Administration Tool, SWAT), mely utóbbi egy, a Samba konfigurálására használható, böngésző alapú segédprogram. Ezek mellett az 1998 nyarán és őszén bevezetett javítások közül még sok más is bekerült ebbe a változatba. NT tartományok A Samba NT tartományok támogatása (a 2.0x verziótól kezdődően) jelentős javulást eredményezett: ez lehetővé teszi, hogy az SMB kiszolgálók használják a hitelesítő mechanizmusukat, ami nagyon lényeges a jövőbeli NT-kompatibilitás miatt, és támogassák az NT tartományi bejelentkezéseket. A tartományi bejelentkezések lehetővé teszi, hogy egy felhasználó
bejelentkezzen egy Windows NT tartományba, és a tartományban lévő összes számítógépet használhassa anélkül, hogy egyenként be kellene jelentkeznie ezekre a gépekre. A Samba 200 verzióját megelőző verziók ugyan támogatták a Windows 95/98 bejelentkezési szolgáltatásait, de az NT tartományba való bejelentkezéseket nem. A tartományi bejelentkezések támogatása ugyan még nem teljes a Samba 20-ban, de részben már megvalósításra került. Az adminisztrálás könnyítése A SWAT, a Samba webadminisztrációs eszköze lehetővé teszi egy kiszolgáló egyszerű telepítését és a konfigurációjának módosítását anélkül, hogy le kellene mondani az egyszerű, szöveg alapú konfigurációs fájlról. A SWAT grafikus illesztőfelületet kínál azokhoz az erőforrásokhoz, amelyeket a Samba megoszt az ügyfeleivel Emellett a Samba nem kevés kísérletezési és emlékezetre hagyatkozó munkát is megtakarít a hálózaton keresztüli telepítéssel
és a konfigurációs módosításokkal kapcsolatban. Még azt is megtehetjük, hogy a SWAT segítségével elvégzünk egy induló telepítést, majd a konfigurációs fájlt később kézi úton módosítjuk, vagy fordítva. A Samba nem fog panaszkodni Ami a forrásprogramok lefordítását illeti, a GNU autoconf parancsát használhatjuk most arra, hogy könnyebben legyen elvégezhető a kezdeti fordítás és a telepítés, és gyorsabban eljuthassunk a SWAT-hoz. 1. FEJEZET ISMERKEDÉS A SAMBÁVAL | 39 Teljesítmény A Samba új változatában jelentősen megnőtt a teljesítmény és a skálázhatóság: a kódot átszervezték, és alaposan átírták az nmbd-t (a Samba névkiszolgáló démonját): • A név/tallózó szolgáltatás most megközelítőleg 35 000 egyidejű ügyfelet támogat. • A fájl- és nyomtatószolgáltatások 500 egyidejű felhasználót támogatnak egyetlen, közepes méretű kiszolgálóról, a teljesítmény észrevehető csökkenése
nélkül. • Ugyanazon a hardveren a Linux/Samba jobb teljesítményt nyújt, mint egy NT kiszolgáló. És ami mindenek fölött a legjobb: a Samba egyre javul • A javított zároló mechanizmusok lehetővé teszik, hogy az ügyfélgépek helyileg teljes fájlokat gyorsítsanak, aminek köszönhetően jelentősen javul a sebesség anélkül, hogy a gyorsított fájlok ki lennének téve a véletlen felülírás kockázatának. További jellemzők A felsoroltakon kívül a Samba 2.0 még további tulajdonságokkal is rendelkezik A Sambához most ugyanazon a gépen már több ál-Sambát is elkészíthetünk, melyek mindegyike külön kiszolgálónak tettetheti magát, hasonlóan a modern webkiszolgálók virtuális gazdáihoz. Ez lehetővé teszi egy gazda számára, hogy több részleget vagy csoportot szolgáljon ki, vagy normál felhasználónév/jelszó kombinációt használva lemezmegosztásokat kínáljon, míg a nyomtatókat különösebb biztonsági korlátozások nélkül
bárki számára hozzáférhetővé tegye. A nyomtatás könnyebbé vált a Unix System V tulajdonosai számára: a Samba most automatikusan megtalálja a rendelkezésre álló nyomtatókat a Berkeleystílusú nyomtatáshoz hasonlóan Emellett a Samba képes többféle kódlap kezelésére, így például Európán kívüli nyelvek is használhatók, továbbá a Secure Socket Layer (SSL) használatával képes az interneten elküldött összes adatnak, és nemcsak a jelszónak a titkosítására. Kompatibilitási javítások A Samba képességeinek növekedésével együtt nőtt a Windows NT-vel fennálló kompatibilitás foka. A Samba mindig is támogatta a jelszavak Microsoft stílusú titkosítását Most olyan eszközökkel is rendelkezik, amelyekkel átválthat a Microsoft-féle titkosításra, és szinkronizálhatja egymással a Unix és a Microsoft jelszófájlokat. Végül a Samba főtallózója utasítható arra, hogy különböző helyi hálózatokon lévő más SMB
kiszolgálókkal szinkronizálja magát, lehetővé téve, hogy az SMB zökkenőmentesen működjön több hálózaton keresztül. A Samba ehhez más eljárást használ, mint a Microsoft, mely utóbbié nincs dokumentálva Smbwrapper Végül létezik egy teljesen új változatú Unix ügyfél, az úgynevezett smbwrapper. Egy kernel modul helyett, amely lehetővé teszi, hogy a Linux Samba ügyfélként viselkedjen, most egy parancssori bejegyzéssel betölthető az a könyvtár, ami teljes SMB fájlrendszert bocsát bizonyos Unix változatok rendelkezésére. Miután betöltődött a könyvtár, az ls /smb parancs kiadásával kilistázható a munkacsoportban lévő összes gép, és az /smb/kiszol- 40 | SAMBA gálónév/megosztásnév parancs beírásával eljuthatunk egy adott megosztáshoz (megosztott könyvtárhoz), hasonlóan a hálózati fájlrendszerhez (Network File System, NFS). A könyv írásának idején az smbwrapper Linux, Solaris, SunOS 4, IRIX és OSF/1
operációs rendszereken fut, és a közeli jövőben várhatóan további operációs rendszereken is futni fog. Ez még nem minden A Samba csodálatos eszköz, amelynek a képessége a legkisebb SMB/CIFS hálózatokon is megmutatkozik. Ebben a fejezetben bemutattuk a Sambát, és ami ennél is fontosabb, azt is, hogy miként illeszthető be egy Windows hálózatba. A következő fejezetekben megismerkedünk azzal, hogy miként telepíthetjük a Sambát egy Unix kiszolgálóra, ahol a két démonja elhelyezkedik, továbbá azzal, hogy miként konfigurálhatjuk a Windows 95, 98 és NT ügyfeleket a Sambával való együttműködéshez. Hamarosan érezni fogjuk, hogy a vegyes összetételű hálózatokkal kapcsolatos gondjaink és bajaink már a múlté lesznek. Üdvözöljük Önt a Samba csodálatos világában! A Samba telepítése Unix rendszerre Miután már tudjuk, milyen szolgáltatásokat kínál nekünk és a felhasználóinknak a Samba, ideje létrehozni a saját
hálózatunkat. Kezdjük azzal, hogy telepítjük a Sambát egy Unix rendszerre. Amikor szambázni tanulunk, kezdetben kis lépésekkel kezdjük Ugyanez a helyzet a Samba telepítésénél is – itt is lépésről lépésre haladunk előre. Ebben a fejezetben a lépések helyes sorrendjével ismerkedünk meg. Szemléltetési célból a Samba kiszolgáló 2.04-es verzióját fogjuk telepíteni egy 2031 verziójú kernelt futtató Linux rendszerre*. A telepítés lépései azonban minden olyan platformon azonosak, amelyeket támogat a Samba A tipikus telepítés nagyjából egy óra hoszszat tart, beleértve a forrásfájlok letöltését és lefordítását, a konfigurációs fájlok beállítását és a kiszolgáló tesztelését. A telepítés lépései: 1. Forrás- vagy bináris fájlok letöltése 2. Telepítési dokumentáció elolvasása 3. Make-fájl konfigurálása 4. Kiszolgáló kódjának lefordítása 5. Kiszolgáló fájljainak telepítése 6. A Samba konfigurációs
fájljának létrehozása 7. A konfigurációs fájl tesztelése 8. Samba démonok indítása 9. Samba démonok tesztelése A Samba disztribúció letöltése Azok, akik a legfrissebb változatot akarják letölteni, először a http://www.sambaorg webhelyen keressék a Samba szoftverét Miután ráléptek erre a weboldalra, hivatkozásokat látnak, amelyek a világ különböző részein lévő tükörkiszolgálókra mutatnak. Ezek egy része a Sambával foglalkozó szokásos webhely, más részük viszont kifejezetten arra szolgál, hogy le lehessen róluk tölteni a Sambát. Keressék meg közülük a földrajzilag hozzájuk legközelebbi helyet, és töltsék le a szoftvert. * A Linux szabadon terjesztett, a Unixhoz hasonló operációs rendszer, a legtöbb Intel x86, Motorola PowerPC és Sun Sparc platformon fut. Az operációs rendszer rendkívül robosztus felépítésű, viszonylag egyszerűen konfigurálható, és egyre nagyobb népszerűségnek örvend. A Linuxról további
információk a http://www.linuxorg/ internetes címen olvashatók 42 | SAMBA A Sambával foglalkozó szokásos webhelyeken a Sambával kapcsolatos dokumentációk és oktatóanyagok, levelezőlista-archívumok, a legújabb hírek, valamint a Samba forrás- és bináris disztribúciói találhatók. A letöltési helyek (ezeket FTP helyeknek is nevezik) csak a forrás- és a bináris disztribúciókat tartalmazzák. Hacsak nem az a célunk, hogy a Samba kiszolgáló valamelyik régebbi verzióját telepítsük, vagy nem egy bináris disztribúciót akarunk telepíteni, akkor a hozzánk legközelebb eső földrajzi helyről töltsük le a legfrissebb forrásdisztribúciót. A disztribúció mindenkori neve: samba-latest.targz Bináris vagy forrás? Előre lefordított csomagok is rendelkezésünkre állnak nagy számú Unix platformhoz. Ezek a csomagok a Samba mindegyik végrehajtható fájljához tartalmazzák a binárisokat, valamint a standard Samba dokumentációt. Vegyük
figyelembe, hogy bár a bináris disztribúció telepítésével jelentős nehézségeket és időt takaríthatunk meg, vannak bizonyos dolgok, amelyeket érdemes fontolóra vennünk, amikor arról döntünk, hogy a bináris fájlokat használjuk-e, vagy magunk fordítsuk le a forrásfájlokat: • A bináris csomagok a szoftver legújabb változatához képest egy vagy két (esetleg több) alacsonyabb rendű változattal régebbiek lehetnek, és kisebb változtatásokat tartalmaznak néhány kevésbé népszerű platformhoz. Hasonlítsuk össze a forrás és a bináris kibocsátási dokumentációját, hogy meggyőződjünk arról, nincsenek a forrásban olyan új tulajdonságok, amelyekre szükségünk lehet a gépünkön. • Ha az előre lefordított binárisokat használjuk, akkor biztosítanunk kell, hogy rendelkezésre álljanak a végrehajtható fájlok által igényelt könyvtárak. Egyes platformokon a végrehajtható fájlok statikusan vannak csatolva, így ezeken ezzel nem
kell törődni. Más, modernebb Unix operációs rendszereken (mint például Linux, SGUIrix, Solaris, HP-UX stb.) viszont gyakran dinamikus csatolásúak a könyvtárak Ez azt jelenti, hogy a bináris a rendszerünkben az egyes könyvtárak megfelelő verzióját keresi, ezért lehet, hogy újabb verziójú könyvtárat kell telepítenünk. A bináris disztribúcióhoz tartozó README fájl vagy make-fájl sorolja fel a speciális követelményeket.* Számos, megosztott könyvtárt használó gépen létezik egy ldd nevű ügyes eszköz. Ez az eszköz megmondja, hogy egy adott bináris milyen könyvtárakat igényel, és a rendszerben lévő könyvtárak közül melyek felelnek meg ennek az igénynek. Így például a tesztgépünkön az smbd programot vizsgálva a következő eredményt kaptuk: $ ldd smbd libreadline.so3 => /usr/lib/libreadlineso3 libdl.so2 => /lib/libdlso2 libcrypt.so1 => /lib/libcryptso1 libc.so6 => /lib/libcso6 libtermcap.so2 => /lib/libtermcapso2
/lib/ld-linux.so2 => /lib/ld-linuxso2 * Ez különösen igaz azokra a programokra, amelyek a glibc-2.1 könyvtárat használják (ami standard része a Red Hat Linux 6-nak). Ez a könyvtár a kibocsátásakor meglehetős megdöbbenést keltett a fejlesztői közösségben, mert inkompatibilis volt a korábbi glibc verziókkal. 2. FEJEZET A SAMBA TELEPÍTÉSE UNIX RENDSZERRE | 43 Ha bármilyen inkompatibilitás áll fenn a gépünkön a Samba és az adott könyvtárak között, akkor a disztribúcióhoz mellékelt dokumentációban kereshetjük meg a megoldást. • Ne feledkezzünk meg arról, hogy minden egyes bináris disztribúció előre adott értékeket tartalmaz a cél platformról, így például az alapértelmezés szerinti könyvtárakról és konfigurációs értékekről. Itt is szükséges tanulmányozni a dokumentációt és a forráskönyvtárban lévő make-fájlt, hogy lássuk, milyen opciókat és változókat használtak a bináris lefordításakor.
Bizonyos esetekben ezek nem felelhetnek meg a mi körülményeinknek Bizonyos konfigurációs elemek a fordítást követően, futásidőben is visszaállíthatók parancssori beállításokkal. Ha például a binárisunk bármelyik napló-, zároló vagy állapotjelentő fájlt ,,rossz” helyre akarja tenni (például a /usr/local könyvtárba), akkor ezt a beállítást újrafordítás nélkül is felülbírálhatjuk. Érdemes még megemlíteni, hogy a Samba forrása ANSI C fordítót igényel. Ha olyan platformon dolgozunk, amelyiken nem ANSI fordító van, hanem például a SunOS 4 verzió cc fordítója, akkor telepítenünk kell ennek az ANSI-kompatíbilis gcc változatát, mielőtt még bármit is tennénk.* Ha valaki nem akar egy fordítóprogram telepítésével bajlódni, az a bináris csomaggal is elkezdheti a munkát. Ha viszont a lehető legnagyobb fokú rugalmasságot és kompatibilitást szeretnénk elérni a rendszerünkben, akkor mindig ajánlatos a legutolsó forrás
lefordításával indulni. Olvassuk el a dokumentációt Ez eléggé nyilvánvalóan hangzik, és talán mondani sem kellene, de bizony sokan lehetnek közülünk, akik egyszerűen kicsomagolják a tömörített programokat, vakon beírják a configure, make és a make install varázsszavakat, majd mint akik jól végezték a dolgukat, kimennek a büfébe, meginni egy kávét. Valljuk be őszintén, hogy talán magunk is többször jártunk el így, mint ahányszor szabad lett volna. Helytelen módszer – főként akkor, ha egy Samba kiszolgálót tartalmazó hálózatot készülünk tervezni. A Samba 2.0 automatikusan konfigurálja saját magát még a fordítás előtt Ezzel csökken a gépspecifikus problémák valószínűsége, de a README fájlban lehet egy olyan beállítás, amit a Samba telepítését követően akarunk elvégezni. A forrás- és a bináris csomagok mellett a docs könyvtárban nagy számban találhatók különböző formátumú dokumentumok A
disztribúcióban a legfontosabb tanulmányozandó fájlok: WHATSNEW.txt docs/textdocs/UNIX INSTALL.txt Ezek a fájlok megmondják, hogy milyen tulajdonságok várhatók az adott Samba disztribúciótól, és ráirányítják a figyelmet azokra az általános telepítési problémákra, amelyekkel esetleg szembe kell néznünk. Feltétlenül tanulmányozzuk át ezeket a dokumentumokat, mielőtt nekilátnánk a fordítási műveletnek. * gcc binárisok szinte minden modern géphez rendelkezésre állnak. A http://wwwgnuorg/ címen felsorolás olvasható azokról a webhelyekről, ahol elérhetők a gcc és más GNU szoftver 44 | SAMBA A Samba konfigurálása A Samba 2.0 és az e feletti verziók forrásdisztribúciója eredendően nem tartalmaz makefájlt Ezt egy GNU configure szkript generálja, ami a samba-20x/source könyvtárban található A configure szkript, amelynek rootként kell futnia, gondoskodik a Samba gépspecifikus felépítéséről Emellett azonban, ha akarjuk,
magunk is dönthetünk néhány globális beállításról. A globális beállításokat parancssori paraméterek átadásával végezhetjük el: # ./configure --with-ssl Ezzel például úgy konfigurálhatjuk a Sambát, hogy támogassa az SSL (Secure Sockets Layer) titkosító protokollt. Ha látni szeretnénk a beállítási lehetőségek teljes listáját, akkor írjuk be a következőt: # ./configure --help E beállítások mindegyike különböző képességeket engedélyez vagy tilt. Egy képesség engedélyezéséhez a --with-képesség toldalékot kell beírni. Ekkor az adott képesség lefordításra és telepítésre kerül. Ehhez hasonlóan egy képesség tiltásához a --withoutképesség toldalékot kell beírni A Samba 205 változatában alapbeállítás szerint a következő képességek mindegyike tiltva van: --with-smbwrapper Tartalmazza az SMB wrapper támogatást, ami lehetővé teszi, hogy a végrehajtható fájlok a Unix oldalon úgy férhessenek hozzá az
SMB/CIFS fájlrendszerekhez, mintha ezek normál Unix fájlrendszerek lennének. Ajánlott ennek a képességnek az engedélyezése. Meg kell azonban jegyezni, hogy a könyv nyomdába adásakor különböző inkompatibilitások álltak fenn az smbwrapper és a libc GNU 21-es verziója között, és nem volt lefordítható. Ezekről az inkompatibilitásokról további információk a Samba honlapján olvashatók --with-afs Tartalmazza a Carnegie Mellon egyetemről származó Andrew fájlrendszert. Ha valaki a Samba segítségével AFS fájlokat is kezelni akar, annak az javasolható, hogy a Sambát először e tulajdonság engedélyezése nélkül fordítsa le, hogy meggyőződjön, minden rendben van-e. Ha kifogástalanul működik a változata, akkor újra fordítsa le a Sambát, most már engedélyezve ezt a tulajdonságot, és hasonlítsa össze az ekkor észlelt hibákat az előző telepítéskor észlelt hibákkal. --with-dfs Tartalmazza a DFS-t, ami az AFS egy későbbi
verziója, és OSF/1 (Digital Unix) platformon használható. Jegyezzük meg, hogy ez nem azonos a Microsoft DFS rendszerével, hanem teljes mértékben eltér attól Ebben az esetben is az javasolható, hogy először a tulajdonság engedélyezése nélkül fordítsuk le a Sambát, hogy lássuk, minden rendben van-e, és csak ezt követően fordítsuk le újból, engedélyezve ezt a tulajdonságot, és most is hasonlítsuk össze a hibákat. 2. FEJEZET A SAMBA TELEPÍTÉSE UNIX RENDSZERRE | 45 --with-krb4=base-directory Tartalmazza a Kerberos 4.0 verzió támogatását, valamint a disztribúció alapkönyvtárát is specifikálja A Kerberos a MIT által kifejlesztett hálózati biztonsági protokoll, ami a privát kulcsú titkosítást végzi el a csomópontok közötti szigorú biztonság megteremtéséhez. Egyébként a Microsoft bejelentette, hogy Kerberos 50 lesz a Microsoft Windows 2000 (NT 50) szabványos hitelesítő mechanizmusa Ugyanakkor a Kerberos 5.0 hitelesítő
mechanizmusa meglehetősen eltér a Kerberos 40 hitelesítő mechanizmusától. Ha telepítve van a rendszerünkben a Kerberos 40 verzió, akkor a Samba fejlesztő csoportja azt javasolja, hogy frissítsük azt, és a --with-krb5 opciót használjuk (lásd a következő bekezdést). A Kerberosról további információk a http://web.mitedu/kerberos/www címen találhatók --with-krb5=base-directory Tartalmazza a Kerberos 5.0 verzió támogatását, valamint a disztribúció alapkönyvtárát is specifikálja A Microsoft bejelentette, hogy a Kerberos 50 lesz a Microsoft Windows 2000 (NT 5.0) szabványos hitelesítő mechanizmusa Ugyanakkor azonban nem garantálható, hogy a Microsoft a jövőben nem fogja a Kerberost a saját igényei szerint bővíteni. Jelenleg a Samba Kerberosa csak a normál szövegű jelszóinterfész használatát támogatja, a titkosítottat nem A Kerberosról további információk a http://webmitedu/kerberos/www címen találhatók --with-automount Tartalmazza
az automount támogatást – ezt a tulajdonságot gyakran használják olyan helyeken, ahol NFS található. --with-smbmount Tartalmazza az smbmount támogatást, ami csak a Linuxnál létezik. A könyv írásának idején ezzel a tulajdonsággal nem foglalkoztak, ehelyett a Samba fejlesztő csoportja az smbwrapper képességet bocsátja a rendelkezésünkre. Az smbwrapper több Unix platformon használható, mint az smbmount, ezért helyette inkább a --withsmbwrapper opciót használjuk. --with-pam Tartalmazza a beépíthető hitelesítési modulokat (pluggable authentication modules, PAM), ami általánosan használt hitelesítést jelent a Linux operációs rendszerben. --with-ldap Tartalmazza az LDAP (Lightweight Directory Access Protocol) protokollt. A LDAP jövőbeli verzióját a Windows 2000 (NT 5.0) operációs rendszer fogja használni; a Samba támogatása csak kísérleti jellegű. Az LDAP rugalmas ügyfélkiszolgáló könyvtárprotokoll, ami olyan információkat
továbbíthat, mint a hitelesítések és a csoporttagságok* * A könyvtár itt nem egy fájlrendszer könyvtárát jelenti, hanem inkább egy névjegyzéket, amilyen például egy telefonkönyv. Az ebben tárolt információk egyszerűen lekérdezhetők egy nyilvános LDAP rendszerben 46 | SAMBA --with-nis Tartalmazza azt a támogatást, amelynek segítségével jelszófájl-információk szerezhetők egy NIS-ből (Yellow Pages). --with-nisplus Tartalmazza azt a támogatást, amelynek segítségével jelszófájl-információk szerezhetők egy NIS+-ból (ez a NIS utódja). --with-ssl Tartalmazza az SSL (Secure Sockets Layer) kísérleti támogatását. Ez a protokoll titkosított kapcsolatokat hoz létre az ügyfél és a kiszolgáló között A Samba konfigurálása SSL protokollal című A függelék írja le, hogy miként telepíthető a Samba SSL támogatással. --with-nisplus-home Tartalmazza azt a támogatást, amelynek segítségével megkereshető, hogy melyik
kiszolgáló tárolja egy adott felhasználó home könyvtárát, és lehetővé teszi a kapcsolódását. Igényli a --with-nis és általában a --with-automounter opciót --with-mmap Tartalmazza a kísérleti memórialeképzési kódot. Ez nem szükséges a gyors zároláshoz, ami már használja az mmap-t vagy a System V megosztott memóriáját --with-syslog Tartalmazza azt a támogatást, amellyel használható a SYSLOG segédprogram a Samba kiszolgáló által generált információk naplózásához. A Sambában egy sor olyan konfigurációs beállítás létezik, amelyet használva engedélyezhető a SYSLOG támogatása. A ,,Lemezmegosztások” című 4 fejezet tárgyalja ezeket a beállításokat --with-netatalk Tartalmazza azt a kísérleti támogatást, amelynek segítségével közös műveletek végezhetők a (Macintosh) Netatalk fájlkiszolgálóval. --with-quotas Tartalmazza a lemezkvóták támogatását. Mivel ezek az opciók alapbeállítás szerint tiltottak, az
általuk megvalósítható képességek egyike sem döntő fontosságú a Samba számára. Előfordulhat azonban, hogy időközben talál valaki néhány hasznos dolgot közülük, és vissza akar térni a kiindulási ponthoz, hogy eszerint módosítsa a saját verzióját. A 2.1 táblázat néhány további paramétert sorol fel, amelyek szintén átadhatók a configure szkriptnek, ha a Samba disztribúció egyes részeit különböző helyeken akarjuk tárolni, talán azért, mert több lemezt vagy partíciót akarunk használni Figyeljük meg, hogy az alapbeállítások esetenként olyan előtagokra hivatkoznak, amelyek korábban specifikálva lettek a táblázatban. 2. FEJEZET A SAMBA TELEPÍTÉSE UNIX RENDSZERRE | 47 2.1 táblázat További konfigurációs beállítások Beállítás Jelentése Alapértelmezett könyvtár --prefix=könyvtár Architektúrafüggetlen fájlok telepítése a megadott alapkönyvtárba. Architektúrafüggő fájlok telepítése a megadott
alakönyvtárba. Felhasználói végrehajtható fájlok telepítése a megadott könyvtárba. Rendszergazdai végrehajtható fájlok telepítése a megadott könyvtárba. Programokhoz kapcsolódó végrehajtható fájlok telepítése a megadott könyvtárba. Csak olvasható, architektúrafüggetlen fájlok telepítése a megadott könyvtárba. Program-függvénytárak telepítése a megadott könyvtárba. Include fájlok telepítése a megadott könyvtárba. Információs fájlok telepítése a megadott könyvtárba. Kézikönyv telepítése a megadott könyvtárba. /usr/local/samba --eprefix=könyvtár --bindir=könyvtár --sbindir=könyvtár --libexecdir=könyvtár --datadir=könyvtár --libdir=könyvtár --includedir=könyvtár --infodir=könyvtár --mandir=könyvtár /usr/local/samba eprefix/bin eprefix/bin eprefix/libexec prefix/share eprefix/lib prefix/include prefix/info prefix/man Most is érvényes, hogy mielőtt futtatnánk a configure szkriptet, mi legyünk a
rendszerben a rootfelhasználók. Ellenkező esetben az alábbihoz hasonló hibaüzenetet kaphatjuk: configure: warning: running as non-root will disable some tests (figyelmeztetés: nem rootként futtatáskor néhány teszt nem végezhető el) Bizonyára nem szeretnénk, ha a Samba make-fájl létrehozásakor nem futhat le néhány teszt, mert ekkor potenciális hibákkal kell számolnunk a Samba lefordításakor és futtatásakor. Az alábbiakban egy példa látható a configure szkript futtatására – ez a szkript hozza létre a Samba 2.04 make-fájlt Linux platformon Figyeljük meg, hogy a configure szkriptet a source könyvtárból kell futtatnunk, továbbá azt is, hogy a fájl középső sorai kimaradtak: # cd samba-2.04b/source/ # ./configure | tee mylog loading cache ./configcache 48 | SAMBA checking checking checking checking checking checking for gcc. (cached) gcc whether the C compiler (gcc -O ) works. yes whether the C compiler (gcc -O ) is a cross-compiler. no
whether we are using GNU C. (cached) yes whether gcc accepts -g. (cached) yes for a BSD compatible install. (cached) /usr/bin/install -c (kihagyott tartalom) checking configure summary configure OK creating ./configstatus creating include/stamp-h creating Makefile creating include/config.h Általánosságban a configure minden olyan sora, amelyik nem a checking vagy a creating szóval kezdődik, hibaüzenet. Gyakran hasznos, ha a konfiguráló szkript kimenetét átirányítjuk egy fájlba, hogy gyorsan megtalálhassuk a hibákat, amint ezt a fentiekben a tee paranccsal tettük. Ha hiba lépett fel a konfigurálás során, akkor erről bővebb információt a configlog fájlban találhatunk, amit a configure szkript hoz létre a helyi könyvtárban Ha rendben megtörtént a konfigurálás, akkor egy checking configure üzenetet kapunk, amit egy configure OK üzenet, majd négy vagy öt további üzenet követ, amelyek fájlok létrehozásáról tájékoztatnak. Eddig megvolnánk A
következő lépés a fordítás A Samba fordítása és telepítése Ezen a ponton már készen állunk a Samba végrehajtható fájljainak létrehozására. A fordítás ugyancsak egyszerű művelet: a source könyvtárban írjuk be a parancssorba a make parancsot. A make segédprogram egy sor magyarázó és sikerekről tájékoztató üzenetet ír a képernyőre az alábbi sorral kezdve: Using FLAGS = -O -Iinclude . Ez a segédprogram mind az smbd, mind az nmbd részére elvégzi a szükséges fordításokat, és a bin/make printerdef összeszerkesztő parancssorral fejeződik be. A következő példa a make parancs üzeneteit mutatja be a Sambának egy 2.04 Linux kiszolgálóra történő telepítésekor: # make Using FLAGS = -O -Iinclude -I./include -I/ubiqx -I/smbwrapper -DSMBLOGFILE="/usr/local/samba/var/log.smb" -DNMBLOGFILE="/usr/local/ /samba/var/log.nmb" -DCONFIGFILE="/usr/local/samba/lib/smbconf"
-DLMHOSTSFILE="/usr/local/samba/lib/lmhosts" -DSWATDIR="/usr/local/ /samba/swat" -DSBINDIR="/usr/local/samba/bin" -DLOCKDIR="/usr/local/ 2. FEJEZET A SAMBA TELEPÍTÉSE UNIX RENDSZERRE | 49 /samba/var/locks" -DSMBRUN="/usr/local/samba/bin/smbrun" -DCODEPAGEDIR="/usr/local/samba/lib/codepages" -DDRIVERFILE="/usr/ /local/samba/lib/printers.def" -DBINDIR="/usr/local/samba/bin" -DHAVE INCLUDES H -DPASSWD PROGRAM="/bin/passwd" -DSMB PASSWD FILE=" /usr/local/samba/private/smbpasswd" Using FLAGS32 = -O -Iinclude I./include -I/ubiqx -I/smbwrapper -DSMBLOGFILE="/usr/local/samba/ /var/log.smb" -DNMBLOGFILE="/usr/local/samba/var/lognmb" -DCONFIGFILE="/usr/local/samba/lib/smb.conf" -DLMHOSTSFILE="/usr/ /local/samba/lib/lmhosts" -DSWATDIR="/usr/local/samba/swat" -DSBINDIR="/usr/local/samba/bin" -DLOCKDIR="/usr/local/samba/
/var/locks" -DSMBRUN="/usr/local/samba/bin/smbrun" -DCODEPAGEDIR=" /usr/local/samba/lib/codepages" -DDRIVERFILE="/usr/local/samba/ /lib/printers.def" -DBINDIR="/usr/local/samba/bin" -DHAVE INCLUDES H -DPASSWD PROGRAM="/bin/passwd" -DSMB PASSWD FILE="/usr/local/samba/ /private/smbpasswd" Using LIBS = -lreadline -ldl -lcrypt -lpam Compiling smbd/server.c Compiling smbd/files.c Compiling smbd/chgpasswd.c (kihagyott tartalom) Compiling rpcclient/cmd samr.c Compiling rpcclient/cmd reg.c Compiling rpcclient/cmd srvsvc.c Compiling rpcclient/cmd netlogon.c Linking bin/rpcclient Compiling utils/smbpasswd.c Linking bin/smbpasswd Compiling utils/make smbcodepage.c Linking bin/make smbcodepage Compiling utils/nmblookup.c Linking bin/nmblookup Compiling utils/make printerdef.c Linking bin/make printerdef Ha a fordítás során problémáink lennének, akkor nézzünk utána a Samba dokumentációjában, hogy könnyen orvosolható-e
a baj. Másik lehetőség, hogy nézzük át vagy írjunk levelet a Samba levelezőlistáira, amelyek címe a ,,Hibakeresés a Sambában” című 9. fejezet végén, és a Samba honlapján található. A fordítással kapcsolatos problémák többsége rendszerspecifikus, és szinte mindig könnyen megoldható. Most, hogy már lefordítottuk a fájlokat, a # make install paranccsal telepíthetjük őket a megadott könyvtárakba. Ha történetesen frissítünk, akkor a régi Samba fájlok .old kiterjesztéssel megmaradnak, és a make revert parancs kiadásá- 50 | SAMBA val visszatérhetünk az előző verzióhoz. Miután a make install parancs elvégezte a feladatát, az old fájlokat (amennyiben vannak ilyenek) másoljuk át új helyre, vagy nevezzük át őket. Ugyanis ha nem tennénk így, akkor a Samba legközelebbi telepítésekor az eredeti .old fájlok minden figyelmeztetés nélkül felülíródnának, és elveszítenénk a korábbi verziót Ha úgy konfiguráltuk a
Sambát, hogy a fájlokhoz az alapbeállítás szerinti könyvtárakat használtuk, akkor az új fájlok a 2.2 táblázatban felsorolt könyvtárakba települnek Ne feledjük, hogy a telepítést olyan felhasználói jogosultságokkal kell elvégeznünk, melyekhez e célkönyvtárakra vonatkozóan írási jogok tartoznak. Ezekkel általában a root rendelkezik 2.2 táblázat A Samba telepítési könyvtárai Könyvtár Leírás /usr/local/samba /usr/local/samba/bin /usr/local/samba/lib /usr/local/samba/man /usr/local/samba/private /usr/local/samba/swat /usr/local/samba/var Fő fa Binárisok smb.conf, lmhosts, konfigurációs fájlok stb Samba dokumentáció Samba titkosított jelszófájlja SWAT fájlok Samba naplófájlok, zárolási fájlok, tallózólista, megosztott memóriafájlok, processz ID fájlok A könyv további részében esetenként a fő fa helyére samba dir néven hivatkozunk. A legtöbb konfigurációban ez a telepített Samba csomag alapkönyvtára:
/usr/local/samba. Ellenőrizzük, hogy nem tettük-e írásvédetté a /usr partíciót. A napló-, zárolási és jelszófájlokat valószínűleg máshová akarjuk elhelyezni. Az alábbiakban az a telepítés látható, amit e könyv szerzői végeztek a saját gépükön. Látható, hogy a disztribúció alapkönyvtáraként a /usr/local/samba könyvtárat használták (vagyis a samba dir könyvtárat): # make install Using FLAGS = -O -Iinclude -I./include -I/ubiqx -I/smbwrapper -DSMBLOGFILE="/usr/local/samba/var/log.smb" -DNMBLOGFILE="/usr/local/ /samba/var/log.nmb" -DCONFIGFILE="/usr/local/samba/lib/smbconf" - (kihagyott tartalom) The binaries are installed. You may restore the old binaries (if there were any) using the command "make revert". You may uninstall the binaries using the command "make uninstallbin" or "make uninstall" to uninstall binaries, man pages and shell scripts. 2. FEJEZET A SAMBA TELEPÍTÉSE
UNIX RENDSZERRE | 51 (kihagyott tartalom) =============================================================== The SWAT files have been installed. Remember to read the README for information on enabling and using SWAT. =============================================================== Ha az utolsó üzenet a SWAT-ról szól, akkor tudhatjuk, hogy sikeresen telepítettük az öszszes fájlt. Gratulálhatunk magunknak: a Samba már a rendszerünkben van! Az utolsó telepítési lépések Még néhány utolsó simítást el kell végezni. Vegyük fel például a Samba Web Administration Tool (SWAT) nevű eszközt az /etc/services és az /etc/inetdconf konfigurációs fájlok közé. A SWAT démonként az inetd alatt fut Segítségével egy webböngésző használható az SMB konfigurációs fájlok szerkesztésére vagy módosítására. 1. A SWAT felvételéhez írjuk be az alábbi sort az /etc/services fájl végére: swat 901/tcp 2. Írjuk be az alábbi sort az /etc/inetdconf fájlba
(Ellenőrizzük az inetdconf kézikönyvében az inetdconf konfigurációs fájl pontos formátumát, hogy nem tér-e el az alábbi példától.) Ne feledkezzünk meg arról, hogy át kell váltanunk a SWAT binárist tartalmazó elérési útra, ha azt nem az alapértelmezés szerinti /usr/local/samba helyre telepítettük. swat stream tcp nowait.400 root /usr/local/samba/bin/swat swat Ezzel már tényleg végeztünk a telepítéssel. Mielőtt azonban elindíthatnánk a Sambát, még el kell készítenünk hozzá egy konfigurációs fájlt. A Samba alapvető konfigurációs fájlja A Samba konfigurálásának kulcspontja az smb.conf konfigurációs fájl Ez lehet nagyon egyszerű, és rendkívül összetett is. A könyv további része javarészt abban segíti az olvasót, hogy közvetlen közelről is megismerkedjen ezzel a fájllal. Először kezdjük egy egyszerű fájllal, ami lehetővé teszi, hogy elinduljanak a Samba démonjai, és lássuk, hogy minden úgy történik, ahogyan
lennie kell. A további fejezetekben arról olvashatunk, miként konfigurálhatjuk többrétűen a Sambát, és miként bízhatunk rá érdekes feladatokat A telepítési folyamat nem hozza létre automatikusan az smb.conf fájlt, bár bizonyos mintafájlokat tartalmaz a Samba disztribúció. A kiszolgáló szoftver teszteléséhez az alábbi fájlt fogjuk használni. A fájl neve smbconf, és a /usr/local/samba/lib könyvtárban van* [global] workgroup = SIMPLE * Ha az olvasó nem fordította volna le a Sambát, hanem ehelyett letöltött egy binárist, akkor olvassa át a csomaghoz tartozó dokumentációt, és nézze meg, hogy hol várja a Samba az smb.conf fájlt Ha a Sambát előre telepítve kapta meg a Unix rendszerével együtt, akkor feltehetően már van valahol a rendszerében egy smb.conf fájl 52 | SAMBA [test] comment = For testing only, please path = /export/samba/test read only = no guest ok = yes Ez a rövid konfigurációs fájl azt mondja meg a Samba
kiszolgálónak, hogy a kiszolgáló az /export/samba/test könyvtárát test néven ajánlja fel SMB/CIFS megosztásként. A kiszolgáló egyúttal a SIMPLE nevű munkacsoport tagja is lesz, és az ügyfeleinek is tagoknak kell lenniük. (Az olvasó használja itt a saját munkacsoportja nevét, ha már ismeri azt) A könyv következő, a Windows ügyfelek telepítéséről szóló fejezetében a [test] megosztást használjuk. Itt most a telepítést a Unix kiszolgáló gyökeréből kiadott alábbi parancsok végrehajtásával fejezzük be: # mkdir /export/samba/test # chmod 777 /export/samba/test Meg kell jegyeznünk itt, hogy a rendszer biztonsága tekintetében ez a legrosszabb telepítési lehetőség. Pillanatnyilag azonban csak tesztelni akarjuk a Sambát, ezért egyelőre ne foglalkozzunk biztonsági kérdésekkel. Továbbá a jelszavak titkosításával kapcsolatban van néhány olyan téma, amelyekkel a későbbiekben, a Windows ügyfelek kapcsán fogunk találkozni,
úgyhogy ez az a telepítés, ami a legkevesebb fejfájást okozza. Ha az olvasó a Windows 98 vagy a Windows NT Service Pack 3-as vagy újabb verzióját használja, akkor a Samba konfigurációs fájl [global] szakaszába a következő bejegyzést kell beírnia: encrypt passwords = yes. Ezen túlmenően le kell futtatni a smbpasswd programot (ez tipikusan a /usr/local/samba/bin/ könyvtárban van), és újból be kell írnia a Unix kiszolgálón lévő azon felhasználók felhasználónév/jelszó kombinációját, akik számára lehetővé akarja tenni, hogy hozzáférjenek a Samba titkosított ügyféladatbázisában lévő megosztásokhoz. Ha például azt szeretné, hogy a steve nevű Unixos felhasználó hozzáférhessen egy SMB ügyfél megosztásaihoz, akkor a következőt kell beírnia: smbpasswd -a steve. Az első alkalommal, amikor felvesz egy felhasználót, a program egy hibaüzenetben közli, hogy a titkosított jelszóadatbázis nem létezik. Nem kell aggódni emiatt,
mert a program majd elkészíti Győződjön meg arról, hogy a titkosított adatbázisba felvett felhasználónév/jelszó kombináció megegyezik azzal a kombinációval, amit a Windows ügyfél oldalon használni szándékozik. SWAT A Samba 2.0 verzióját használva egyszerűbben is elkészíthető a konfigurációs fájl, mint ha kézzel írnánk meg. A böngészőnkből lépjünk rá a http://localhost:901 webcímre, és root felhasználónévvel jelentkezzünk be, amint ez a 2.1 ábrán látható: 2. FEJEZET A SAMBA TELEPÍTÉSE UNIX RENDSZERRE | 53 2.1 ábra Bejelentkezés a SWAT-be Miután bejelentkeztünk, kattintsunk a képernyő tetején látható GLOBAL gombra. Ekkor megjelenik a 2.2 ábrán látható Global Variables oldal 2.2 ábra A SWAT Global Variables oldala 54 | SAMBA Ebben a példában a munkacsoport nevének mezőjébe a SIMPLE, a biztonsági mezőbe pedig a USER nevet írtuk be. A menüben ezek mellett már csak egyetlen beállítást kell
megváltoztatni, mégpedig azt, amelyik meghatározza, hogy a helyi hálózatban melyik rendszer oldja fel a NetBIOS címeket. Ennek a rendszernek WINS server a neve Az oldal legalján, a wins support mezőben a Yes választ állítsuk be, hacsak nincs már egy WINS kiszolgáló a hálózatunkban. Ha lenne, akkor ehelyett a wins server mezőbe írjuk be a WINS kiszolgáló IP címét. Ezt követően lépjünk vissza az oldal tetejére, és a Commit Changes gombra kattintva írjuk ki a változtatásokat az smbconf fájlba 2.3 ábra A SWAT megosztáskészítő képernyője Következő lépésként kattintsunk a Shares ikonra. Ekkor a 23 ábrán láthatóhoz hasonló oldal jelenik meg. Kattintsunk a Choose Share gomb melletti Test mezőre Ekkor megjelenik a 24 ábrán látható Share Parameters képernyő A comment sorba beírt megjegyzéssel emlékeztetjük magunkat arra, hogy ez egy test nevű megosztás az smbconf fájlban A SWAT ide másolja be ezeket az információkat. Ha
rákattintunk a View gombra, a SWAT az alábbi smb.conf fájlt listázza ki: # Samba config file created using SWAT # from localhost (127.001) # Date: 1998/11/27 15:42:40 2. FEJEZET A SAMBA TELEPÍTÉSE UNIX RENDSZERRE | 55 2.4 ábra A SWAT Share Parameters képernyője # Global parameters workgroup = SIMPLE [test] comment = For testing only, please path = /export/samba/test read only = no guest ok = yes Miután elkészült ez a konfigurációs fájl, átugorhatjuk a következő lépést, mert a SWAT garantáltan helyes szintaxist használ. A konfigurációs fájl tesztelése Ha a konfigurációs fájl elkészítéséhez nem a SWAT segítségét vettük igénybe, akkor célszerű tesztelnünk a fájlt, hogy nincs-e szintaktikai hiba benne. Lehet, hogy gyerekesnek tűnik egy mindössze nyolc sorból álló fájlra lefuttatni egy tesztprogramot, de jó, ha ez gyakorlatunkká válik, mert a későbbiekben, amikor egy, a valóságban is használni kívánt fájlt megírunk, már
nem nélkülözhetjük. 56 | SAMBA A testparm nevű elemző program szintaktikai hibákat keres egy smb.conf fájlban, és ha talál ilyeneket, akkor megjeleníti ezeket azokkal a szolgáltatásokkal együtt, amelyek engedélyezve vannak a gépünkön. Következzék egy példa: vegyük észre, hogy a nagy igyekezetben a workgroup szót hibásan, workgrp alakban írtuk be (a program listája meglehetősen hosszú lehet, ezért ajánlható, hogy az utolsó részeket a tee parancs beírásával irányítsuk át egy fájlba): Load smb config files from smb.conf Unknown parameter encountered: "workgrp" Ignoring unknown parameter "workgrp" Processing section "[test]" Loaded services file OK. Press enter to see a dump of your service definitions # Global parameters [global] workgroup = WORKGROUP netbios name = netbios aliases = server string = Samba 2.05a interfaces = bind interfaces only = No (kihagyott tartalom) [test] comment = For testing only, please
path = /export/samba/test read only = No guest ok = Yes Az érdekes részek a lista elején és a végén vannak. A lista elején kiírásra kerülnek azok a szintaktikai hibák, amelyeket a fájlban elkövettünk, a végén pedig felsorolást kapunk azokról a szolgáltatásokról, amelyekről a kiszolgáló feltételezi, hogy fel tudja kínálni. Jó tanács: győződjünk meg arról, hogy a mi és a kiszolgáló elvárásai egybeesnek. Ha minden rendben volt, akkor nekifoghatunk elindítani a kiszolgáló démonjait. A Samba démonjainak indítása Két Samba démon van, az smbd és az nmbd, amelyeknek futniuk kell ahhoz, hogy helyesen működjön a Samba. Ezek háromféle módon indíthatók el: • kézzel; • önmagukban álló démonokként; • az inetd szuperdémonból. 2. FEJEZET A SAMBA TELEPÍTÉSE UNIX RENDSZERRE | 57 A démonok kézi indítása Ha nagyon sietünk, akkor a Samba démonjait kézzel is elindíthatjuk. Rootként írjuk be a következő parancsokat:
# /usr/local/samba/bin/smbd -D # /usr/local/samba/bin/nmbd -D Ettől a ponttól kezdve a Samba futni fog a rendszerünkben, és kész arra, hogy kapcsolatokat építsen fel. Önmagukban álló démonok Ha a Samba műveleteket önmagukban álló démonokként akarjuk futtatni, akkor az előző részben felsorolt parancsokat fel kell vennünk a standard Unix-indító szkriptekbe. Ez különbözőképpen történhet meg attól függően, hogy BSD-stílusú vagy System V Unix rendszerünk van-e BSD Unix BSD-stílusú Unix esetében az alábbi kódot kell felvenni az rc.local fájlba, ami tipikusan az /etc vagy az /etc/rc.d könyvtárban található: if [ -x /usr/local/samba/bin/smbd]; then echo "Starting smbd." /usr/local/samba/bin/smbd -D echo "Starting nmbd." /usr/local/samba/bin/nmbd -D fi Ez a kód nagyon egyszerű: megvizsgálja, hogy az smbd fájlnak van-e végrehajthatósági engedélye, és ha van, akkor a rendszer indításakor elindítja mindkét Samba
démont. System V Unix A System V Unix rendszer esetében a dolgok már kicsit bonyolultabbak. A System V tipikusan olyan szkripteket használ, amelyek elindítanak és leállítanak démonokat a rendszeren Ezért nekünk kell megmondanunk a Sambának, hogy miként működjön, amikor elindul, és amikor leáll. Módosíthatjuk az /etc/rclocal könyvtár tartalmát, és az alábbihoz hasonló kódot vehetjük fel az smb programba: #!/bin/sh # Contains the "killproc" function on Red Hat Linux ./etc/rcd/initd/functions PATH="/usr/local/samba/bin:$PATH" 58 | SAMBA case $1 in ’start’) echo "Starting smbd." smbd -D echo "Starting nmbd." nmbd -D ;; ’stop’) echo "Stopping smbd and nmbd." killproc smbd killproc 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 Ezt a szkriptet elkészítve a következő parancsokkal indíthatjuk el és
állíthatjuk le az SMB szolgáltatást: # /etc/rc.local/smb start Starting smbd. Starting nmbd. # /etc/rc.local/smb stop Stopping smbd and nmbd. Indítás az inetd démonból Az inetd démon a Unix rendszer internetes ,,szuperdémonja". Ez az /etc/services fájlban definiált TCP portokat figyeli, és minden egyes portra végrehajtja az /etc/inetd.conf fájlban definiált megfelelő programot. Ennek az elrendezésnek az az előnye, hogy nagy számban lehetnek felkérésre készen várakozó démonjaink, amelyeknek azonban nem kell egyidejűleg futniuk. E démonok helyett az inetd démon figyeli a felkéréseket Ennek fejében mindössze annyi a teendőnk, hogy létre kell hoznunk egy új démon processzt, és egy helyett két fájlt kell szerkesztenünk. Ez akkor használható, ha csak egy vagy két felhasználónk van, vagy ha túl sok démon van a gépünkön Így egy frissítést is könnyebb végrehajtani, anélkül, hogy megzavarnánk egy meglévő kapcsolatot Ha a
démonokat az inetd démonból akarjuk indítani, akkor először nyissuk meg a szövegszerkesztőnkben az /etc/services fájlt. Ha még nem definiáltuk az alábbiakat, akkor vegyük fel bele a következő két sort: netbios-ssn netbios-ns 139/tcp 137/udp 2. FEJEZET A SAMBA TELEPÍTÉSE UNIX RENDSZERRE | 59 Következő lépésként szerkesszük az /etc/inetd.conf fájlt Keressük meg az alábbi két sort, és ha nem léteznének, akkor írjuk be őket. Ha már van egy smbd és nmbd sor a fájlban, akkor úgy szerkesszük őket, hogy az általunk telepített új smbd és nmbd démonra mutassanak. A különböző Unix változatok egymástól némileg eltérő szintaxist használhatnak ebben a fájlban; útmutatóul nézzük meg a meglévő bejegyzéseket és az inetd.conf kézikönyvét: netbios-ssn stream tcp nowait root /usr/local/samba/bin/smbd smbd netbios-ns dgram udp wait root /usr/local/samba/bin/nmbd nmbd Végezetül zárjuk le az összes smbd vagy nmbd processzt, és
küldjünk az inetd processznek egy leállítás (hangup, HUP) jelet. (Az inetd démon a HUP jel beérkezésekor újraolvassa a konfigurációs fájlt) Ehhez a ps paranccsal keressük meg a processzazonosítóját (ID), és az alábbi parancs kiadásával küldjük el a leállító jelet: # kill -HUP process id Ezt követően összeállnak a részprogramok, és elindul a Samba. A Samba démonok tesztelése Talán alig hihető, de már szinte mindent elvégeztünk a Samba kiszolgáló telepítéséhez. Már csak az van hátra, hogy meggyőződjünk mindennek a helyes működéséről. Ennek egyik kényelmes módja az smbclient program futtatása, amelynek segítségével megvizsgálhatjuk, hogy milyen szolgáltatásokat képes nyújtani a kiszolgáló a hálózaton. Ha minden rendesen működik, akkor képesnek kell lennünk a következőre: # smbclient -U% -L localhost Ha minden rendben volt, akkor a program arról tájékoztat, hogy a Hydra kiszolgáló Simple munkacsoportjában
létrejött egy test nevű lemezmegosztás. Ha bármilyen probléma lépne fel, ne essünk pánikba! Próbáljuk meg kézi módon elindítani a démonokat, és vizsgáljuk meg a rendszer kimenő üzeneteit, vagy nézzük át a /usr/local/samba/var/log.smb könyvtárban lévő fájlokat, hogy megállapíthassuk, mi történt Ha komolyabb hibára gyanakszunk, akkor ugorjunk át a ,,Hibakeresés a Sambában” című 9. fejezetre, és nézzük meg, milyen hibák fordulhatnak elő a démonokkal kapcsolatban Ha nem volt hiba, vagy az előfordult hibákat sikerült kijavítani, akkor ezzel sikeresen befejeztük a lemezmegosztást kínáló Samba kiszolgáló telepítését. Ez ugyan egy egyszerű szolgáltatás, de már használhatjuk arra, hogy a következő fejezetben telepítsük és teszteljük a Windows 95 és NT ügyfeleket. A későbbiekben aztán tovább bővítjük a szolgáltatások körét olyan kínálatokkal, mint a home könyvtárak, nyomtatók, biztonság, és azt is látni
fogjuk, miként integrálható a kiszolgáló egy nagyobb Windows tartományba. Windows ügyfelek konfigurálása Örömünkre szolgálhat, hogy eléggé egyszerűen konfigurálhatjuk úgy a Windowst, hogy használni tudjuk az új Samba kiszolgálónkat. Az SMB ugyanis a Microsoftnak a helyi hálózatok erőforrásainak megosztásához használt saját nyelve, úgyhogy a telepítés jó része már megtörtént a Windows ügyféloldalán. Ebben a fejezetben főként olyan témákkal foglalkozunk, amelyek a Windows és a Unix – két, egymástól teljesen különböző operációs rendszer – közötti kommunikációval és koordinációval kapcsolatosak. A Samba a TCP/IP protokollt használja ahhoz, hogy kommunikáljon a hálózaton az ügyfeleivel. Ha az olvasó még nem használta volna a TCP/IP protokollt a Windows rendszerű számítógépén, akkor ebben a fejezetben megtudhatja, hogyan telepítheti ezt Ezt követően úgy kell konfigurálni a Windows gépet, hogy
működjön egy TCP/IP protokollt használó hálózatban. Miután teljesült ez a két előfeltétel, megtudjuk, miként érhető el a Samba kiszolgálón egy megosztott lemez. A fejezet három fő részből áll. Az első rész a Windows 95/98 számítógépek, a második a Windows NT 4.0 gépek beállítását mutatja be A harmadik rész néhány előzetes információt ad arról, hogy miként épülnek fel az SMB kapcsolatok a Windows ügyfelek és a kiszolgálók között. Ezek az információk a könyv további fejezeteinek megértéséhez lesznek hasznosak Windows 95/98 számítógépek beállítása A Windows 95/98 rendszert sajnos nem úgy tervezték meg, hogy egynél több személy is használhassa – ez a koncepció sokkal inkább a Unix vagy a Windows NT rendszerben valósul meg. Ennek ellenére a Windows 95/98 rendszer korlátozott módon azért támogatja a többfelhasználós üzemmódot: ha közöljük az operációs rendszerrel ezt a kívánságunkat, akkor minden
egyes felhasználó számára elkészít egy saját profilt és jelszófájlt Ez azonban nagyon távol áll az igazi többfelhasználós biztonságtól. Másként kifejezve a Windows 95/98 – a Unixtól eltérően – nem akadályozza meg, hogy az egyik felhasználó tönkretegye egy másik felhasználónak a helyi merevlemezen végzett munkáját, de azért ezek a profilok elég jók ahhoz, hogy elinduljunk belőlük. Fiókok és jelszavak Első lépésként közölnünk kell a Windows-zal, hogy tárolja külön-külön a profilokat, és gyűjtse össze a felhasználóneveket és jelszavakat, hogy hitelesíteni tudja mindazokat, akik megpróbálnak hozzáférni egy Samba megosztáshoz. Ezt a Windows Vezérlőpultján, a jel- 3. FEJEZET WINDOWS ÜGYFELEK KONFIGURÁLÁSA | 61 szavak beállításánál tehetjük meg. Ha valaki nem ismerné még a Vezérlőpultot, akkor kattintson a Windows bal alsó sarkában lévő Start gombra, a megnyíló menüben mutasson a Beállítások
tételre, és az újabb menüben kattintson a Vezérlőpult névre. Ehelyett azt is megteheti, hogy kettőt kattint a képernyő bal felső sarkában lévő Sajátgép nevű ikonra, és a megnyíló ablakban rákattint a Vezérlőpult ikonra. A Vezérlőpulton kattintsunk kettőt a Jelszó ikonra, és a megjelenő párbeszédablakban kattintsunk a Felhasználói profil fülre. Ekkor a 31 ábrán látható párbeszédlap jelenik meg Ezen a párbeszédlapon kattintással kapcsoljuk be az ,,A felhasználók testre szabhatják a” kezdetű szöveghez tartozó választógombot. Ezzel mondjuk meg a Windowsnak, hogy külön felhasználói profilokban tároljon minden egyes felhasználót, és tárolja az általunk megadott felhasználónevet és jelszót. Ez utóbbiakat fogjuk majd a későbbiekben arra használni, hogy kapcsolatba lépjünk egy SMB/CIFS kiszolgálóval. Végül jelöljük be a Felhasználói profilok beállításai keretben lévő mindkét négyzetet az ábrán látható
módon 3.1 ábra A Jelszó tulajdonságai párbeszédlap Következő lépésként kattintsunk a Jelszó tulajdonságai párbeszédablak Jelszó megváltoztatása nevű fülére. Ahhoz, hogy a Samba lehetővé tegye a megosztásainak elérését, a Windowsban megadott felhasználónévnek és jelszónak meg kell egyeznie a Samba kiszolgálón lévő fióknévvel és jelszóval. Ne aggódjunk, ha nem lehetne megjeleníteni ezt a párbeszédlapot; ez minden bizonnyal azért van, mert korábban még nem állítottunk be magunknak Windows felhasználónevet és jelszót Egyszerűen kattintsunk a párbeszédablak alján lévő OK gombra, és amikor a Windows megkérdezi, hogy kívánjuk-e a rendszer újraindítását, akkor igennel válaszoljunk. Ezt követően lapozzunk át a fejezet ,,Bejelentkezés első alkalommal” című részére A Windows jelszó megváltoztatása Miután rákattintottunk a Jelszó megváltoztatása fülre, megnyílik a 3.2 ábrán látható párbeszédlap 62
| SAMBA 3.2 ábra A Jelszó megváltoztatása párbeszédlap Kattintsunk a Windows jelszó módosítása gombra. Ekkor megnyílik a 33 ábrán látható, Windows jelszó megváltoztatása nevű ablak. Ebben az ablakban úgy módosíthatjuk a jelszavunkat, hogy megegyezzen a Samba kiszolgálón létrehozott azon fiókunk jelszavával, amelyen keresztül majd be fogunk jelentkezni a kiszolgálóra. 3.3 ábra A Windows jelszó megváltoztatása ablak Bejelentkezés első alkalommal Ha a Jelszó tulajdonságai párbeszédablakból nem lenne elérhető a Jelszó megváltoztatása párbeszédlap füle, akkor a Windows az újraindítását követően bekér egy felhasználónevet és egy jelszót. Adjuk magunknak ugyanazt a felhasználónevet és jelszót, amit a Samba kiszolgálón is használunk. Miután megerősítettük az új felhasználónevet és jelszót, vagy egy már meglévőt használunk, a Windows a 3.4 ábrán látható ablakban megkérdezi, akarjuk-e, hogy elkészítsen
számunkra egy felhasználói profilt 3. FEJEZET WINDOWS ÜGYFELEK KONFIGURÁLÁSA | 63 3.4 ábra A Windows hálózati profiljai Kattintsunk az Igen gombra. Ekkor a Windows létrehoz egy külön profil- és jelszófájlt, és ebben tárolja a jelszavunk másolatát. Ha ezek után kapcsolódunk a Sambához, a Windows innen küldi ki a jelszavunkat, amire a megosztások hozzáférésekor a hitelesítéshez van szükség. Egyelőre nem foglalkozunk többet a profilokkal; ezekről részletesebben majd a ,,Felhasználók, biztonság és tartományok” című 6. fejezetben olvashatunk Azt azonban még megjegyezzük, hogy ezek a jelszófájlok némi biztonsági kockázatot rejtenek magukban: valaki ellophatja a jelszófájlunkat, és visszafejtheti a benne lévő jelszavakat, mert ezek meglehetősen gyengén vannak titkosítva. A Windows 95/98-as rendszerben ez ellen sajnos semmit sem lehet tenni A Windows 2000 (NT 50) rendszerben már sokkal biztonságosabb algoritmus szerint
titkosítják a jelszavakat A hálózat telepítése Következő lépésként azt kell megvizsgálnunk, hogy megfelelőképpen van-e telepítve a rendszerünkben a TCP/IP hálózati protokoll. Ehhez kattintsunk kettőt a Vezérlőpult Hálózatok ikonjára Ekkor megjelenik a 35 ábrán látható, a hálózati konfigurációt bemutató párbeszédablak. A Microsoft hálózata úgy működik, hogy meghatározott protokollokat, mint például az IPX vagy a TCP/IP protokollt meghatározott hardvereszközökhöz, például egy Ethernet kártyához vagy egy telefonos kapcsolathoz köt. Azáltal, hogy egy protokollt egy hardvereszközön keresztül küld el, a gép egy adott típusú hálózatban ügyfélként vagy kiszolgálóként is működhet Ami a Sambát illeti, számunkra most az az érdekes, hogy a TCP/IP protokollt egy hálózati eszközhöz kötve ügyfélként szerepeltessük a gépünket egy Microsoft hálózatban. Ezért az említett párbeszédablakban legkevesebb azt kell
látnunk, hogy a Microsoft Network ügyfél (Client for Microsoft Network) összetevő telepítve van a gépünkön, és remélhetőleg egy hálózati hardvereszköz (célszerűen egy Ethernet kártya) is hozzá van kötve a TCP/IP protokollhoz. Ha csak egyetlen hálózati hardvereszköz van a gépünkben, akkor az eszköz neve alatt a TCP/IP protokoll is megjelenik. Ha a párbeszédablakunk a 3.5 ábrán láthatóhoz hasonló tartalmú, akkor a protokoll hozzá van kötve az eszközhöz A párbeszédablakban a ,,Microsoft Networks fájl- és nyomtatómegosztás” komponens is szerepelhet, ami ugyancsak hasznos. Emellett megjelenhet még benne a NetBEUI vagy a Novell Networking, amelyek a Windows telepítésének standard részei, de a TCP/IP protokoll használatakor nemkívánatosak. Ha sikerül, távolítsuk el a NetBEUI összetevőt, mert ez fölösleges, és csak problémát okoz, amikor esetleg hibákat kell keresnünk. Ha a hálózatunkban nincsenek Novell kiszolgálók, akkor a
Novell (IPX/SPX) protokollt is törölhetjük 64 | SAMBA 3.5 ábra A Windows 95/98 Hálózat párbeszédablaka A TCP/IP felvétele Ha az előbbi párbeszédablakban nem jelenne meg a TCP/IP protokoll, akkor telepítenünk kell azt. Ha az olvasó használta már ezt a protokollt, akkor hagyja ki ezt a részt, és lapozzon a fejezet ,,Név és munkacsoport beállítása” című részére. A TCP/IP könnyen telepíthető, mert a Microsoft a saját változatát ingyen kínálja. A protokoll felvételéhez kattintsunk a párbeszédablakban az összetevők felsorolása alatt látható Hozzáadás gombra Az ekkor megnyíló, a 36 ábrán látható párbeszédablakban a Protokoll tételre, majd a Hozzáadás gombra kattintva közöljük ezt a szándékunkat. 3.6 ábra A felveendő hálózati összetevő kiválasztása 3. FEJEZET WINDOWS ÜGYFELEK KONFIGURÁLÁSA | 65 Következő lépésként a 3.7 ábrán látható párbeszédablakban a gyártók közül kattintsunk a
Microsoft tételre, majd a hálózati protokollok listájában a TCP/IP tételre, végül az OK gombra. Ezzel visszatérünk a hálózat párbeszédablakához Az OK gombra kattintva zárjuk be ezt az ablakot. Ezt követően a Windows a telepítő lemezről telepíteni fogja a szükséges összetevőket, és újraindítja a gépet. 3.7 ábra A telepítendő protokoll kiválasztása A TCP/IP konfigurálása Ha egynél több hálózati eszközünk van (például egy Ethernet kártyánk és egy modemünk), akkor mindegyik hardvereszköznek egy nyíllal kötődnie kell a TCP/IP protokollhoz a 3.8 ábrán látható módon. Jelöljük ki azt a TCP/IP protokollt, amelyik a Samba hálózati eléréséhez használandó hálózati eszközhöz van kötve, és kattintsunk a Tulajdonságok gombra Miután ezt megtettük, megnyílik a 3.9 ábrán látható, a hardvereszközhöz tartozó TCP/IP tulajdonságai párbeszédablak. Ez a párbeszédablak hét párbeszédlapból áll, amelyek közül a
következő négyen kell elvégezni a konfigurálást: • IP cím; • DNS konfiguráció; • WINS konfiguráció; • Kötések. Az IP cím párbeszédlap A 3.9 ábrán látható IP cím párbeszédlapon kapcsoljuk be az ,,IP cím megadása” választógombot, és a rendelkezésre álló mezőkbe írjuk be az IP és az alhálózati maszk címét A gépünkhöz magunknak, vagy a hálózat rendszergazdájának kell hozzárendelnie egy IP címet. Az itt álló értékeknek a számítógépet ugyanabban az alhálózatban kell elhelyezkednie, mint ahol a Samba kiszolgáló is van Ha például a kiszolgáló címe 192168220100, és 66 | SAMBA 3.8 ábra A megfelelő TCP/IP protokoll kijelölése 3.9 ábra A TCP/IP tulajdonságai párbeszédablak 3. FEJEZET WINDOWS ÜGYFELEK KONFIGURÁLÁSA | 67 a hálózati maszk címe 255.2552550, akkor a Windows 98 számítógéphez a 19216823610 címet (amennyiben ez szabad cím), alhálózati címként pedig a Samba hálózati címét
kell használni. Ha a hálózaton már a DHCP (Dynamic Host Configuration Protocol) protokollt használtuk az IP címek Windows gépekhez való kiosztásához, akkor az ,,IP cím automatikus megállapítása” választógombot kapcsoljuk be. A DNS beállítás párbeszédlap A DNS (Domain Name Service = tartománynév-szolgáltató) a felelős az olyan, internetes számítógép-neveknek, mint a blabla.mintacom olyan, a gépek számára olvasható IP címekre történő lefordítására, mint például a 192.16823610 Ez egy Windows 98 számítógépen kétféle módon tehető meg: vagy meghatározunk egy kiszolgálót, amelyik elvégzi ezt helyettünk, vagy fenntartunk egy név- és címpárokat tartalmazó helyi listát, amelyre hivatkozhatunk. Azok a hálózatok, amelyek az internethez kapcsolódnak, tipikusan egy tartománynévkiszolgálót használnak, mert egyébként a szükséges gazdafájlok mérete nagyon nagy lenne. Egy, az internethez nem kapcsolódó helyi hálózat
esetében a lehetséges gazdák listája rövid és jól ismert lehet, és a Unix gépen az /etc/hosts fájlban tárolható. Ha kétségeink lennének afelől, hogy kell-e használnunk egy DNS névkiszolgálót, vagy hogy mi lehet ennek a címe, akkor nézzünk bele a Unix kiszolgálók /etc/resolv.conf fájljába Minden olyan gépen, amelyik DNS-t használ, léteznie kell ennek a fájlnak, aminek ehhez hasonló a tartalma: #resolv.conf domain example.com nameserver 127.001 nameserver 192.16823620 A bemutatott példában a lista második nameserver sora tartalmazza a helyi hálózat egy másik gépének a 192.16823620 IP címét Ez a gép megfelelő jelölt lehet DNS kiszolgálóként való használatra* A 3.10 ábrán látható párbeszédablak megfelelő mezőjébe egy vagy több DNS kiszolgáló helyes IP címét kell beírnunk (itt olyan internetes cím, mint például az dnsoreillycom nem használható.) A 127001 címet se használjuk – ez sohasem lehet egy DNS kiszolgáló
helyes címe! Próbáljunk a hálózatunkban már létező címek közül választani. Az /etc/resolvconf fájlban felsorolt bármelyik névkiszolgáló használható, de jobb eredményt érhetünk el egy közeli kiszolgálóval. (Ha nem találnánk a Unix gépünkön /etc/resolvconf fájlokat, akkor tiltsuk le a DNS-t mindaddig, amíg nem találunk legalább egy DNS kiszolgálócímet.) Tegyük fel, hogy csak egyetlen DNS kiszolgálónk van, és annak 192.16823620 a címe Kattintsunk a DNS engedélyezése választógombra, amint ez a 3.10 ábrán látható, és írjuk be a kiszolgáló címét a DNS kiszolgáló keresési sorrendje alatti mezőbe. Ezt követően írjuk be a Gazda mezőbe a Windows 95/98 gépünk nevét, a Tartomány mezőbe pedig annak a tartománynak a nevét, amelyben a számítógépünk van. A Tartományutótag keresési sorrendje mezőt a Samba esetében nyugodtan üresen hagyhatjuk * A többi címet kizárhatjuk, mert minden Unix gépnek van 127.001 localhost
címe, függetlenül attól, hogy kapcsolódik-e egy hálózathoz vagy sem. Egyes rendszerek a helyes működésükhöz ezt a címet igénylik 68 | SAMBA 3.10 ábra A DNS beállítás párbeszédlap A WINS konfiguráció párbeszédlap A WINS a Windows Internet Name Service rövidítése, és a NetBIOS névkiszolgáló Microsoft-féle változatát jelenti. Ha engedélyezzük a WINS konfigurálását a Samba gépen, közölnünk kell a Windows-zal a Samba kiszolgáló címét. Ha olyan WINS kiszolgálókat használunk, amelyeken a Windows NT operációs rendszer fut, adjuk meg itt mindegyikük címét. A 311 ábrán a WINS konfigurálása párbeszédlap látható A WINS párbeszédlapon ne használjunk vegyesen Samba WINS és Windows NT kiszolgálót az elsődleges/másodlagos kombinációban. Mivel ez a kettő nem többszörözheti az adatbázisait, a vegyes használatuk névfeloldási problémákhoz vezet. A párbeszédlapon jelöljük be a WINS engedélyezése
választógombot, és a rendelkezésre álló mezőbe írjuk be a WINS kiszolgáló címét, majd kattintsunk a Hozzáadás gombra. A Hatókörazonosító mezőt hagyjuk üresen. Hostfájlok Ha nincs sem DNS, sem WINS kiszolgálónk, és nem akarunk broadcast névfeloldást használni, akkor a gép rendelkezésére kell bocsátanunk egy IP címeket és hostneveket tartal- 3. FEJEZET WINDOWS ÜGYFELEK KONFIGURÁLÁSA | 69 3.11 ábra A WINS konfigurálása párbeszédlap mazó táblát a Unix szabványos /etc/hosts formátumában. Windows gépen ezt a táblát a WINDOWSHOSTS könyvtárban kell elhelyezni azon a meghajtón, amelyiken a Windows telepítve van (ez tipikusan a C: meghajtó). Egy egyszerű hostfájl az alábbiakat tartalmazhatja: # 127.001 192.1682361 192.1682362 192.1682363 192.1682364 192.16823610 localhost escrime.examplecom escrime riposte.examplecom riposte wizzin.examplecom wizzin touche.examplecom touche hobbes.examplecom hobbes Ezt a hostfájlt közvetlenül
átmásolhatjuk bármelyik Unix gép /etc/hosts/ könyvtárából – a formátumai azonosak. A Windows rendszerben azonban csak a legvégső esetben használjunk hostfájlokat a névfeloldáshoz A kötések vizsgálata Utoljára a 3.12 ábrán látható Kötések párbeszédlapot kell megnéznünk 70 | SAMBA 3.12 ábra A Kötések párbeszédlap A Microsoft Network ügyfél tétel melletti négyzetnek bejelöltnek kell lennie, jelezve, hogy a gép TCP/IP protokollt használ. Ha a párbeszédlapon a Microsoft Networks fájl- és nyomtatómegosztás tétel is megjelenik, akkor azt is jelöljük be, amint az ábrán látható Név és munkacsoport beállítása Végül kattintsunk a TCP/IP beállítások párbeszédablakában az OK gombra, hogy visszatérjünk a Hálózat ablakhoz. Kattintsunk az Azonosítás fülre, hogy megjelenjen a 313 ábrán látható párbeszédlap. 3.13 ábra Az Azonosítás párbeszédlap 3. FEJEZET WINDOWS ÜGYFELEK KONFIGURÁLÁSA | 71 Itt
másodszor is meg kell adnunk a számítógépünk nevét. Ezúttal azonban nem a DNS gazda- és tartománynevet, hanem a gép NetBIOS nevét kell megadnunk. A legcélszerűbb azonban, ha itt is a ugyanazt a gazdanevet választjuk. Nagyon vigyázzunk, hogy ne kövessünk el gépelési hibát: igencsak zavaró lehet, ha úgy állítjuk be a számítógépünket, hogy a TCP/IP-nek pali, míg az SMB-nek plai néven mutatkozik be! Ugyanitt kell megadnunk a munkacsoportunk nevét is. Esetünkben ez a SIMPLE név, de ha valaki A Samba telepítése Unix rendszerre című 2. fejezetben, a Samba konfigurációs fájl elkészítésekor más nevet használt, akkor itt is azt használja Kerüljük a WORKGROUP nevet – ha nem így tennénk, ugyanahhoz a munkacsoporthoz tartoznánk, amelyhez a világon az összes konfigurálatlan (vagy rosszul konfigurált) gép tartozik A Samba kiszolgáló elérése Az OK gombra kattintva fejezzük be a konfigurálást. A számítógépet újra kell indítanunk,
hogy érvényre jussanak az új beállítások. Most jön a nagy pillanat. A Samba kiszolgálónk már fut, és a Windows 95/98 ügyfélgépet is úgy konfiguráltuk, hogy kommunikálhasson vele Miután újraindult a Windows ügyfélgép, jelentkezzünk be, és az Asztalon kattintsunk kettőt a Hálózatok ikonra A Samba kiszolgálónak tagként meg kell jelennie a munkacsoportban, amint a 3.14 ábrán látható 3.14 ábra A Windows Hálózatok párbeszédablaka Kettőt kattintva a kiszolgáló nevére meglátjuk a hálózaton keresztül a kiszolgálón elérhető erőforrásokat, amint a 3.15 ábra mutatja (ebben az esetben ez egy nyomtató és a test könyvtár). 3.15 ábra Megosztott erőforrások a kiszolgálón 72 | SAMBA Ha most olyan párbeszédablak jelenne meg, amelyik bekérné egy IPC$ felhasználó jelszavát, akkor a Samba nem fogadta el az ügyfélszámítógép által küldött jelszót. Ebben az esetben az ügyféloldalon létrehozott felhasználónévnek és
jelszónak pontosan egyeznie kell a Samba kiszolgálón lévő felhasználónév/jelszó kombinációval Ha az ügyfélgépen a Windows 98 vagy a Windows NT Service Pack 3, illetve ennél újabb verziója fut, akkor a jelszó bekérésének valószínűleg az az oka, hogy az ügyfélgép a jelszót titkosított formában, és nem normál szövegként küldte el. A problémán úgy segíthetünk, hogy két további konfigurációs lépést végzünk el a Samba kiszolgálón. Elsőként vegyük fel a Samba konfigurációs fájljának [global] szakaszába a következő bejegyzést: encrypt password = yes. Második lépésként keressük meg a Samba kiszolgálón a smbpasswd programot (alapértelmezés szerint ez a /usr/local/samba/bin könyvtárban van), és ennek segítségével vegyünk fel egy bejegyzést a Samba titkosított jelszóadatbázisába. Ha például egy steve nevű felhasználót akarunk felvenni a Samba titkosított jelszóadatbázisába, akkor írjuk be: smbpasswd -a
steve. Amikor első alkalommal írjuk be ezt a jelszót, a program hibaüzenetet küld, jelezve, hogy nem létezik a jelszóadatbázis. Ezt követően elkészíti az adatbázist, amit tipikusan a /usr/local/samba/private/smbpasswd fájlban tárol. Ha a párbeszédablakban nem jelenne meg a kiszolgáló, akkor indítsuk el a Windows Intézőjét, és az Eszközök menüben válasszuk a Hálózati meghajtó csatlakoztatása parancsot. Az ekkor megnyíló párbeszédablakban beírhatjuk a kiszolgáló és a megosztott test mappa nevét a Windows UNC formátumában: \kiszolgáló est, amint ezt az első fejezetben tettük. Ezzel megkíséreltük felvenni a kapcsolatot a Samba kiszolgálóval és az ideiglenes megosztásaival. Ha ez sem segítene, akkor a Hibakeresés a Sambában című 9 fejezetben keressük a megoldást a problémára. Windows NT 4.0 számítógépek beállítása A Windows NT operációs rendszert futtató számítógépeket némileg eltérő módon kell beállítani,
mint azokat a gépeket, amelyeken a Windows 95/98 rendszer fut. Ahhoz, hogy a Sambát Windows NT rendszerű géppel együtt is lehessen használni, mind a Workstation szolgáltatásra, mind a TCP/IP protokollra szükség van. Bár mindkettőt beépítve tartalmazza az NT, részletesen áttekintjük a beállításukat, mert nem biztos, hogy helyesen vannak konfigurálva. Hat alapvető lépésre van szükség: 1. Név hozzárendelése a számítógéphez 2. A Workstation szolgáltatás telepítése 3. A TCP/IP protokoll telepítése 4. A számítógép nevének és IP címének beállítása 5. A DNS és a WINS névkiszolgálók beállítása 6. A protokoll és a szolgáltatás egymáshoz kötése 3. FEJEZET WINDOWS ÜGYFELEK KONFIGURÁLÁSA | 73 Alapvető beállítások Ebben a fejezetrészben azokról a lépésekről lesz szó, amelyeket végrehajtva egy Windows NT gép együttműködhet egy Samba kiszolgálóval. Ha valakit részletesebben is érdekel egy Windows NT
számítógép hálózati felügyelete, az olvassa el Craig Hunt és Robert Bruce Thompsom Windows NT TCP/IP Network Administration című könyvét (kiadó: O’Reilly). Az alábbi lépéseket ,,Rendszergazda” néven bejelentkezve kell végrehajtani A számítógép elnevezése Első lépésként NetBIOS nevet kell adnunk a számítógépnek. A Vezérlőpulton kattintsunk kettőt a Network (Hálózat) ikonra. Ekkor megnyílik az azonos nevű párbeszédablak Ebben az első párbeszédlap a 3.16 ábrán látható Identification (Azonosítás) lap 3.16 ábra A Network párbeszédablak Identification lapja Itt egy névvel kell azonosítanunk a számítógépet (a példában az Artish nevet használtuk). A munkacsoport nevét az alapértelmezett névről változtassuk arra a névre, amelyet a Samba kiszolgáló smb.conf fájljában adtunk meg A példában a munkacsoportnak SIMPLE a neve A Windows 95/98-tól eltérően azonban a neveket itt nem szerkeszthetjük – ehelyett a két
szövegmező alatti Change (Módosítás) gombra kell kattintani. Ekkor megnyílik az Identification Changes (Azonosítók módosítása) párbeszédablak, amelyben megadható a munkacsoport és a számítógép neve, amint ez a 3.17 ábrán látható Vigyázzunk: a számítógép nevét később, a TCP/IP konfigurálásánál is meg kell adnunk, ezért jegyezzük fel vagy meg az itt beírt nevet. A most megadott név a számítógép NetBIOS neve A TCP/IP gazdaneveként ettől ugyan eltérő nevet is használhatunk, de ez általában nem célszerű Ne aggódjunk amiatt, hogy a Windows NT kikényszeríti a nagybetűk használatát: a rendszer eléggé intelligens ahhoz, hogy megfelelően értelmezze a neveket, amikor létrehozza a kapcsolatot a hálózattal. 74 | SAMBA 3.17 ábra Az azonosító módosítása A TCP/IP protokoll telepítése Következő lépésként válasszuk a Hálózat párbeszédablakban a Protocols (Protokollok) lapot, és ellenőrizzük, telepítve van-e a
TCP/IP protokoll (lásd a 3.18 ábrát) 3.18 ábra A Protocols párbeszédlap 3. FEJEZET WINDOWS ÜGYFELEK KONFIGURÁLÁSA | 75 Ha nincs telepítve a protokoll, akkor telepítenünk kell. Ehhez kattintsunk az Add (Hozzáadás) gombra, hogy megnyíljon a 319 ábrán látható Select Network Protocol (Hálózati protokoll kiválasztása) párbeszédablak. A Windows 95/98-tól eltérően azonnal meg fog jelenni a TCP/IP protokoll a felsorolt protokollok között. 3.19 ábra A Select Network Protokol párbeszédablak 3.20 ábra A Network párbeszédablak Services lapja 76 | SAMBA Jelöljük ki a TCP/IP protokollt, és zárjuk be a párbeszédlapot. Amennyiben lehetséges, csak ezt a protokollt telepítsük. Az esetek többségében nem kell telepítenünk a NetBEUI protokollt – ha így tennénk, a számítógép mindkét protokollon keresné a megosztásokat, pedig csak az egyiket kell használnia.* A Workstation szolgáltatás telepítése Miután telepítettük a
TCP/IP protokollt, válasszuk a Network párbeszédablak Services (Szolgáltatások) lapját, és jelöljük ki a Workstation (Munkaállomás) tételt (lásd a 3.20 ábrát). Ez a szolgáltatás egyébként a Microsoft hálózati ügyfélszolgáltatása, ami lehetővé teszi, hogy a számítógép hozzáférjen az SMB szolgáltatásokhoz. A Workstation szolgáltatást kötelezően telepíteni kell – egyébként ez mind a Windows NT Workstation 4.0, mind a Server 4.0 telepítésekor alapértelmezés szerint meg is történik Ha mégsem lenne a gépünkön, akkor pontosan úgy kell ezt telepíteni, mint a TCP/IP protokollt. Ebben az esetben kattintsunk az Add (Hozzáadás) gombra, és jelöljük ki a Workstation Service tételt a 3.21 ábrán látható módon 3.21 ábra A Select Network Services párbeszédablak A TCP/IP konfigurálása Miután telepítettük a Workstation szolgáltatást, térjünk vissza a Protocols párbeszédlaphoz, és az ablakban jelöljük ki a TCP/IP Protocol
tételt. Ezt követően kattintsunk a párbeszédlap alján lévő Properties (Tulajdonságok) gombra Ekkor megnyílik a Microsoft TCP/IP Protocol párbeszédablak. Ez öt párbeszédlapból áll, amelyek közül azonban * Amíg a számítógép a használaton kívüli protokollon keresztül keresgél, nem jut ideje a hasznos protokollra. Ez az eredménytelen keresgélés csökkenti a teljesítményt, másrészt érthetetlen késedelmeket okoz 3. FEJEZET WINDOWS ÜGYFELEK KONFIGURÁLÁSA | 77 (a Windows 95/98-hoz hasonlóan) csak a következő három lapon kell beállításokat végeznünk: • IP cím; • DNS; • WINS cím. Az IP cím párbeszédlap Az IP cím párbeszédlap a 3.22 ábrán látható 3.22 ábra A Microsoft TCP/IP Properties párbeszédlap IP Address lapja Kapcsoljuk be a Specify an IP address (Adjon meg egy IP címet) választógombot, és a rendelkezésre álló mezőkbe írjuk be a számítógépnek és az alhálózati maszknak a megfelelő hálózati
kártyához (Ethernet kártya) tartozó címét. Magunk, vagy a rendszergazda már kiválaszthatott egy ügyfélcímet ugyanabban az alhálózatban (LAN), amelyikben a Samba kiszolgáló is van. Ha például a kiszolgáló címe 192168220100, az alhálózati maszk címe pedig 255.2552550, akkor az NT munkaállomás címeként a 192168220105 címet (amennyiben ez nem foglalt), az alhálózati maszk címeként pedig a kiszolgáló maszkjáét használhatjuk. Ha a hálózatban van DHCP kiszolgáló, akkor az Obtain an IP address (Az IP címet a DHCP kiszolgáló osztja ki) választógombot kapcsoljuk be. 78 | SAMBA Ha az olvasó nem tudja, hogy milyen IP címet használjon, és nincs kihez segítségért fordulnia, használja a 192.168xx címek valamelyikét, mert az Internic ezt a címtartományt kifejezetten a helyi hálózatok számára foglalta le. Ha el tudja érni a rendszergazdát, akkor tőle kérjen olyan IP címet, amelyet az adott hálózatban használhat. Az átjáró
(gateway) mezőbe az útvonalválasztó (router) számítógép neve írható be. Útvonalválasztóra akkor van szükség, ha egy számítógépnek több hálózattal is kapcsolatot kell tartania. Ha van ilyen számítógép a hálózatban, akkor ide annak az IP címét kell beírnunk A DNS párbeszédlap A következő lépésben a 3.23 ábrán látható DNS párbeszédlapon kell elvégeznünk a szükséges beállításokat 3.23 ábra A DNS párbeszédlap 3. FEJEZET WINDOWS ÜGYFELEK KONFIGURÁLÁSA | 79 A DNS (Domain Name System) dolga az, hogy az emberek számára értelmezhető számítógépneveket, mint például az atrish.examplecom nevet a neki megfelelő IP címekké – mint például 192.16823610 – alakítsa át NT számítógépen ez kétféle módon végezhető el. Az egyik módja az, hogy megadjuk azt a DNS kiszolgálót, amelyik ezt az átalakítást elvégzi. A másik lehetőség az, hogy a munkaállomásunkhoz elkészítünk egy helyi listát azokról a név-
és címpárokról, amelyeket a hálózatban használhatunk. Azon helyi hálózatok esetében, amelyek nem kapcsolódnak az internethez, a lehetséges gazdagépek száma általában kicsi és jól ismert. Ezeket a gépeket könnyen számon tarthatjuk egy helyi fájlban. Ezzel szemben azok a hálózatok, amelyek csatlakoznak az internetre, DNS kiszolgálót használnak, mert lehetetlen előre kitalálni, hogy mely címeket szeretnénk elérni a világhálón. Ha kétségeink vannak afelől, hogy kell-e használnunk egy DNS kiszolgálót, vagy mi lehet ennek a címe, akkor nézzük meg a Samba kiszolgálón található /etc/resolv.conf fájlt: minden olyan gépen, amelyik DNS kiszolgálót használ, létezik ez a fájl. A fájlban ehhez hasonló bejegyzések lehetnek: #resolv.conf domain example.com nameserver 127.001 nameserver 192.16823620 Ebben a példában az elsőként felsorolt névkiszolgálónak (nameserver) 127.001 a címe, ami azt jelenti, hogy maga a Samba kiszolgáló is DNS
kiszolgáló az adott helyi hálózatban.* Ebben az esetben a DNS párbeszédlap megfelelő mezőjébe e névkiszolgáló IP címét (ne a 127.001 localhost címét) írjuk be Ehelyett a nameserver kezdetű sorokban lévő többi cím is használható. Próbáljunk a hálózatunkban már létező címek közül választani Az /etc/resolv.conf fájlban felsorolt bármelyik névkiszolgáló használható, de jobb eredményt érhetünk el egy közeli kiszolgálóval. Végül írjuk be még egyszer a számítógépünk nevét. Ügyeljünk arra, hogy pontosan ugyanazt a nevet írjuk be, mint amelyiket a Network párbeszédablak Identification lapján megadtunk. Írjuk be annak a DNS tartománynak a nevét is, amelyikhez a számítógépünk tartozik. Ha például a munkaállomásunk tartományneve examplecom, akkor ezt a nevet írjuk be. A többi beállítási lehetőséget nyugodtan figyelmen kívül hagyhatjuk A WINS cím párbeszédlap Ha nem használunk DNS kiszolgálót, akkor
valamilyen más módon kell gondoskodnunk arról, hogy a NetBIOS nevek IP címekké alakuljanak át és fordítva. Itt az javasolható, hogy konfiguráljuk mind a DNS, mind a WINS kiszolgálót. A Windows NT előnyben részesíti a WINS kiszolgálót, ami viszont a maga részéről visszanyúl a DNS kiszolgálóhoz, ha nem tudná feloldani a gépi címeket. A WINS Address párbeszédlap a 324 ábrán látható Ha van a hálózatban WINS kiszolgáló, akkor annak a címét írjuk be a Primary WINS Server mezőbe. Ha a Samba kiszolgáló van WINS kiszolgálóként konfigurálva (vagyis a Samba kiszolgálón az smb.conf fájlba beírtuk a wins service = yes bejegyzést), akkor a * A 127.001 cím az ún localhost cím, és mindig önmagát jelenti Ha például egy Unix kiszolgálón a parancssorba beírjuk a ping 127.001 parancsot, akkor erre mindig kapunk választ, hiszen ezzel magát a gazdagépet szólítjuk meg. 80 | SAMBA 3.24 ábra A WINS Address párbeszédlap Samba
kiszolgáló IP címét írjuk be ide. Más esetben a hálózatban lévő más WINS kiszolgáló címét adjuk meg Feltűnhetett, hogy egy lenyitható listát is tartalmaz a párbeszédlap: ebben a listában azt az Ethernet kártyát kell választanunk, amelyiken a TCP/IP fut, hogy a WINS a megfelelő hálózaton végezze el a névfeloldást. Ha hálózati kártya és modem is van a számítógépünkben, akkor győződjünk meg arról, hogy itt a hálózati kártyát választottuk Végül jelöljük be az ,,Enable DNS” (DNS engedélyezése Windows feloldáshoz) négyzetet, hogy a WINS a DNS-t használja, ha nem talál egy nevet. A többi beállítási lehetőséget nyugodtan figyelmen kívül hagyhatjuk. Hostfájlok Ha nincs sem DNS, sem WINS kiszolgálónk, és nem akarunk broadcast névfeloldást használni, akkor a gép rendelkezésére kell bocsátanunk egy IP címeket és hostneveket tartalmazó táblát a Unix szabványos /etc/hosts formátumában. Ez az eljárás nem
javasolható, mert egy ilyen fájl karbantartása nehézségeket jelenthet bármely dinamikus hálózaton, de a lényeget elmagyarázzuk. Ha a Windows NT a C: könyvtárba van telepítve, akkor a hostfájl a C:WINNTSystem32driversetcHOSTS könyvtárban van Egy hostfájl az alábbiakat tartalmazhatja: 3. FEJEZET WINDOWS ÜGYFELEK KONFIGURÁLÁSA 127.001 192.1682361 192.1682362 192.1682363 192.1682364 192.1682365 192.1682366 192.1682367 localhost escrime riposte wizzin touche gurgi jessiac skyline | 81 escrime.examplecom riposte.examplecom wizzin.examplecom touche.examplecom gurgi.examplecom jessiac.examplecom skyline.examplecom Ezt a hostfájlt közvetlenül átmásolhatjuk bármelyik Unix gép /etc/hosts/ könyvtárából – a formátumai azonosak. Ekkor ennek a fájlnak ugyanaz a feladata, mint a Unix kiszolgálón lévő hostfájlnak. Ismét hangsúlyozzuk, hogy Windows rendszerben csak a legvégső esetben használjunk hostfájlokat a névfeloldáshoz Kötések A kötés
ebben a szövegkörnyezetben azt jelenti, hogy a TCP/IP protokoll az ügyfélszámítógépet az Ethernet kártyán keresztül megfelelően kapcsolja hozzá a hálózat szolgáltatásaihoz. Ha visszatérünk a Network párbeszédablakhoz, és a Show Bindings for (Kötések mutatása) listában az ,,all service” (minden szolgáltatás) tételt választjuk, majd a fastruktúrában a + (plusz) gombokra kattintunk, akkor a 3.25 ábrán látható szerkezetet látjuk Ez azt jelenti, hogy a Workstation, a Server és a NetBIOS szolgáltatások a WINS ügyfélhez kapcsolódnak. A Microsoft TCP/IP-nél ez a kötések helyes beállítása 3.25 ábra A szolgáltatások kötése 82 | SAMBA Kapcsolódás a Samba kiszolgálóhoz A Network párbeszédablak többi lapján meghagyhatjuk az alapértelmezett beállításokat. Az OK gombra kattintva fejezzük be a konfigurálást. Miután betöltődtek a szükséges fájlok (ha egyáltalán voltak ilyenek), a számítógépet újra kell
indítanunk, hogy érvényre jussanak az új beállítások Most jön a nagy pillanat. A Samba kiszolgálónk már fut, és a Windows NT ügyfélgépet is úgy konfiguráltuk, hogy kommunikálhasson vele. Miután újraindult a Windows ügyfélgép, jelentkezzünk be, és az Asztalon kattintsunk kettőt a Network Neighborhood (Hálózatok) ikonra A Samba kiszolgálónak tagként meg kell jelennie a munkacsoportban, amint a 3.26 ábrán látható 3.26 ábra A Windows NT Network Neighborhood ablaka Kettőt kattintva a kiszolgáló nevére meglátjuk a hálózaton keresztül a kiszolgálón elérhető erőforrásokat, amint a 3.27 ábra mutatja (ebben az esetben ez egy nyomtató és a test könyvtár). További tudnivalókért olvassuk át a fejezet ,,A Samba kiszolgáló elérése” című előző részét. 3.27 ábra Megosztott erőforrások a kiszolgálón 3. FEJEZET WINDOWS ÜGYFELEK KONFIGURÁLÁSA | 83 Ha most olyan párbeszédablak jelenne meg, amelyik bekérné egy IPC$
felhasználó jelszavát, akkor a Samba nem fogadta el az ügyfélszámítógép által küldött jelszót. Ebben az esetben az ügyféloldalon létrehozott felhasználónévnek és jelszónak pontosan egyeznie kell a Samba kiszolgálón lévő felhasználónév/jelszó kombinációval Ha az ügyfélgépen a Windows 98 vagy a Windows NT Service Pack 3, illetve ennél újabb verziója fut, akkor a jelszó bekérésének valószínűleg az az oka, hogy az ügyfélgép a jelszót titkosított formában, és nem normál szövegként küldte el. A problémán úgy segíthetünk, hogy két további konfigurációs lépést végzünk el a Samba kiszolgálón. Elsőként vegyük fel a Samba konfigurációs fájljának [global] szakaszába a következő bejegyzést: encrypt password = yes. Második lépésként keressük meg a Samba kiszolgálón a smbpasswd programot (alapértelmezés szerint ez a /usr/local/samba/bin könyvtárban van), és ennek segítségével vegyünk fel egy bejegyzést a
Samba titkosított jelszóadatbázisába. Ha például egy steve nevű felhasználót akarunk felvenni a Samba titkosított jelszóadatbázisába, akkor írjuk be: smbpasswd -a steve. Amikor első alkalommal írjuk be ezt a jelszót, a program hibaüzenetet küld, jelezve, hogy nem létezik a jelszóadatbázis. Ezt követően elkészíti az adatbázist, amit tipikusan a /usr/local/samba/private/smbpasswd fájlban tárol. Ha a párbeszédablakban nem jelenne meg a kiszolgáló, akkor indítsuk el a Windows NT Intézőjét, és az Eszközök menüben válasszuk a Hálózati meghajtó csatlakoztatása parancsot. Az ekkor megnyíló párbeszédablakban beírhatjuk a kiszolgáló és a megosztott test mappa nevét a Windows UNC formátumában: \kiszolgáló est. Ha ez nem segítene, akkor a Hibakeresés a Sambában című 9. fejezetben keressük a megoldást a problémára Ha minden rendben ment, akkor gratulálhatunk magunknak! Próbáljunk írni a kiszolgálóra és küldjünk adatokat a
hálózati nyomtatóra. Meglepődve tapasztalhatjuk, hogy milyen simán működik minden. Most, hogy konfiguráltuk mind a Samba kiszolgálót, mind az ügyfeleit, rátérhetünk arra, hogy miként működik a Samba, és hogyan konfigurálhatjuk a kedvünk szerint. Röviden az SMB/CIFS protokollról A fejezetet az SMB/CIFS protokollról szóló rövid ismertetővel zárjuk le. Az SMB/CIFS az a protokoll, amelyet a Windows 95/98 és NT számítógépek az egymás közötti és a Samba kiszolgálóval való kommunikációhoz használnak. Felső szinten az SMB protokollkészlet meglehetősen egyszerű. Olyan fájl- és nyomtatókezelő parancsokat tartalmaz, amelyeket egy helyi lemezre vagy nyomtatóra is kiadhatunk, így például: • fájl megnyitása és bezárása; • fájlok és könyvtárak létrehozása és törlése; • fájlok írása és olvasása; • fájlok keresése; • nyomtatásra váró fájlok sorba állítása vagy törlése a várakozási sorból. 84 | SAMBA
Az előző műveletek mindegyike SMB üzenetté kódolható, és kiküldhető a kiszolgálóra, illetve a kiszolgálóról. Az SMB név az adatformátumából származik: a formátum a szabványos DOS rendszerhívások adatstruktúráinak felel meg, amelyeknek Server Message Blocks volt a nevük, és amelyek úgy alakították át az adatokat, hogy egy hálózaton keresztül más gépekre is elküldhetők legyenek. Az SMB formátum Richard Sharpe, a Samba munkacsoport tagjának meghatározása szerint az SMB nem más, mint egy ,,kérés-válasz protokoll”. A protokoll valóban úgy működik, hogy egy ügyfél elküld egy SMB kérést egy kiszolgálóra, amire a kiszolgáló egy SMB választ küld vissza. Ritkán fordul csak elő, hogy a kiszolgáló olyan kérést küld, ami nem egy kérésre lenne a válasz. Az SMB üzenetek nem olyan bonyolultak, mint azt gondolnánk. Vizsgáljuk meg közelebbről egy ilyen kérés belső szerkezetét Az üzenet két részre bontható: a
rögzített hoszszúságú fejlécre (header) és a parancssztringre, amelynek a mérete az üzenet tartalmától függően tág keretek között változhat. Az SMB fejlécének formátuma Az SMB fejlécének formátumát a 3.1 táblázat szemlélteti Az SMB parancsoknak nem kell használniuk az SMB fejlécben lévő összes mezőt. Ha például egy ügyfél első alkalommal kísérli meg a kapcsolatfelvételt egy kiszolgálóval, akkor még nem rendelkezhet tree identifier (TID) értékkel – ezt csak a sikeres kapcsolódást követően kapja meg –, ezért a fejléc ezen mezőjébe a nulla értékű TID (0xFFFF) kerül. Más, ugyancsak használaton kívüli mezőket 0 értékek tölthetnek ki. Az SMB fejléc mezőit a 3.1 táblázat sorolja fel 3.1 táblázat Az SMB fejléc mezői Mező Méret bájtokban Leírás 0xFF ’SMB’ COM RCLS REH ERR REB RES TID 1 1 1 1 2 1 14 2 PID UID MID 2 2 2 Protokoll azonosító Parancskód 0x00 és 0xFF között Hibaosztály Fenntartott
Hibakód Fenntartott Fenntartott Tree identifier; az ügyfél által használt erőforrás egyedi ID-je A hívó processz ID-je Felhasználó azonosítója Többszörös azonosító; processzen belüli kérések átirányítására szolgál. 3. FEJEZET WINDOWS ÜGYFELEK KONFIGURÁLÁSA | 85 Az SMB parancsok formátuma Közvetlenül a fejléc után változó számú bájtok állnak, amelyek az SMB parancsot vagy választ alkotják. Minden egyes parancsnak, mint például az Open File (COM mezőazonosítója: SMBOpen) vagy a Get Print Queue (SMBsplretq) parancsnak saját paraméterkészlete és adatai vannak Az SMB fejléc mezőihez hasonlóan – az adott parancstól függően – a parancs egyes mezői is üresek lehetnek Így például a Get Server Attributes (SMBdskattr) parancs a WCT és a BCC mezőket nullával tölti fel. A parancsszegmens mezőit a 3.2 táblázat sorolja fel 3.2 táblázat SMB parancs tartalma Mező Méret bájtokban Leírás WCT VWV 1 Változó BCC
DATA 2 Változó Szavak száma Paraméter-szószámláló (a méretet a WCT határozza meg) Paraméter-bájtszámláló Adatok (a méretet a BCC határozza meg) Ne aggódjunk, ha nem értenénk az egyes mezők jelentését; a Samba rendszergazdai használatához erre nem lesz szükség. Ugyanakkor ezek az ismeretek jól jöhetnek akkor, ha meg kell fejtenünk a rendszer hibaüzeneteit. A fejezet későbbi részében, a tcpdump program módosított változatát használva bemutatunk néhány olyan SMB üzenetet, amelyet gyakran küldenek ki az ügyfelek és a kiszolgálók. (Ha valaki grafikus felületet használva mélyebben el akar merülni az SMB üzenetek világában, próbálja ki az ,,ethereal” programot, amely GTK függvénytárakat használ; erről az eszközről további információk a Samba honlapján találhatók.) Aki többet szeretne tudni az SMB protokoll egyes parancsairól, olvassa el az SMB/CIFS dokumentációját az ftp://ftp.microsoftcom/developr/drg/CIFS/
FTP-helyen. SMB változatok Az SMB protokoll a bevezetését követően több alkalommal is újabb parancsokkal bővült ki. Mindegyik új változat kompatíbilis az előzővel Ez lehetővé teszi, hogy egy helyi hálózatban egyidejűleg több olyan ügyfél és kiszolgáló is működjön, amelyek az SMB különböző változatait használják A 3.3 táblázat az SMB protokoll főbb változatait sorolja fel Az SMB egyes ,,dialektusainak” is számos saját alváltozatuk van Ezek a főbb operációs rendszerek egyes kiadásait támogató parancsokkal egészítik ki az alap parancskészletet. Az ügyfelek és a kiszolgálók az ID sztring alapján állapítják meg, hogy a protokoll melyik szintjét használják az egymás közötti kommunikációban. 86 | SAMBA 3.3 táblázat Az SMB protokoll nyelvjárásai Protokoll neve ID sztring Operációs rendszer Core Core Plus LAN Manager 1.0 LAN Manager 2.0 LAN Manager 2.1 NT LAN Manager 1.0 Samba’s NT LM 0.12 Common Internet
File System PC NETWORK PROGRAM 1.0 MICROSOFT NETWORKS 1.03 LANMAN1.0 LM1.2X002 LANMAN2.1 NT LM 0.12 Samba CIFS 1.0 Windows NT 4.0 Samba Windows 2000 A Samba az NT LAN Manager 1.0 változathoz az NT LM 012 specifikációt valósítja meg Ez visszafelé kompatíbilis az összes többi SMB változattal. A CIFS lényegében nem más, mint a LAN Manager 0.12 néhány specifikus kiegészítéssel SMB ügyfelek és kiszolgálók Amint korábban említettük, az SMB ügyfél/kiszolgáló protokollt jelent. Teljesen leegyszerűsítve ez azt jelenti, hogy az ügyfél elküld egy kérést a kiszolgálóra, a kiszolgáló pedig a kérésre reagálva elküldi a választ. Ugyanakkor ez a szereposztás gyakran meg is fordulhat, akár ugyanazon az SMB munkameneten belül is. Képzeljünk el például két Windows 95/98 számítógépet a 3.28 ábrán látható elrendezésben A WIZZIN nevű számítógép egy nyomtatót oszt meg a hálózaton, míg az ESCRIME nevű számítógép egy
lemezkönyvtárat. Az elrendezésben a WIZZINE gép az ügyfél szerepét játssza, amikor hozzáfér az ESCRIME gép hálózati meghajtójához, ugyanakkor ez a szereposztás megfordul, és kiszolgáló lesz belőle, amikor az ESCRIME számítógéptől érkezik hozzá egy nyomtatási kérés. 3.28 ábra Két olyan számítógép, amelyek mindegyikének van megosztott erőforrása Mindezeket a lehetőségeket figyelembe véve a Samba a következő terminológiát használja: • Kiszolgáló az a számítógép, amelynek megosztható erőforrásai vannak. • Ügyfél az a számítógép, amely használni kívánja ezeket az erőforrásokat. • Egy kiszolgáló bármikor ügyfél is lehet (egy másik számítógép erőforrásáé). 3. FEJEZET WINDOWS ÜGYFELEK KONFIGURÁLÁSA | 87 Figyeljük meg, hogy az előző meghatározások semmilyen formában sem térnek ki arra, hogy milyen erőforrások tehetnek kiszolgálóvá egy számítógépet, vagyis hogy mekkora a
lemezterülete vagy milyen gyors a processzora. Egy régi, 486-os számítógépből, amelyhez egy nyomtató kapcsolódik, ugyanúgy lehet kiszolgáló, mint egy 10 GB-os merevlemezzel felszerelt UltraSparc munkaállomásból. A Microsoft Windows termékei az SMB ügyfelet és az SMB kiszolgálót is beépítve tartalmazzák az operációs rendszerben. A Windows NT Server 40 a Windows for Workgroups rendszerhez képest újabb SMB protokollt használ, és javított hálózati biztonságot kínál, amint erről majd a 6. fejezetben olvashatunk Emellett nagy számban kaphatók a kereskedelemben SMB kiszolgálói termékek olyan nagy cégektől, mint a Sun, a Compaq, az SCO, a HewlettPackard, a Syntax és az IBM. Sajnos ügyfél oldalon jóval kisebb a választék, ami jobbára csak a Digital Equipment cég Pathworks programjára és természetesen a Sambára korlátozódik. Egy egyszerű SMB kapcsolat Mielőtt lezárnánk ezt a fejezetet, tekintsünk át röviden egy egyszerű SMB
kapcsolatot. Magának a kapcsolatnak a felépülése és lefolyása meglehetősen műszaki jellegű, aminek az ismerete nem nélkülözhetetlen egy Samba rendszergazda számára – ezért akár ki is hagyható. A célunk jórészt csak az, hogy bemutassuk, miként ,,tárgyal” egy protokoll egy másik protokollal abból a célból, hogy a hálózaton keresztül létrejöjjön a kapcsolat két számítógép között. Az ügyfél és a kiszolgáló számítógépnek négy lépést kell megtennie annak érdekében, hogy létrejöjjön az ügyfél és a megosztott erőforrás közötti kapcsolat: 1. Virtuális kapcsolat létesítése 2. A kommunikációhoz használandó protokollváltozat egyeztetése 3. A munkamenet (session) paramétereinek beállítása 4. Fa kapcsolat létrehozása az erőforráshoz Ezeket a lépéseket egy korábban már említett, hasznos eszköz segítségével vizsgáljuk meg: ez a módosított tcpdump program, amely a Samba webhelyéről tölthető le. Ez a
program a samba.org webhelyen, a samba/ftp/tcpdump-smb könyvtárból tölthető le; a könyv írásának idején a 3.4-5 volt a legújabb verzió Ugyanúgy használhatjuk ezt a programot, mint a szabványos tcpdump alkalmazást, de vegyük fel hozzá az -s 1500 kapcsolót, hogy ne csak az első néhány bájtot, hanem a teljes csomagot kapjuk meg. Virtuális kapcsolat létesítése Amikor egy felhasználó első alkalommal kísérli meg a hozzáférést egy hálózati lemezmeghajtóhoz, vagy először küld egy nyomtatási feladatot egy távoli nyomtatóra, a NetBIOS gondoskodik session szinten a kapcsolat létrehozásáról. Az eredmény egy, az ügyfelet és a kiszolgálót összekötő kétirányú virtuális csatorna. A valóságban mindössze két üzenetre van szüksége az ügyfélnek és a kiszolgálónak ahhoz, hogy létrejöjjön ez a kapcsolat. Ezt a tcpdump programmal befogott alábbi, session szintű kérés és válasz szemlélteti: 88 | SAMBA >>> NBT
Packet NBT Session Request Flags=0x81000044 Destination=ESCRIME Source=WIZZIN NameType=0x20 (Server) NameType=0x00 (Workstation) >>> NBT Packet NBT Session Granted Flags=0x82000000 A protokollváltozat egyeztetése Ebben a fázisban már megnyílt a csatorna az ügyfél és a kiszolgáló között. A következő lépésben az ügyfél elküld egy üzenetet a kiszolgálóra, hogy megbeszéljék a használandó SMB protokollt. Amint korábban említettük, az ügyfél a tree identifier mezőjét (TID) nullára állítja, mivel még nem tudja, hogy milyen TID-t kell használnia A tree identifier az a szám, amelyik a kiszolgáló egyik megosztott erőforrásához tartozó kapcsolatot azonosítja. Az üzenetben lévő parancs az SMBnegprot, amely kéri a teljes munkamenet során használandó protokollváltozat egyeztetését. Figyeljük meg, hogy az ügyfél az általa használható változatok teljes listáját elküldi, míg fordítva nem ez történik A kiszolgáló az
SMBnegprot kérésre az ügyfél által felkínált változatok listájának egyik indexével (sorszámával) válaszol. Az index 0-tól indul, és 0xFF az értéke, ha a protokollváltozatok egyikét sem tudja elfogadni A példánknál maradva a kiszolgáló az 5-ös értéket küldi vissza, amivel azt jelzi, hogy a munkamenet további részében az NT LM 0.12 dialektust kívánja használni >>> NBT Packet NBT Session Packet Flags=0x0 Length=154 SMB PACKET: SMBnegprot (REQUEST) SMB Command = 0x72 Error class = 0x0 Error code = 0 Flags1 = 0x0 Flags2 = 0x0 Tree ID = 0 Proc ID = 5371 UID = 0 MID = 385 Word Count = 0 Dialect=PC NETWORK PROGRAM 1.0 Dialect=MICROSOFT NETWORKS 3.0 Dialect=DOS LM1.2X002 Dialect=DOS LANMAN2.1 3. FEJEZET WINDOWS ÜGYFELEK KONFIGURÁLÁSA | 89 Dialect=Windows for Workgroups 3.1a Dialect=NT LM 0.12 >>> NBT Packet NBT Session Packet Flags=0x0 Length=69 SMB PACKET: SMBnegprot (REPLY) SMB Command = 0x72 Error class = 0x0 Error code = 0
Flags1 = 0x0 Flags2 = 0x1 Tree ID = 0 Proc ID = 5371 UID = 0 MID = 385 Word Count = 02 [000] 05 00 A session és a bejelentkezés paramétereinek beállítása Következő lépésként a session és a bejelentkezés paramétereit kell elküldeni. Ebbe beleértendő a fiók neve és jelszava (ha van ilyen), a munkacsoport neve, az átvihető adatcsomag maximális mérete, valamint azoknak a még teljesítetlen kéréseknek a száma, amelyek egyidejűleg várakozhatnak a sorukra A következő példában a bemutatott Session Setup parancs a ,,hátán” hordoz egy másik SMB parancsot. A parancs neve után álló X betű jelzi ezt, és a második parancs hexadecimális kódja a Com2 mezőben van megadva Esetünkben ez a parancs a 0x75, ami a Tree Connect and X parancs. Az SMBtconX üzenet az smb buf pufferben keresi az erőforrás nevét (ez a példában látható kérés legutolsó mezője). A példában az smb buf puffer a \ESCRIMEPUBLIC karakterláncot tartalmazza, ami az ESCRIME
csomópont megosztott könyvtárának a teljes neve az elérési útjával együtt. Az ehhez hasonló ,,and X” parancsok felgyorsítják az átvitelt, mert a kiszolgálónak nem kell arra várnia, hogy az ügyfél újabb kérést küldjön. Figyeljük meg, hogy a TID értéke továbbra is nulla. A kiszolgáló azt követően küldi el a TID-t, miután létrejött a munkamenet és a kapcsolat a kért erőforráshoz. Azt is vegyük észre, hogy a jelszó normál szövegként kerül elküldésre. A későbbiekben majd titkosítani fogjuk a jelszót. >>> NBT Packet NBT Session Packet Flags=0x0 Length=139 90 | SAMBA SMB PACKET: SMBsesssetupX (REQUEST) SMB Command = 0x73 Error class = 0x0 Error code = 0 Flags1 = 0x10 Flags2 = 0x0 Tree ID = 0 Proc ID = 5371 UID = 1 MID = 385 Word Count = 13 Com2=0x75 Res1=0x0 Off2=106 MaxBuffer=2920 MaxMpx=2 VcNumber=0 SessionKey=0x1FF2 CaseInsensitivePasswordLength=1 CaseSensitivePasswordLength=1 Res=0x0 Capabilities=0x1
Pass1&Pass2&Account&Domain&OS&LanMan= KRISTIN PARKSTR Windows 4.0 Windows 40 PassLen=2 Passwd&Path&Device= smb bcc=22 smb buf[]=\ESCRIMEPUBLIC Kapcsolat létrehozása az erőforráshoz Utolsó lépésként a kiszolgáló visszaküld egy TID-t az ügyfélnek, jelezve, hogy jogosult a hozzáférésre, és az erőforrás készen áll. Emellett a ServiceType mezőben egy ,,A”-t küld vissza, amivel azt jelzi, hogy a szolgáltatás típusa fájlkiszolgálás. A használható szolgáltatástípusok: • ,,A” lemezhez vagy fájlhoz; • ,,LPT1” a nyomtatáshoz; • ,,COMM” a modemhez vagy a nyomtatóhoz való közvetlen kapcsolathoz; • ,,IPC” named pipe-hoz. A kivitel: >>> NBT Packet NBT Session Packet Flags=0x0 Length=78 3. FEJEZET WINDOWS ÜGYFELEK KONFIGURÁLÁSA | 91 SMB PACKET: SMBsesssetupX (REPLY) SMB Command = 0x73 Error class = 0x0 Error code = 0 Flags1 = 0x80 Flags2 = 0x1 Tree ID = 121 Proc ID = 5371 UID = 1 MID = 385 Word
Count = 3 Com2=0x75 Off2=68 Action=0x1 [000] Unix Samba 1.91 [010] PARKSTR SMB PACKET: SMBtconX (REPLY) (CHAINED) smbvwv[]= Com2=0xFF Off2=78 smbbuf[]= ServiceType=A: Most, hogy az ügyfél megkapta a TID-jét, bármilyen olyan parancsot küldhet, amilyent a helyi merevlemezére is kiadhat. Fájlokat nyithat meg, olvashatja azokat és írhat beléjük, törölheti őket, újakat hozhat létre, kereshet fájlokat stb. Lemezmegosztások Az előző három fejezetben megtudtuk, hogyan telepíthetjük a SAMBA programot egy Unix kiszolgálóra, és miként állíthatunk be Windows ügyfélgépeket úgy, hogy egy egyszerű lemezmegosztást használhassanak. Ebben a fejezetben arról olvashatunk, miként tehetjük hatékonyabbá a Sambát a hálózatunkban. A Samba két, smbd és nmbd démonjának működését egy egyszerű ASCII fájl, az smb.conf szabályozza Ebben a fájlban 200-nál is több különböző beállítás választható, amelyek meghatározzák, miként reagáljon a
Samba a legkülönbözőbb hálózati eseményekre, többek között például egy engedély vagy egy titkosított kapcsolat létrehozása iránti kérelemre. A következő öt fejezetben ezzel a fájllal és a lehetséges beállításaival ismerkedünk meg. E beállítások némelyikét sűrűn fogjuk használni, és gyakran módosítjuk is, míg másokra esetleg sohasem lesz szükségünk – attól függően, hogy a Samba mely képességeit akarjuk felkínálni az ügyfelei számára. Ez a fejezet a Samba konfigurációs fájl felépítését mutatja be, valamint azt, hogy a különböző beállításai révén miként hozhatunk létre és módosíthatunk lemezmegosztásokat. Az utána következő fejezetek a tallózással, a felhasználók konfigurálásával, a biztonsággal, a tartományokkal, a nyomtatókkal és számos egyéb lehetőséggel foglalkoznak, amelyeket megvalósíthatunk a Samba kiszolgálóhoz kapcsolódó hálózaton. A Samba konfigurációs fájlja Az
alábbiakban egy példát látunk a Samba konfigurációs fájljára. Aki dolgozott már Windows .INI fájlon, annak ismerős lehet az smbconf fájl szerkezete: [global] log level = 1 max log size = 1000 socket options = TCP NODELAY IPTOS LOWDELAY guest ok = no [homes] browseable = no map archive = yes [printers] path = /usr/tmp guest ok = yes 4. FEJEZET LEMEZMEGOSZTÁSOK | 93 printable = yes min print space = 2000 [test] browseable = yes read only = yes guest ok = yes path = /export/samba/test Lehet, hogy most még nem értjük a fájl tartalmát, de ha nagyon sietünk, akkor ezt egy az egyben, nyugodtan használhatjuk. (Ha nem sietős a dolgunk, akkor rövidesen azt is látni fogjuk, miként készíthetünk el egy ilyen fájlt a ,,semmiből”.) Dióhéjban összefoglalva a fenti konfigurációs fájl elkészít egy naplófájlt, aminek a mérete nem haladhatja meg az 1 MB-ot, optimalizálja a TCP/IP kapcsolatokat a Samba kiszolgáló és az SMB ügyfelei között, továbbá
lehetővé teszi, hogy a Samba lemezmegosztást hozzon létre mindazon felhasználók számára, akiknek szabványos Unix fiókjuk van a kiszolgálón. Ezen túlmenően a kiszolgálón regisztrált összes nyomtató nyilvánosan elérhető lesz, akárcsak az a csak olvasható megosztás, ami az /export/samba/test könyvtárban található. A fájl utolsó része hasonló ahhoz a lemezmegosztáshoz, amit a Samba teszteléséhez használtunk a 2. fejezetben A konfigurációs fájl felépítése Tekintsük át most ezt a konfigurációs fájlt eggyel magasabb szintről: [global] . [homes] . [printers] . [test] . A szögletes zárójelek között álló nevek az smb.conf fájl egyes szakaszait azonosítják A szakasznevek azokat a megosztásokat (vagy más néven szolgáltatásokat) nevezik meg, amelyekre vonatkoznak. Így például a [test] és a [homes] szakasz egy-egy lemezmegosztást jelent, és a Samba kiszolgáló adott könyvtárára vonatkozó beállításokat tartalmazza A
[printers] szakasz a kiszolgálóhoz csatlakozó nyomtatókra vonatkozó beállításokat tartalmazza Az smbconf fájl összes szakasza a [global] szakasz kivételével lemezvagy nyomtatómegosztásként a Samba kiszolgálóhoz kapcsolódó összes ügyfél rendelkezésére áll A szakasznevek közötti sorok egyedi konfigurációs beállítások, amelyek csak az illető megosztásra vonatkoznak. Ezek a sorok mindaddig folytatódnak, amíg nem jön egy újabb, szögletes zárójelek között álló szakasznév, vagy nem fejeződik be a fájl. Ezeknek a konfigurációs beállításoknak nagyon egyszerű a formátumuk: beállítás = érték 94 | SAMBA Az smb.conf fájlban úgy végezhetünk el egy beállítást, hogy valamilyen értéket rendelünk az adott beállításhoz Felhívjuk itt a figyelmet arra, hogy a Sambában egyes beállításoknak eléggé szerencsétlen az (angol nyelvű) nevük Amíg például a read only (csak olvasható) név önmagáért beszél, és a
legújabb Samba változatok is ezt használják, addig a public már csak a régebbi változatokban fordul elő; ma ennek szinonimájaként a kevésbé félreérthető guest ok (engedélyezett a vendégek hozzáférése) nevet használják. Ebben a fejezetben a főbb feladatok kapcsán szót ejtünk néhány régebbi, általánosan használt névről. A ,,Samba konfigurációs beállításainak gyors áttekintése” című C függelékben ábécésorrendben soroljuk fel az egyes beállítási lehetőségeket és a jelentésüket Szóközök, idézőjelek és vesszők A konfigurációs beállításokkal kapcsolatban fontos megjegyezni, hogy az érték megadásában számítanak a szóközök. Tekintsük például az alábbi beállítást: volume = A Nagy Fekete merevlemez A Samba a volume szó utolsó e betűje után álló szóközt és az egyenlőségjel, valamint az A betű közötti szóközt ,,lenyeli”. Ezeknek a szóközöknek nincs jelentőségük Az értékben szereplő
további szóközöknek viszont van jelentőségük, és a Samba a fájl beolvasásakor ezeket megtartja. A beállítások nevében nincs jelentősége a szóköznek (mint például guest ok), de javasoljuk, hogy igazodjunk a szokásokhoz, és tartsuk meg a szavak közötti szóközöket. A konfigurációs beállítások értékének megadásánál idézőjeleket is használhatunk az érték elején és végén. A Samba ezeket az idézőjeleket figyelmen kívül hagyja Magának a beállításnak a nevét azonban sohase tegyük idézőjelek közé – a Samba ezt hibának tekinti. Végül még annyit, hogy ha az érték több elemből áll, akkor az elemeket szóközökkel vagy vesszőkkel választhatjuk el egymástól. Az alábbi két értékmegadás azonos: netbios aliases = szende, szundi, hapci netbios aliases = szende szundi hapci Egyes értékeknél azonban bizonyos esetekben kötelezően szóközöket, más esetekben pedig vesszőket kell használni a listaelemek
elválasztásához. Kis- és nagybetűk A Samba konfigurációs fájljában nincs jelentősége a kis- és nagybetűk használatának, kivéve az olyan eseteket, amikor ez zavart okozna az alapul szolgáló operációs rendszerben. Tegyük fel például, hogy az alábbi beállítást írtuk be egy olyan megosztásba, ami az /export/samba/simple könyvtárra vonatkozik: PATH = /EXPORT/SAMBA/SIMPLE A Sambának nem okoz problémát, hogy a path beállítás és a hozzá rendelt érték csupa nagybetűből áll. Amikor viszont megpróbál kapcsolatot teremteni az adott könyvtárral, a művelet sikertelen lesz, mert a könyvtárt tartalmazó gépen futó operációs rendszer a Unix fájlrendszerét használja, amelyik pedig különbséget tesz a kis- és a nagybetűk között. 4. FEJEZET LEMEZMEGOSZTÁSOK | 95 Következésképpen a megadott elérési utat nem találja meg, és az ügyfél nem lesz képes kapcsolódni az adott megosztáshoz. Sorok törése A Samba konfigurációs
fájljában a bejegyzések sorát egy fordított törtjellel () törhetjük meg az alábbiak szerint: comment = Az első megosztás tartalmazza az elsődleges másolatokat az új Teamworks szoftvertermékéről. A fordított törtjel azt jelzi a Sambának, hogy a két sort egyetlen sornak tekintse. A második sor a törtvonal utáni első nem üres karakterrel, vagyis ebben a példában az az szó a betűjével kezdődik. Megjegyzések A Samba konfigurációs fájlba úgy szúrhatunk be megjegyzéseket, hogy a sorokat egy létra karakterrel (#) vagy egy pontosvesszővel (;) kezdjük. A két karakter egymással egyenértékű Az alábbi példában a Samba az első három sort megjegyzésnek tekinti: # Ez a nyomtatókat leíró szakasz. A kinyomtatandó szóközök ; számát minimum 2000-re állítottuk be, hogy legyen elég ; hely az egymást követő nyomtatási feladatok között. [printers] public = yes min print spaces = 2000 A Samba a konfigurációs fájlban lévő összes
megjegyzéssort figyelmen kívül hagyja: a sort kezdő létra karakter vagy pontosvessző után bármit beírhatunk. Figyeljük meg azt is, hogy a megjegyzéssorok több sorba töréséhez nem a fordított törtjelet használjuk. A Samba a megjegyzéssorokban álló többi karakterhez hasonlóan ezt sem veszi figyelembe. Módosítások futásidőben Az smb.conf fájlt és a benne lévő bármelyik beállítást a Samba démonjainak futása közben bármikor módosíthatjuk. Alapbeállítás szerint a Samba minden 60-adik másodpercben átnézi a konfigurációs fájlt, hogy lássa, módosult-e időközben. Ha módosulást észlel, a változásokat azonnal érvényre juttatja. Ha nem akarjuk kivárni ezt az időközt, akkor azonnal kikényszeríthetjük a fájl újraolvasását vagy azzal, hogy egy SIGHUP jelet küldünk az smbd és az nmbd processzeknek, vagy egyszerűen újraindítjuk a démonokat. Ha például az smbd processznek 893 volt a száma, az alábbi parancs kiadásával
kényszeríthetjük ki a konfigurációs fájl újbóli belolvasását: # kill -SIGHUP 893 96 | SAMBA Az ügyfelek nem észlelnek azonnal minden módosítást. Így például az éppen használatban lévő megosztás módosulásait addig nem regisztrálják, amíg a megosztást használó ügyfél nem kapcsolódik le róla, és valamelyik ügyfél nem kapcsolódik újra a megosztáshoz. Továbbá a kiszolgálóra jellemző olyan paraméterek, mint a munkacsoportos vagy NetBIOS nevek sem kerülnek azonnal regisztrálásra. Ezzel megakadályozható, hogy az aktív ügyfelek hirtelen lekapcsolódjanak a kiszolgálóról, vagy váratlan hozzáférési problémák merüljenek fel, miközben egy session még nem zárult le. Változók A Samba egy változókból álló készletet is tartalmaz, amelynek segítségével meghatározhatók a Samba kiszolgáló és a hozzá kapcsolódó ügyfelek bizonyos jellemzői. E változók százalékjellel (%) kezdődnek, ami után egyetlen nagy-
vagy kisbetű áll. A változók a konfigurációs beállításoknak csak a jobb oldalán használhatók (például az egyenlőségjel után): [pub] path = /home/ftp/pub/%a A %a az ügyfélszámítógép architektúráját jelenti – a változó értéke Windows NT gép esetén WinNT, Windows 95 vagy 98 gép esetén Win95, és Windows for Workgroups gép esetén WfWg. Emiatt a Samba más-más elérési utat fog hozzárendelni azokhoz a [pub] megosztást használó ügyfélgépekhez, amelyeken a Windows NT, a Windows 95/98 és a Windows for Workgroups operációs rendszer fut. Másként fogalmazva ez az jelenti, hogy az egyes ügyfelek attól függően, hogy milyen az architektúrájuk, más és más elérési úton érik el a megosztást: /home/ftp/pub/WinNT /home/ftp/pub/Win95 /home/ftp/pub/WfWg A változók ilyen módon való használata akkor célszerű, ha azt szeretnénk, hogy az egyes felhasználók egyedi konfigurációs beállításokat használhassanak a saját egyéni
jellemzőik vagy körülményeik alapján. A Samba 19 változót használ (lásd a 41 táblázatot) 4.1 táblázat Samba változók Változó Meghatározás Ügyfél változói %a %I %m %M Az ügyfél architektúrája (például Samba, WfWg, WinNT, Win95 vagy UNKNOWN) Az ügyfél IP címe (például 192.168220100) Az ügyfél NetBIOS neve Az ügyfél DNS neve 4. FEJEZET LEMEZMEGOSZTÁSOK | 97 4.1 táblázat folytatása Változó Meghatározás Felhasználói változók %g %G %H %u %U Az %u elsődleges csoportja Az %U elsődleges csoportja Az %u home könyvtára Az aktuális Unix felhasználónév A kért ügyfél felhasználóneve (a Samba nem használja mindig) A megosztás változói %p %P %S Automount elérési út a megosztás rootkönyvtárához, ha az más, mint a %P Az aktuális megosztás rootkönyvtára Az aktuális megosztás neve A kiszolgáló változói %d %h %L %N %v A kiszolgáló aktuális processzének ID-je A Samba kiszolgáló DNS gazdaneve A Samba
kiszolgáló NetBIOS neve A kiszolgáló home könyvtára, az automount listában A Samba verziója Egyéb változók %R %T Az SMB protokoll egyeztetett szintje Az aktuális dátum és idő Lássunk egy másik példát a változók használatára! Tegyük fel, hogy öt ügyfél van a hálózatunkban, de közülük a fred nevű némileg más [homes] konfigurációt igényel, amikor a Samba kiszolgálóhoz kapcsolódik. A Sambával könnyen megoldható ez a probléma: [homes] . include = /usr/local/samba/lib/smb.conf%m . Az include bejegyzés itt azt eredményezi, hogy minden egyes NetBIOS gépnek (%m) az aktuális fájl mellett még egy különálló konfigurációs fájlt is be kell olvasnia. Ha az ügyfélszámítógép neve fred, és ha az smbconffred fájl létezik a samba dir/lib/ könyvtárban (vagy bármely olyan könyvtárban, amelyet a konfigurációs fájlok számára definiáltunk), a Samba beszúrja azt az alapértelmezés szerinti fájlba Ha az smbconffred fájlban
lévő bármelyik konfigurációs beállítás újradefiniálna egy előző beállítást, akkor ez az érték felülírja az előzőleg a megosztáshoz használt beállítást. Figyeljük meg, hogy itt az ,,előző” szót használtuk: ha az include beállítást követően a fő konfigurációs fájl bármely értéket újradefiniál, a Samba az új értékeket fogja használni a megosztáshoz. 98 | SAMBA Itt egy fontos részhez értünk: ha nincs ilyen fájl, a Samba nem generál hibát – egyáltalán semmit sem tesz. Ez lehetővé teszi, hogy ezt a stratégiát követve csak a fred nevű ügyfelünk számára hozzunk létre egy külön konfigurációs fájlt, ne pedig minden egyes NetBIOS gépet használó részére A gépspecifikus konfigurációs fájlokat mind az egyes ügyfelek egyéni beállításaihoz, mind a Sambában való hibakeresés megkönnyítéséhez is használhatjuk. Ami az utóbbi illeti: ha csak egyetlen ügyféllel vannak problémáink, akkor az itt
elmondottak szerint egy egyéni bejelentkezési fájlt bocsáthatunk a rendelkezésére, ami bővebb magyarázatokkal szolgál. Így megnézhetjük, miként reagál erre a Samba anélkül, hogy lassítanánk a többi ügyfél munkáját, vagy hogy haszontalan naplózásokkal terhelnénk a lemezt. Ne feledjük, hogy nagyobb hálózat esetén nincs mindig lehetőségünk arra, hogy hibakeresés céljából újraindítsuk a Samba kiszolgálót. A 4.1 táblázatban felsorolt változók segítségével egyéni értékeket rendelhetünk a Samba különböző beállítási lehetőségeihez. Ezekre a lehetőségekre a későbbi fejezetekben még több helyen is kitérünk A konfigurációs fájl szakaszai A változók rövid áttekintése után ejtsünk pár szót a Samba konfigurációs fájl néhány különleges szakaszáról is. Most se aggódjunk azért, ha nem értenénk mindent; a későbbi fejezetekben még részletesebben visszatérünk ezekre. A [global] szakasz A [global] szakasz
gyakorlatilag az összes Samba konfigurációs fájlban megjelenik, még ha nem is kötelező ennek a definiálása. Az ebben a szakaszban lévő összes beállítás az összes többi megosztásra érvényesül, mintha ez a szakasz át lenne másolva magába a megosztásba. Ezzel kapcsolatban azonban van egy csapda: a többi szakasz ugyanezeket a beállításokat új értékekkel sorolhatja fel saját magában, aminek az a következménye, hogy az új értékek felülírják a [global] szakaszban megadott értékeket. Ennek illusztrálására tekintsük ismét a fejezet elején bemutatott példánkat: [global] log level = 1 max log size = 1000 socket options = TCP NODELAY IPTOS LOWDELAY guest ok = no [homes] browseable = no map archive = yes [printers] path = /usr/tmp guest ok = yes printable = yes min print space = 2000 4. FEJEZET LEMEZMEGOSZTÁSOK | 99 [test] browseable = yes read only = yes guest ok = yes path = /export/samba/test Ha az előző példában egy ügyfelet
csatlakoztattunk volna a [test] megosztáshoz, a Samba elsőként a [global] szakaszt olvasta volna be. Ezen a ponton a guest ok = no beállítást használta volna globális alapértelmezett beállításként az összes olyan megosztásra, amellyel a konfigurációs fájl beolvasása során találkozott volna. Ezek itt a [homes] és a [printers] megosztások. Amikor azonban a [test] megosztást olvassa be, a guest ok = yes beállítással találkozik, és ezzel felülírja a [global] szakaszban beállított értéket. Minden olyan beállítás, ami egy szakaszon kívül található (az első megjelölt szakasz előtt), globális beállításnak tekintendő. A [homes] szakasz Ha egy ügyfél olyan megosztáshoz kísérli meg a hozzáférést, amely nem szerepel az smb.conf fájlban, a Samba a konfigurációs fájl [homes] szakaszában végzi a keresést Ha létezik ilyen, akkor feltételezi, hogy az azonosítatlan megosztásnév egy Unix felhasználónév, amit lekérdez a Samba
kiszolgáló jelszóadatbázisából. Ha ebben megjelenik a felhasználónév, akkor a Samba azt feltételezi, hogy az ügyfele Unix felhasználó, aki a kiszolgálón a saját home (kezdő) könyvtárához próbál meg kapcsolódni Tegyük fel például, hogy egy ügyfél-számítógép először kapcsolódik a hydra Samba kiszolgálóhoz, és megkísérel kapcsolatot teremteni egy [alice] nevű megosztáshoz. Az smb.conf fájlban nincs definiálva [alice] nevű megosztás, viszont van egy [homes] szakasz, ezért a Samba keresni kezd a jelszóadatbázisban, és azt látja, hogy van egy alice nevű felhasználói fiók a rendszerben. Ezt követően a Samba megvizsgálja, hogy az ügyfél milyen jelszót használt az alice nevű felhasználó Unix jelszavaként vagy a jelszóadatbázisban (ha a jelszó nem titkosított), vagy a Samba smbpasswd fájljában (ha a jelszó titkosított). Ha talál egyező jelszót, akkor az alice nevű felhasználó számára létrehoz egy [alice] nevű
megosztást. A ,,Felhasználók, biztonság és tartományok” című 6. fejezetben részletesebben foglalkozunk azzal, hogy a [homes] szakasz használatával miként hozhatók létre felhasználók (és miként kezelhetők ezek jelszavai). A [printers] szakasz A harmadik szakasznak [printers] a neve, és hasonlít a [homes] szakaszhoz. Ha egy ügyfél olyan megosztáshoz próbál kapcsolódni, amely nem szerepel az smb.conf fájlban, és nem található a neve a jelszófájlban, akkor a Samba megvizsgálja, hogy nem nyomtatómegosztásról van-e szó. A Samba ezt a nyomtató-konfigurációt tartalmazó fájl (általában az /etc/printcap) elolvasásával teszi meg, hogy lássa, szerepel-e benne a megosztásnév.* Ha szerepel, akkor a Samba a nyomtató nevével létrehoz egy megosztást. * A rendszerünktől függően lehetséges, hogy ez nem az /etc/printcap fájl. A Sambához tartozó testparm parancs segítségével határozhatjuk meg a printcap name konfigurációs beállítás
értékét. A Samba lefordításakor ez volt az alapértelmezés szerint választott érték 100 | SAMBA A [homes] szakaszhoz hasonlóan ez azt jelenti, hogy az smb.conf fájlban nem kell fenntartanunk minden egyes rendszernyomtató számára egy megosztást. Kérésünkre a Samba megvizsgálja a Unix nyomtatóregisztráló fájlját, és az ügyfél-számítógépek rendelkezésére bocsátja a regisztrált nyomtatókat. Ennek azonban van egy nyilvánvaló korlátja: Ha van egy fred nevű felhasználói fiókunk, és egy ugyancsak fred nevű nyomtatónk, akkor a Samba először mindig a felhasználói fiókot találja meg, még akkor is, ha a felhasználónak az a szándéka, hogy a nyomtatóhoz kapcsolódjon. A ,,Nyomtatás és névfeloldás” című 7. fejezetben részletesebben foglalkozunk a [printers] megosztás beállításával. Konfigurációs beállítások A Samba konfigurációs fájlokban a beállítások kétféle kategóriája különböztethető meg: globális
és megosztásos. Mindkét kategória az jelzi, hogy az illető beállítás a konfigurációs fájl mely részében jelenhet meg. Globális Globális beállítások csak és kizárólag a [global] szakaszban lehetnek. Ezek általában olyan beállítások, amelyek tipikusan magának a Samba kiszolgálónak a viselkedését befolyásolják, és nem valamelyik megosztásáét Megosztásos A megosztásos beállítások specifikus megosztásokban vagy a [global] szakaszban lehetnek. Ha a [global] szakaszban állnak, akkor az összes megosztás viselkedését befolyásolják, hacsak egy adott megosztás nem írja felül azt a maga beállításával. Emellett a konfigurációs beállításokat további négy kategóriába lehet sorolni aszerint, hogy a beállítás milyen értéket vehet fel. Ezek a következők: Boolean érték Az ilyen típusú beállítás csak valamilyen igenlő vagy nemleges értéket vehet fel: az értékek neveként a yes vagy no, a true vagy false és a 0 vagy az 1
használható. Az értékben nincs különbség a kis- és a nagybetű között: a YES ugyanazt jelenti, mint a yes Numerikus Bármely egész decimális, hexadecimális vagy oktális szám. A hexadecimális számokat a szabványos 0xnn, az oktális számokat a szabványos 0nnn formátumban kell megadni. Karakterlánc Kisbetűket és nagybetűket megkülönböztető karakterlánc, mint például fájlnév vagy felhasználónév. Felsorolás Ismert értékek véges listája. Valójában egy Boolean érték típusú beállítás is felsorolás, amely csak két értéket tartalmaz 4. FEJEZET LEMEZMEGOSZTÁSOK | 101 A konfigurációs fájl beállításai A Sambában 200-nál több konfigurációs beállítást használhatunk. Először lássunk közülük néhány olyat, amellyel magát a konfigurációs fájlt módosíthatjuk Amint a fejezet korábbi részében említettük, a konfigurációs fájlok egyáltalán nem statikusak. A Sambát utasíthatjuk arra, hogy a fájl
feldolgozása közben új beállításokat vegyen fel bele, vagy egy meglévőt módosítson. Ezeket a beállítási lehetőségeket a 42 táblázat sorolja fel 4.2 táblázat Konfigurációs fájl beállításai Beállítás Paraméterek Funkció Alapértelmezett érték Hatókör config file Karakterlánc (név a teljes elérési úttal) Karakterlánc (név a teljes elérési úttal) Megadja az aktuális konfigurációs fájl helyett használandó fájl helyét. Konfigurációs beállítások további szegmensét adja meg, amelyet ezen a ponton be kell illeszteni a konfigurációs fájlba. Lehetővé teszi az aktuális megosztásban egy másik megosztás konfigurációs beállításainak klónozását. Nincs Globális Nincs Globális Nincs Megosztás include copy Karakterlánc (a megosztás neve) config file A globális hatókörű config file beállítás egy helyettesítő konfigurációs fájlt határoz meg, amelyet a Samba ezt a bejegyzést olvasva betölt. Ha a
megadott fájl létezik, akkor a Samba a korábbi konfigurációs fájl további részét, valamint a korábban már beolvasott beállításokat figyelmen kívül hagyja, és teljes mértékben az új fájlban található beállítások szerint konfigurálja magát. A config file beállítás kihasználja az előzőekben említett változók adta előnyöket, ami akkor hasznos, ha olyan, speciális konfigurációs fájlt akarunk betölteni, ami a kapcsolódni kívánó ügyfél számítógépének nevén vagy a felhasználói nevén alapul. Így például a következő sor arra utasítja a Sambát, hogy a kapcsolódó ügyfél NetBIOS neve által specifikált konfigurációs fájlt használja, ha létezik ez a fájl. Amennyiben létezik ez a fájl, akkor az eredeti konfigurációs fájl beállításai figyelmen kívül maradnak. [global] config file = /usr/local/samba/lib/smb.conf%m Ha a megadott konfigurációs fájl nem létezik, akkor a Samba ezt a beállítást figyelmen kívül
hagyja, és az aktuális fájl szerint konfigurálja önmagát. include Ez a beállítás a célfájlt az adott ponton bemásolja az aktuális konfigurációs fájlba a 4.1 ábrán látható módon. Ez a beállítás is hasznosítja a korábban bemutatott változókat, ami 102 | SAMBA akkor hasznos, ha olyan, speciális konfigurációs fájlt akarunk betölteni, ami a kapcsolódni kívánó ügyfél számítógépének nevén vagy a felhasználói nevén alapul. Ezt a beállítást a következőképpen használhatjuk: [global] include = /usr/local/samba/lib/smb.conf%m Ha a megadott konfigurációs fájl nem létezik, a Samba figyelmen kívül hagyja ezt a beállítást. Ne feledjük, hogy az összes, korábban specifikált beállítás felülíródik A 41 ábrán mind a három beállítás felülírja a korábbi értékeket. 4.1 ábra Az include beállítás egy Samba konfigurációs fájlban Az include beállítás nem képes a %u (felhasználó), a %p (aktuális megosztás
rootkönyvtára) vagy az (aktuális megosztás) változók értelmezésére, mert ezek a fájl beolvasásakor még nem kapták meg az értékeiket. copy A copy konfigurációs beállítás lehetővé teszi, hogy klónozzuk az aktuális megosztásban megadott megosztásnév konfigurációs beállításait. A célmegosztásnak azt megelőzően szerepelnie kell a konfigurációs fájlban, mielőtt megjelenne benne a másolást végző megosztás. Így például: [template] writable = yes browsable = yes valid users = andy, dave, peter [data] path = /usr/local/samba copy = template 4. FEJEZET LEMEZMEGOSZTÁSOK | 103 Jegyezzük meg, hogy a copy direktíva által meghívott megosztás összes beállítása felülírja a klónozott megosztás beállításait, függetlenül attól, hogy ezek a copy direktíva előtt vagy után szerepelnek. A kiszolgáló konfigurálása Elérkezett az ideje annak, hogy konfiguráljuk a Samba kiszolgálót. Ismerkedjünk meg azzal a három alapvető
konfigurációs beállítással, amelyek az smb.conf fájl [global] szakaszában szerepelhetnek: [global] # A kiszolgáló konfigurációs paraméterei netbios name = HYDRA server string = Samba %v on (%L) workgroup = SIMPLE Ez a konfigurációs fájl meglehetősen egyszerű: a Samba az NBT hálózaton hydra NetBIOS néven bejelenti a jelenlétét. Emellett még azt is elárulja magáról, hogy a SIMPLE munkacsoport tagja, és egy üzenetet jelenít meg az ügyfelei részére, amelyben közli a verziószámát és a Samba kiszolgáló NetBIOS nevét Ha a korábbi konfigurációs fájlunkba beírtuk az encrypt passwords=yes bejegyzést, akkor ezt most itt is meg kell tennünk. Lépjünk tovább, és próbáljuk ki ezt a konfigurációs fájlt. A fenti szöveg beírásával hozzunk létre egy smb.conf nevű fájlt a /usr/local/samba/lib könyvtárban Állítsuk kiinduló állapotba a Samba kiszolgálót, és egy Windows ügyfél segítségével ellenőrizzük az eredményt.
Győződjünk meg arról, hogy a Windows ügyfél is a SIMPLE munkacsoport tagja Ha a Windows ügyfélnél a Network Neighborhood ikonjára kattintunk, akkor a 42 ábrán láthatóhoz hasonlónak kell megjelennie. (Az ábrában a phoenix és a chimaera szerepel Windows ügyfelekként) A kiszolgáló leírását tartalmazó megjegyzést is ellenőrizhetjük, ha a Network Neighborhood ablakában megjelenítjük a részleteket (a View menüben válasszuk a Details parancsot). Ekkor a 43 ábrán láthatóhoz hasonlónak kell megjelennie Ha rákattintanánk a Hydra ikonjára, a megnyíló ablakban láthatnánk a kiszolgálón elérhető szolgáltatásokat. Esetünkben ez az ablak teljesen üres lenne, mert még nincsenek megosztások a kiszolgálón. A kiszolgáló konfigurációs beállításai A 4.3 táblázat foglalja össze a kiszolgáló korábban már ismertetett konfigurációs beállításait Figyeljük meg, hogy mindegyik beállítás globális a hatókörét illetően; másként
fogalmazva ez azt jelenti, hogy ezeknek a konfigurációs fájl [global] szakaszában kell szerepelniük. 104 | SAMBA 4.2 ábra A Network Neighborhood ablakában megjelenik a Samba kiszolgáló 4.3 ábra A részletek a Network Neighborhood ablakában 4.3 táblázat A kiszolgáló konfigurációs beállításai Beállítás Paraméterek netbios Karakterlánc name server Karakterlánc string workgroup Karakterlánc Funkció Alapértelmezett érték Hatókör Megadja a Samba kiszolgáló elsődleges NetBIOS nevét. Leíró nevet ad a Samba kiszolgálónak. Megadja annak a gépcsoportnak a NetBIOS nevét, amelyikhez a Samba kiszolgáló tartozik. A kiszolgáló DNS gazdaneve Samba %v Globális Fordítási időben kerül definiálásra. Globális Globális 4. FEJEZET LEMEZMEGOSZTÁSOK | 105 netbios name A netbios name beállítás segítségével rendelhetünk NetBIOS nevet a kiszolgálóhoz. Például: netbios name = YORKVM1 Ennek a konfigurációs beállításnak
alapértelmezés szerint a kiszolgáló gazdaneve az értéke, vagyis a számítógép teljes DNS nevének az első része. Ha például a gépnek rubyoracom a DNS neve, akkor alapértelmezés szerint a RUBY lenne a NetBIOS neve. Bár ezt a beállítást arra is használhatjuk, hogy a konfigurációs fájlban visszaállítsuk a gép NetBIOS nevét (amint ezt a korábbiakban tettük), többnyire arra használják, hogy a Samba kiszolgálóhoz az aktuális DNS nevétől eltérő NetBIOS nevet rendeljenek. Emlékezzünk arra, hogy a névadásnál be kell tartanunk az érvényes NetBIOS számítógépnevekre vonatkozó szabályokat, amint erről az ,,Ismerkedés a Sambával” című 1. fejezetben olvashattunk A kiszolgáló NetBIOS nevének megváltoztatása nem ajánlott, hacsak nincs alapos oka. Ilyen ok lehet például az, hogy a számítógép gazdaneve nem egyedi, mert például egy helyi hálózat két vagy több DNS tartományra van felosztva. Így például a YORKVM1 megfelelő
NetBIOS név lehet egy vm1yorkexamplecom tartományba tartozó kiszolgáló számára, hogy meg lehessen különböztetni a vm1falkirkexamplecom géptől, amelyiknek ugyanaz a gazdaneve, de másik DNS tartományba tartozik. Ez a beállítás arra is használható, hogy átirányítsuk az SMB szolgáltatásokat egy kieső gépről. Ha például egy adott részleg SMB kiszolgálójának SALES nevű gépe váratlanul meghibásodik, akkor a netbios name = SALES beállítással azonnal átveheti a szerepét egy tartalék Samba gép. A felhasználóknak nem kell más gépre leképezniük a meghajtóikat; a SALES géppel eddig fennállott kapcsolataik egyszerűen a tartalék géppel jönnek létre. server string A server string paramétere egy megjegyzést tartalmazó karakterláncot definiál, ami a kiszolgáló neve mellett jelenik meg mind a Network Neighborhood ablakában (ha a Details menüt jelenítjük meg), mind a Microsoft Windows nyomtatókezelőjében. A leírásban használhatjuk
a szabványos változókat, ha tájékoztatást akarunk adni a kiszolgálóról. A korábbi bejegyzésünk az alábbi volt: [global] server string = Samba %v on (%h) Ennek a beállításnak az alapértelmezés szerinti értéke a Samba aktuális verzióját adja meg, és mindössze ennyiből áll: server string = Samba %v workgroup A workgroup paramétere annak az aktuális munkacsoportnak a nevét adja meg, amelynek a Samba kiszolgáló a tagja. Azoknak az ügyfeleknek, akik hozzá szeretnének férni a Samba kiszolgáló megosztásaihoz, az ugyanilyen NetBIOS nevű munkacsoport tagjainak 106 | SAMBA kell lenniük. Emlékezzünk arra, hogy a munkacsoportok valójában NetBIOS csoportnevek, amelyeknek meg kell felelniük a NetBIOS nevekre vonatkozó szabályoknak (lásd az 1. fejezetet) Például: [global] workgroup = SIMPLE Ennek a beállításnak az alapértelmezett paramétere fordítási időben kerül megadásra. Ha a make-fájlban nem módosult a neve, akkor WORKGROUP
marad a neve. Mivel minden konfigurálatlan munkacsoportnak ez a neve, ajánlatos, hogy mindig állítsuk be a Samba konfigurációs fájljában a munkacsoportunk nevét. A lemezmegosztás konfigurálása Korábban említettük, hogy semmilyen megosztás sincs létrehozva a hydra nevű kiszolgálón. Folytassuk a konfigurációs fájl elkészítését, és hozzunk létre egy [data] nevű üres lemezmegosztást. Ehhez az alábbi bejegyzéseket kell felvennünk a konfigurációs fájlba: [global] netbios name = HYDRA server string = Samba %v on (%L) workgroup = SIMPLE [data] path = /export/samba/data comment = Data meghajtó volume = Sample-Data-Drive writeable = yes guest ok = yes A [data] megosztás tipikusnak tekinthető egy Samba lemezmegosztására. Ez a megosztás egy /export/samba/data könyvtárat hoz létre a Samba kiszolgálón Még egy megjegyzést is beszúrtunk, ami arról tájékoztat, hogy a megosztás egy Data nevű meghajtó, továbbá azt is megadtuk, hogy a kötet
(volume) neve maga a megosztás neve A writable = yes beállítás azt jelenti, hogy a felhasználók írhatnak adatokat a megosztásba. Alapértelmezés szerint a Samba csak olvasható (read-only) megosztást hoz létre, ezért ezt az írást engedélyező beállítást kifejezetten meg kell adnunk, ha azt szeretnénk, hogy az adott lemezmegosztás írható legyen. Észrevehettük, hogy a guest ok beállításhoz a yes értéket rendeltük. Bár a biztonságot illetően ez nem túl jó megoldás, de a jelszavakkal kapcsolatban néhány dologról még szót kell ejtenünk, ami szükségessé teszi ezt a ,,nagyvonalúságot”, mielőtt még egyenként állítanánk be a felhasználók hitelesítését. Folytassuk a munkánkat, és egészítsük ki ezekkel a bejegyzésekkel a konfigurációs fájlt. Ezen túlmenően az alábbi parancsokkal hozzuk létre a Samba gépen rootként az /export/samba/data könyvtárat: 4. FEJEZET LEMEZMEGOSZTÁSOK | 107 # mkdir /export/samba/data #
chmod 777 /export/samba/data Ha most újra kapcsolódunk a hydra kiszolgálóhoz (ezt a Windows Network Neighborhood ikonjára kattintva tehetjük meg), megjelenik a data nevű egyetlen megosztás a 4.4 ábrán látható módon. A megosztáshoz írásra és olvasásra is hozzáférhetünk Próbáljunk létrehozni egy fájlt a megosztásban, vagy másoljunk át ide egy fájlt. A kísérletezőbb kedvűek egy hálózati meghajtót is leképezhetnek erre a megosztásra 4.4 ábra A data nevű megosztás a Samba kiszolgálón A lemezmegosztás konfigurációs beállításai A Samba lemezmegosztásának az előzőekben bemutatott alapvető konfigurációs beállításait a 4.4 táblázat sorolja fel 4.4 táblázat A megosztás alapvető konfigurációs beállításai Beállítás Paraméterek Funkció Alapértelmezett érték Hatókör path (directory) karakterlánc (teljes elérési út) /tmp Megosztás guest ok (public) Boolean érték no Megosztás comment karakterlánc
Nincs Megosztás volume karakterlánc Megadja azt a Unix könyvtárat, ami lemezmegosztáshoz vagy nyomtatómegosztás esetén a sorba állításhoz használható. Ha yes az értéke, akkor ennek megosztásnak az eléréséhez nincs szükség hitelesítésre. Megadja a megosztással együtt megjelenő megjegyzést. Megadja a kötetnevet: ez a fizikai meghajtó DOS neve. Megosztás neve Megosztás 108 | SAMBA 4.4 táblázat folytatása Beállítás Paraméterek read only Boolean érték writeable Boolean érték (write ok) Funkció Alapértelmezett érték Hatókör Ha yes az értéke, akkor a megosztás csak olvasásra érhető el. Ha no az értéke, akkor a megosztás csak olvasásra érhető el. yes Megosztás no Megosztás path Ez a beállítás, amelynek a directory a szinonimája, a fájl- vagy a nyomtatómegosztásnak a rootból elinduló elérési útját adja meg. A Samba kiszolgálón tetszőleges elérési utat adhatunk meg, amennyiben a Samba
processz kapcsolódó tulajdonosa írhatja és olvashatja az illető könyvtárat. Ha az elérési út nyomtatómegosztáshoz vezet, akkor olyan ideiglenes könyvtárra kell mutatnia, amelybe beírhatók a fájlok, mielőtt beállnának a nyomtatóra várakozó sorba ( /tmp és /var/spool a szokásos választás). Ha az elérési út lemezmegosztáshoz vezet, akkor az ügyfélgépen a megosztás nevét képviselő mappa tartalma megegyezik a Samba kiszolgálón lévő könyvtár tartalmával Ha például a konfigurációs fájlunkban az alábbi lemezmegosztást adtuk volna meg: [network] path = /export/samba/network writable = yes guest ok = yes és a Unix oldalon a /usr/local/network könyvtár tartalma az alábbi lenne: $ ls -al /export/samba/network drwxrwxrwx 9 root nobody 1024 drwxr-xr-x 9 nobody nobody 1024 drwxr-xr-x 9 nobody nobody 1024 drwxr-xr-x 9 nobody nobody 1024 drwxr-xr-x 9 nobody nobody 1024 Feb Feb Feb Feb Feb 16 16 16 16 16 17:17 17:17 17:17 17:17 17:17 . .
quicken tax98 taxdocuments akkor az ügyféloldalon ennek a megfelelőjét látnánk a 4.5 ábrán látható szerint guest ok Ez a beállítás (aminek egy régebbi szinonimája a public) engedélyezi, illetve letiltja a vendéghozzáférést egy megosztáshoz. A beállítás alapértelmezés szerinti értéke a no Ha a beállításnak yes az értéke, akkor ezt azt jelenti, hogy a megosztáshoz való kapcsolódáshoz sem felhasználónévre, sem jelszóra nincs szükség. Amikor kapcsolódik egy felhasználó, ugyanazokat a jogokat kapja meg, mint egy kijelölt vendégfelhasználó A Samba által a megosztáshoz felkínált alapértelmezés szerinti fióknév a nobody. Az alábbi sorok lehe- 4. FEJEZET LEMEZMEGOSZTÁSOK | 109 4.5 ábra Elérési úttal megadott hálózati fájlrendszer Windows ügyfél oldalon megjelenítve tővé teszik, hogy egy vendégfelhasználó hozzáférhessen az [accounting] nevű megosztáshoz, amely engedélyezi az ftp fiók elérését: [global]
guest account = ftp [accounting] path = /usr/local/account guest ok = yes Figyeljük meg, hogy a felhasználók az érvényes felhasználónév/jelszó kombinációjukat használva is hozzáférhetnek a megosztáshoz. Ha ez a hozzáférés sikeres, akkor azokkal a jogokkal fognak rendelkezni, amelyek a saját fiókjukhoz vannak rendelve, és nem azokkal, amelyekkel a vendégfiók van felruházva. Ha viszont egy felhasználó megpróbál bejelentkezni, de sikertelen a kísérlete, akkor a vendégfiókhoz rendelt hozzáférési jogokat kapja meg. Azt is megtehetjük, hogy bármelyik felhasználónak, aki hozzá akar férni egy adott megosztáshoz, a vendégfiókot kelljen használnia (és ekkor a vendég jogaival fog rendelkezni). Ehhez a guest only = yes beállítást kell használnunk comment A comment beállítás segítségével megjegyzést szúrhatunk be, amit akkor kap meg az ügyfél, amikor tallózza a megosztást. A felhasználó akkor látja ezt a megjegyzést, amikor a
Windows Network Neighborhood ablakában a megfelelő számítógépet választva megnézi a megosztott mappa részleteit, vagy a DOS parancssorába beírja a NET VIEW parancsot. Az alábbiakban egy példát látunk arra, miként helyezhetünk el megjegyzést egy [network] megosztásba: [network] comment = Network Drive path = /export/samba/network Ügyfél oldalon ekkor a 4.6 ábrán láthatóhoz hasonló jelenik meg Figyeljük meg, hogy a Windows aktuális konfigurációja mellett ez a megjegyzés nem jelenik meg akkor, ha a megosztás egy Windows hálózati meghajtóra van leképezve. 110 | SAMBA 4.6 ábra Megosztás megjegyzése Windows ügyfél oldalon megjelenítve Ügyeljünk arra, hogy ne keverjük össze a comment beállítást, ami a Samba kiszolgáló megosztásait dokumentálja, a server string beállítással, ami magát a kiszolgálót dokumentálja. volume Ennek a beállításnak a segítségével megadhatjuk az SMB által jelentett megosztás kötetnevét. Ez
általában az smbconf fájlban megadott megosztás neve Ha viszont e helyett más nevet akarunk használni, akkor ezt ebben a beállításban tehetjük meg. Tegyük fel például, hogy egy telepítő program meg akarja vizsgálni egy CD-ROM kötetnevét, hogy a telepítést megelőzően megbizonyosodjon arról, valóban a megfelelő lemez van a meghajtóban. Ha viszont a CD-ROM tartalmát átmásoljuk egy hálózati megosztásba, és innen akarjuk elvégezni a telepítést, akkor ezzel a beállítással megkerülhetjük ezt az akadályt: [network] comment = Network Drive volume = ASVP-102-RTYUIKA path = /home/samba/network read only és writeable A read only és a writeable (vagy write ok) beállítások valójában ugyanazt mondják kétféle módon, csak más megközelítésben. Így például az alábbi beállítások mindegyikét a [global] vagy egy egyedi megosztásban is használhatjuk: read only = yes writeable = no Ha a fenti beállítások bármelyikét használjuk, akkor
olvashatók a megosztás adatai, de nem írhatók bele adatok. Azt gondolhatnánk, hogy csak akkor lehet szükségünk erre a beállításra, ha csak olvasható megosztást akarnánk létrehozni Jegyezzük meg azonban, hogy ez a csak olvasható viselkedés a megosztások alapértelmezés szerinti beállítása; ha azt szeretnénk, hogy írhatók is legyenek adatok egy megosztásba, akkor a konfigurációs fájl illető megosztására az alábbi beállítások valamelyikével kifejezetten engedélyezni kell ezt: read only = no writeable = yes 4. FEJEZET LEMEZMEGOSZTÁSOK | 111 Jegyezzük meg azt is, hogy ha bármelyik beállítást többször is megadjuk, akkor a Samba az utoljára megadott értéket örökíti át a megosztásra. A Samba hálózati beállításai Ha a Sambát több alhálózatot átfogó számítógépen akarjuk futtatni, vagy ha csak az a szándékunk, hogy biztonsági házirendet alkalmazzunk a saját alhálózatunkra, akkor közelebbről meg kell
vizsgálnunk a hálózati konfigurációs beállításokat. A vizsgálatainkhoz tegyük fel, hogy a Samba kiszolgálónk több alhálózatból álló hálózathoz csatlakozik. A hálózat alhálózatainak címe legyen 192168220* és 134.213233*. A hálózati konfigurációs beállításokhoz az alábbi bejegyzéseket kell belevenni a konfigurációs fájlba: [global] netbios name = HYDRA server string = Samba %v on (%L) workgroup = SIMPLE # Hálózati konfigurációs beállítások hosts allow = 192.168220 134213233 localhost hosts deny = 192.168220102 interfaces = 192.168220100/2552552550 134.213233110/2552552550 bind interfaces only = yes [data] path = /home/samba/data guest ok = yes comment = Data Drive volume = Sample-Data-Drive writeable = yes Először essék szó a hosts allow és a hosts deny beállításokról. Akik számára ismerősen hangzanak ezek a beállítások, azok feltehetően a számos Unix rendszer /etc könyvtáraiban található hosts.allow és hostsdeny
fájlokra gondolnak Ezeknek a beállításoknak azonos a rendeltetésük, mint az említett fájloknak; biztonsági eszközként használhatók, amellyel engedélyezhetjük vagy megtilthatjuk más gazdagépeknek az IP címükön alapuló kapcsolódását. Vajon miért nem használjuk közvetlenül magukat a hostsallow és hosts.deny fájlokat? Azért, mert a kiszolgálón lehetnek olyan szolgáltatások, amelyeket mások számára elérhetővé akarunk tenni anélkül, hogy engedélyeznénk a Samba lemezvagy nyomtatómegosztásaihoz való hozzáférést. A fenti hosts allow beállítással a következő, csonkított IP címet specifikáltuk: 192.168220 (Figyeljük meg, hogy kitettük a harmadik pontot, csak az utána következő negyedik számhármas hiányzik.) Az egyenlőség jelentése: ,,Az összes gazdagép a 192.168220 alhálózaton” Ugyanakkor a hosts deny sorban csak a 192168220102 című gazdagépnek tiltottuk meg a kapcsolódást. 112 | SAMBA Csodálkozhatunk, vajon
miért lesz megtagadva a 192.168220102 géptől a kapcsolódás, amikor ez annak az alhálózatnak a része, amelyre a hosts allow beállítás (vagyis az engedélyezés) vonatkozik? Az alábbiakban választ kapunk arra, hogy miként értékeli ki a Samba a hosts allow és a hosts deny beállításokat: 1. Ha az smbconf fájlban sehol sincs definiálva allow vagy deny beállítás, akkor a Samba bármely olyan gép kapcsolódását engedélyezi, amelynek a kapcsolódását maga a rendszer engedélyezi. 2. Ha az smbconf fájl [global] szakaszában vannak definiálva hosts allow és a hosts deny beállítások, akkor ezek az összes megosztásra vonatkoznak, még akkor is, ha a megosztásokban ezeket felülíró beállítások is vannak. 3. Ha csak egy megosztásra van definiálva egy hosts allow beállítás, akkor csak a felsorolt gazdagépek számára engedélyezett a megosztás használata A többi gazdagép hozzáférése le van tiltva. 4. Ha csak egy megosztásra van definiálva
egy hosts deny beállítás, akkor az összes olyan gazdagép, amelyik nem szerepel a felsorolásban, használhatja a megosztást. 5. Ha mind a hosts allow, mind a hosts deny beállítás definiálva van, akkor egy gazdagépnek meg kell jelennie az engedélyezettek (allow) listájában, és nem jelenhet meg (semmilyen formában) a tiltottak (deny) listájában ahhoz, hogy hozzáférhessen a megosztáshoz. Ellenkező esetben a gazdagép hozzáférése le lesz tiltva Ügyeljünk arra, hogy kifejezetten ne engedélyezzük egy gazdagépnek a hozzáférést egy megosztáshoz, hanem e helyett inkább tagadjuk meg a hozzáférést attól a teljes alhálózattól, amelynek a gazdagép is a része. Az utolsó pontra vonatkozóan nézzünk egy másik példát. Vegyük szemügyre a következő beállításokat: hosts allow = 111.222 hosts deny = 111.222333 Ebben az esetben csak a 111.222*.* alhálózathoz tartozó gazdagépek számára van engedélyezve a Samba megosztásaihoz való
hozzáférés. Attól az ügyféltől azonban, amelyik a 111.222333* alhálózathoz tartozik, meg lesz tagadva a hozzáférés, még ha a gazdagépek engedélyező listája szerint ez engedélyezve is van számára. Ahhoz, hogy egy ügyfél hozzáférhessen a Samba megosztásaihoz, nem elég, hogy megjelenik az engedélyezett gazdagépek között, hanem annak a feltételnek is teljesülnie kell, hogy ne szerepeljen a tiltólistán Ha egy számítógép olyan megosztáshoz akar hozzáférni, amelyikhez nincs engedélye, hibaüzenetet kap A két másik specifikált beállítás az interfaces és a bind interfaces only cím. Nézzük először az interfaces beállítást Alapértelmezés szerint a Samba az elsődleges hálózati interfészén keresztül küld ki adatokat, ami a 192168220100 alhálózat Ha azt szeretnénk, hogy több interfészen keresztül küldjön ki adatokat, akkor az interfaces beállításban a teljes listát meg kell adnunk Az előző példában a Sambát úgy
kötöttük ahhoz a két alhálózathoz (192.168220 és 134213233), amelyikben a számítógép működik, hogy 4. FEJEZET LEMEZMEGOSZTÁSOK | 113 megadtuk a másik hálózati interfész 134.213233100 címét Ha a számítógépünkben egynél több interfész van, akkor mindig meg kell adnunk ezt a beállítást, mert nincs garancia arra, hogy a Samba elsődleges interfészként a helyeset választja. Végül a bind interfaces only beállítás arra utasítja az nmbd processzt, hogy az interfaces beállításban definiált alhálózatokon kívüli hálózatokról érkező semmilyen más broadcast üzenetet ne fogadjon el. Vegyük észre, hogy ez nem azonos a hosts allow és a hosts deny beállításokkal, amelyek abban akadályozzák a gépeket, hogy kapcsolódhassanak a szolgáltatásokhoz, és nem abban, hogy broadcast üzeneteket kapjanak. A bind interfaces only beállítás az egyik módja annak, hogy megakadályozzuk, hogy a Samba kiszolgáló datagramokat fogadjon idegen
alhálózatokról. Emellett ez a beállítás arra utasítja az smbd processzt, hogy csak az interfaces beállításban felsorolt interfészekhez hozzon létre kötést. Ezzel behatárolja a Samba által kiszolgálható hálózatokat Hálózati beállítások Az előzőekben bemutatott hálózati beállításokat a 4.5 táblázat foglalja össze 4.5 táblázat Hálózati konfigurációs beállítások Beállítás Paraméterek Funkció Alapértelmezett érték Hatókör hosts allow (allow hosts) hosts deny (deny hosts) interfaces Karakterlánc (gazdanevek listája) Azokat a gépeket adja meg, amelyek kapcsolódhatnak a Sambához. nincs Megosztás Karakterlánc (gazdanevek listája) Azokat a gépeket adja meg, amelyek nem kapcsolódhatnak a Sambához. nincs Megosztás Karakterlánc (IP/hálózati maszk kombinációja) Azokat a hálózati interfészeket adja meg, amelyekre a Samba válaszol. Lehetővé teszi az alapértelmezett értékek javítását. Ha yes az értéke,
a Samba csak az interfaces beállításban megadott interfészekhez kötődik. A figyelendő IP címet adja meg arra az esetre, ha több virtuális interfész van a kiszolgálóban. rendszertől függő Globális nincs Globális nincs Globális bind interfaces only socket address Boolean érték Karakterlánc (IP címek) 114 | SAMBA hosts allow A hosts allow beállítás (amelyet időnként allow hosts alakban is írnak) azokat a gépeket adja meg, amelyeknek hozzáférési jogosultságuk van a Samba kiszolgáló megosztásaihoz. A gépeket a nevük vagy az IP címük megadásával, egymástól vesszővel vagy szóközzel elválasztott módon kell felsorolni Némi biztonságot érhetünk el azzal, hogy ebben a beállításban megadjuk a helyi hálózat alhálózati címét. A példánkban ezt a következőképpen tettük meg: hosts allow = 192.168220 localhost Figyeljük meg, hogy az alhálózat cím után a localhost listaelemet is felsoroltuk. A hosts allow
beállítás használatával kapcsolatos egyik gyakori hiba, hogy véletlenül megtiltják, hogy a Samba kiszolgáló önmagával kommunikáljon. Az smbpasswd programnak viszont esetenként ügyfélként kell kapcsolódnia a Samba kiszolgálóhoz annak érdekében, hogy módosíthassa egy felhasználó titkosított jelszavát. Emellett a helyi tallózás továbbadása is igényli a localhost elérést. Ha ezt a beállítást engedélyeztük, de a localhost cím nincs megadva, akkor a Samba a titkosított jelszó módosítását kérő, helyileg generált csomagokat figyelmen kívül hagyja, és a tallózás továbbadása nem fog helyesen működni. Ennek elkerülése céljából kifejezetten engedélyezni kell a visszacsatolásos (loopback) címet (vagy a localhost, vagy a 127.001 cím megadásával)* A beállításhoz az alábbi formátumok bármelyike használható: • Gazdanevek, mint például ftp.examplecom • IP címek, mint például 130.639252 • Tartománynevek, amelyek az
előttük álló ponttal megkülönböztethetők az egyedi gazdanevektől. Így például a oracom az oracom tartományba tartozó összes számítógépet jelenti • Hálózatcsoportok, amelyek az @ karakterrel kezdődnek, mint például @printerhosts. A hálózatcsoportok yellow pages/NIS vagy NIS+ programokat futtató rendszerben léteznek Ha a rendszerünk támogatja a hálózatcsoportokat, akkor ehhez kell tartoznia egy leírásnak, amely részletesen ismerteti a használatukat. • Pontra végződő alhálózatok. Így például a 130639 az összes olyan számítógépet jelenti, amelynek a 130.639 számsorozattal kezdődik az IP címe • Az ALL kulcsszó, ami az összes ügyfél számára lehetővé teszi a hozzáférést. • Az EXCEPT kulcsszó, ami után egy vagy több név, IP cím, tartománynév, hálózatcsoport vagy alhálózat következik. Így például a hosts allow = ALL EXCEPT 192168110 beállítással előírhatjuk, hogy a Samba az összes gazdagépnek
engedélyezze a hozzáférést, kivéve a 192.168110 alhálózatba tartozó gépeket (ne feledkezzünk meg a lezáró pontról). Az ALL kulcsszó használata általában rossz ötlet, mert ezzel engedélyezzük, hogy bárki, bármely hálózaton tallózhassa a fájljainkat, akinek sikerült kitalálnia a kiszolgálónk nevét. * A Samba 2.05 verziójától kezdődően a localhost automatikus engedélyezett, kivéve ha kifejezetten nincs tiltva. 4. FEJEZET LEMEZMEGOSZTÁSOK | 115 Figyeljük meg, hogy a hosts allow konfigurációs beállításhoz nem tartozik alapértelmezés szerinti érték, bár alapvetően abból kell kiindulni, hogy abban az esetben, ha egyik beállítás sincs megadva, bármely forrásból engedélyezett a hozzáférés. Továbbá ha ezt a beállítást a [global] szakaszba írjuk be, akkor ez a definiált megosztásokban lévő bármelyik hosts allow beállítást felülírja. hosts deny A hosts deny (vagy másként deny hosts) beállítással azokat a
gépeket adhatjuk meg, amelyeknek nincs jogosultságuk egy megosztás eléréséhez. A gépeket a nevük vagy az IP címük megadásával, egymástól vesszővel vagy szóközzel elválasztott módon kell felsorolni. Az ügyfélgépek megadásához ugyanazokat a formátumokat használhatjuk, mint a hosts allow beállításánál az előbbiekben láttuk. Ha például bármely gép elől el szeretnénk zárni a kiszolgálót, kivéve az examplecom tartományt, akkor a következőt írhatjuk: hosts deny = ALL EXCEPT .examplecom A hosts allow beállításhoz hasonlóan a hosts deny konfigurációs beállításhoz sem tartozik alapértelmezés szerinti érték, bár alapvetően abból kell kiindulni, hogy abban az esetben, ha egyik beállítás sincs megadva, bármely forrásból engedélyezett a hozzáférés. Továbbá ha ezt a beállítást a [global] szakaszba írjuk be, akkor ez a definiált megosztásokban lévő bármelyik hosts deny beállítást felülírja. Ha a gazdagépektől
meg akarjuk tagadni adott megosztások elérését, akkor a konfigurációs fájl [global] szakaszába se a hosts allow, se a hosts deny beállítást ne írjuk be. interfaces Az interfaces beállítás azokat a hálózati címeket sorolja fel, amelyeket a Samba kiszolgáló észlel, és amelyek kéréseire válaszol. Ez a beállítás jól használható olyan esetben, ha a számítógépünk egy vagy több alhálózathoz tartozik. Ha nem használjuk ezt a beállítást, akkor a Samba az indulásakor az elsődleges hálózati interfészt keresi (ami tipikusan az első Ethernet kártya), és úgy konfigurálja magát, hogy csak abban az alhálózatban működjön. Ha a kiszolgáló egynél több alhálózatra van konfigurálva, de nem használjuk ezt a beállítást, akkor a Samba csak az elsőként megtalált alhálózatban fog működni. Ezzel a beállítással kényszeríthetjük ki, hogy a Samba a hálózatunk többi alhálózatát is kiszolgálja. A beállítás értéke egy vagy
több IP cím/alhálózat címpár sorozata lehet, például az alábbiak szerint: interfaces = 192.168220100/2552552550 19216821030/2552552550 Az értéket CIDR formátumú bitmaszkként is megadhatjuk az alábbi módon: interfaces = 192.168220100/24 19216821030/24 A bitmaszkban lévő szám a hálózati maszkban 1-re állított első bitek számát adja meg. Így például a 24 azt jelenti, hogy a bitmaszk első 24 bitje (a 32 közül) 1 értékű, ami egyenértékű a 255.2552550 címmegadással Ehhez hasonlóan a 16 a 25525500 címet, a 8 pedig a 255.000 címet jelenti 116 | SAMBA DHCP kiszolgáló használata esetén előfordulhat, hogy ez a beállítás nem működik helyesen. bind interfaces only A bind interfaces only beállítás segítségével arra kényszeríthetők az smbd és az nmbd processzek, hogy csak az ebben a beállításban megadott címekről érkező SMB kéréseket szolgálják ki. Az nmbd processz normál esetben a 137-es és a 138-as porton az
összes interfészcímhez (0.000) létrehozza a kötést, és így lehetővé teszi a broadcast üzenetek bármely forrásból származó fogadását. Ezt a viselkedését azonban az alábbi beállítással felülírhatjuk: bind interfaces only = yes Ez a beállítás arra utasítja mindkét Samba processzt, hogy hagyja figyelmen kívül mindazokat a csomagokat, amelyeknek a kiinduló címe nem azonos az interfaces beállításban megadott broadcast címmel (címekkel), beleértve a broadcast csomagokat is. Az smbd processzt illetően ennek a beállításnak az a következménye, hogy a Samba azoknak az alhálózatoknak a fájlkéréseit nem fogja kiszolgálni, amelyek nincsenek felsorolva az interfaces beállításban. Kerülnünk kell ezt a beállítást, ha engedélyezni szeretnénk az olyan, átmeneti hálózati kapcsolatokat, amelyek például SLIP vagy PPP protokollokon keresztül jönnek létre. Erre a beállításra csak nagyon ritka esetben lehet szükség, és akkor is csak
szakembereknek ajánlott a használata. Ha a bind interfaces only beállításhoz a yes értéket rendeljük, akkor az ,,interfaces” listába vegyük fel a localhost címet (127.001) is Ellenkező esetben az smbpasswd nem lesz képes az alapértelmezett módjában kapcsolódni a kiszolgálóhoz, hogy módosítson egy jelszót. socket address A socket address beállítás azt mondja meg, hogy a Samba az interfaces paramétereivel megadott címek közül melyekre figyeljen a kapcsolatok létrejöttekor. A Samba az alapértelmezés szerint specifikált összes címről fogadja a kapcsolatokat. Az smbconf fájlban ezzel a beállítással előírhatjuk, hogy a Samba csak egyetlen IP címre figyeljen Például: interfaces = 192.168220100/24 19216821030/24 socket address = 192.16821030 Ez a beállítás a programozók egyik eszköze, és nem javasoljuk a használatát. 4. FEJEZET LEMEZMEGOSZTÁSOK | 117 Virtuális kiszolgálók A virtuális kiszolgálók segítségével azt a
látszatot kelthetjük, mintha egy hálózaton több NetBIOS kiszolgáló is létezne, miközben a valóságban csak egy van belőlük. Ezt úgy valósíthatjuk meg, hogy egy gépet az IP címéhez kapcsolódóan egynél több NetBIOS névvel jelentjük be. Virtuális kiszolgálók létrehozásának kézzelfogható előnyei vannak A pénzügyi osztálynak lehet például egy szamla nevű kiszolgálója, amelynek az ügyfelei csak a számlázassal kapcsolatos meghajtókat és nyomtatókat látják. Ehhez hasonlóan a marketing osztálynak is lehet egy saját, marketing nevű kiszolgálója, amely a vele kapcsolatos jelentéseket tartalmazza, és így tovább. Ugyanakkor (egy nyugodtabb rendszergazdával) elképzelhető, hogy az összes szolgáltatást egyetlen, közepes méretű Unix munkaállomás nyújtja, ahelyett, hogy mindegyik osztálynak saját kisebb kiszolgálója és rendszergazdája lenne A Samba lehetővé teszi, hogy egy Unix kiszolgáló egynél több NetBIOS nevet
használjon. Erre a netbios aliases beállítás szolgál (lásd a 46 táblázatot) 4.6 táblázat A virtuális kiszolgáló konfigurációs beállításai Beállítás Paraméterek Funkció Alapértelmezett érték Hatókör netbios aliases NetBIOS nevek listája További NetBIOS nevek több ,,virtuális” Samba kiszolgáló használatához. Nincs Globális netbios aliases A netbios aliases beállítás segítségével a Samba kiszolgálóhoz egynél több NetBIOS nevet rendelhetünk. Az értéklistában felsorolt mindegyik NetBIOS név megjelenik a tallózó számítógép Network Neighborhood ablakában Amikor azonban bármely ügyfél valamilyen kéréssel fordul a kiszolgálóhoz, mindig ugyanazt a Samba kiszolgálót éri el Ez a beállítás akkor jöhet jól, ha például három osztály adatait továbbítjuk egyetlen, nagy kapacitású lemezmeghajtókkal felszerelt Unix kiszolgálóhoz, és más célokra akarjuk használni a régi NT kiszolgálókat. Ha a három
osztály neve sales, accounting és admin, akkor az alábbi módon úgy állíthatjuk be a Samba kiszolgálót, hogy három különböző kiszolgálónak láttassa magát: [global] netbios aliases = sales accounting admin include = /usr/local/samba/lib/smb.conf%L A 4.7 ábra szemlélteti, hogy mi jelenne meg egy ügyfél Network Neighborhood ablakában Amikor az ügyfél megkísérli a kapcsolat felvételét a Samba kiszolgálóval, megadja annak a kiszolgálónak a nevét, amelyikhez kapcsolódni szeretne – ezt a %L változó teszi lehetővé. Ha a kért kiszolgáló a sales, a Samba a /usr/local/samba/lib/smbconfsales fájlt illeszti be. Ez a fájl globális és megosztásos deklarációkat tartalmazhat kizárólagosan a sales osztályhoz, például a következők szerint: 118 | SAMBA [global] workgroup = SALES hosts allow = 192.16810255 [sales1998] path = /usr/local/samba/sales/sales1998/ . Ebben a példában egyidejűleg a SALES nevet rendeltük a munkacsoporthoz, és
úgy állítottuk be az IP címet, hogy csak a SALES alhálózatból (192.16810) engedélyezzük a kapcsolatokat Emellett megosztásokat is kínálunk specifikusan a sales (kereskedelmi) osztály számára. 4.7 ábra NetBIOS álnevek használata egy Samba kiszolgálón A naplózás konfigurációs beállításai Esetenként szükségünk lehet arra, hogy tájékozódjunk a Samba állapotáról. Ez különösen igaz olyan esetekben, amikor a Samba váratlan műveleteket végez, vagy éppenséggel semmit sem tesz. Az ilyen esetek felderítéséhez át kell néznünk a Samba naplófájljait, hogy pontosan lássuk, mit és miért tett. A Samba naplófájljai tetszésünk szerint szűkszavúak, vagy éppen bőbeszédűek is lehetnek. Az alábbiakban arra látunk példát, milyen lehet a Samba naplófájlja: [1999/07/21 13:23:25, 3] smbd/service.c:close cnum(514) phoenix (192.168220101) closed connection to service IPC$ [1999/07/21 13:23:25, 3] smbd/connection.c:yield connection(40)
Yielding connection to IPC$ [1999/07/21 13:23:25, 3] smbd/process.c:process smb(615) Transaction 923 of length 49 [1999/07/21 13:23:25, 3] smbd/process.c:switch message(448) switch message SMBread (pid 467) [1999/07/21 13:23:25, 3] lib/doscalls.c:dos ChDir(336) dos ChDir to /home/samba 4. FEJEZET LEMEZMEGOSZTÁSOK | 119 [1999/07/21 13:23:25, 3] smbd/reply.c:reply read(2199) read fnum=4207 num=2820 nread=2820 [1999/07/21 13:23:25, 3] smbd/process.c:process smb(615) Transaction 924 of length 55 [1999/07/21 13:23:25, 3] smbd/process.c:switch message(448) switch message SMBreadbraw (pid 467) [1999/07/21 13:23:25, 3] smbd/reply.c:reply readbraw(2053) readbraw fnum=4207 start=130820 max=1276 min=0 nread=1276 [1999/07/21 13:23:25, 3] smbd/process.c:process smb(615) Transaction 925 of length 55 [1999/07/21 13:23:25, 3] smbd/process.c:switch message(448) switch message SMBreadbraw (pid 467) A fenti információk nagy részét csak a Samba programozói használják. Ennek ellenére
néhány bejegyzés jelentésére a ,,Hibakeresés a Sambában” című 9. fejezetben részletesen is kitérünk A Samba hat beállítás segítségével teszi lehetővé a felhasználók számára, hogy meghatározzák, hová íródjanak be a bejelentkezési információk. E beállítások mindegyike globális, és a megosztás definícióján belül nem jelenhetnek meg Az alábbiak egy frissített konfigurációs fájlra mutatnak példát, amely az eddigiekben látott összes megosztást és bejelentkezési beállítást tartalmazza: [global] netbios name = HYDRA server string = Samba %v on (%I) workgroup = SIMPLE # Networking configuration options hosts allow = 192.168220 134213233 localhost hosts deny = 192.168220102 interfaces = 192.168220100/2552552550 134.213233110/2552552550 bind interfaces only = yes # Debug logging information log level = 2 log file = /var/log/samba.log%m max log size = 50 debug timestamp = yes [data] path = /home/samba/data browseable = yes guest ok = yes
comment = Data Drive volume = Sample-Data-Drive writeable = yes 120 | SAMBA Az előző fájlba felvettünk egy egyéni naplófájlt (log file), ami a 2-es hibakeresési szintig fogja tartalmazni az információkat. Ez viszonylag szűkszavú hibakeresési szintet jelent A hibakeresési szintek 1 és 10 között lehetnek – az 1-es szint csak nagyon kevés információt rögzít, míg a 10-es szint rengeteg, alacsony szintű információt nyújt. A 2-es szint tekinthető olyan fokúnak, ami hasznos a hibakereséshez, de nem foglal el túlságosan sok helyet a kiszolgáló merevlemezén. A gyakorlatban 3-nál magasabb szintet nem célszerű használnunk, hacsak nem programozni akarjuk a Sambát A naplófájl a log file konfigurációs beállításának megfelelően a /var/log könyvtárba kerül. Ehelyett azonban egy változót is használhatunk, amelynek segítségével megadhatjuk, hogy a naplófájlok kifejezetten az egyedi felhasználóknak vagy ügyfeleknek megfelelő
könyvtárakba kerüljenek Ehhez az %m változót kell használnunk a következő sorban: log file = /usr/local/logs/samba.log%m Az egyes naplófájlok egymástól való elkülönítése felbecsülhetetlen jelentőségű lehet egy hálózati hiba keresésekor, ha tudjuk, hogy a problémát egy adott számítógép vagy felhasználó okozza. Még egy megszorítást tettünk a naplófájlokra: egyikük mérete sem haladhatja meg az 50 kilobájtot, amint ezt a max log size beállításban előírtuk. Ha a naplófájl mérete túllépné ezt a határt, akkor a tartalma átkerülnek egy azonos nevű, old kiterjesztésű fájlba Ha ez az .old fájl már létezne, akkor felülíródna a tartalma, és a régi tartalma elveszne Az eredeti naplófájl tartalma törlődik, és várja az új naplóbejegyzéseket. Ilyen módon elejét vehetjük annak, hogy a démonok élete során túlterheljük a merevlemezt a Samba naplófájljaival. Kényelmi okokból úgy határoztunk, hogy a debug timestamp
beállítással meghagyjuk a naplófájlokban a hibakeresés időbélyegét, ami egyébként az alapbeállítás. Ez a beállítás a naplófájl minden egyes bejegyzése mellé elhelyez egy időbélyeget Ha erre az adatra nem lenne szükségünk, akkor egyszerűen rendeljük a no értéket ehhez a beállításhoz A syslog használata Ha a Samba standard naplófájlja mellett vagy helyett a rendszernaplózót (syslog) akarjuk használni, akkor erre is megvannak a megfelelő beállítások. Ahhoz azonban, hogy használni tudjuk a syslog naplózót, meg kell győződnünk arról, hogy a Sambát előzőleg a configure – with-syslog beállítással építettük fel A Samba konfigurálásával és lefordításával kapcsolatban a 2 fejezetben olvashattunk részleteket Miután ezt megtettük, úgy kell konfigurálnunk az /etc/syslog.conf fájlt, hogy fogadja a naplózási információkat a Sambától. Ha még nem lenne egy daemon* bejegyzés az /etc/syslog.conf fájlban, akkor vegyük fel
bele a következő sort: daemon.* /var/log/daemon.log Ez a sor azt írja elő, hogy a rendszer démonjaitól származó naplózási információkat a /var/log/daemon.log fájl tárolja A Samba információit is ez a fájl tárolja Innen kiindulva az alábbi globális beállítást adhatjuk meg a konfigurációs fájlban: syslog = 2 4. FEJEZET LEMEZMEGOSZTÁSOK | 121 Ezzel azt írjuk elő, hogy az 1-es szintű naplóüzenetek mind a syslog, mind a Samba naplófájljaiba beíródjanak. (A syslog prioritásairól a ,,syslog” című következő fejezetrészben lesz szó) Tegyük fel, hogy a szokásos naplózási szintet 4-nél nagyobbra állítottuk be Ekkor a 2-es, a 3-as és a 4-es szintű naplóüzenetek a Samba naplófájljaiba, és nem a syslog rendszernaplózóra kerülnek. Csak az 1-es szintű naplóüzenetek kerülnek be mindkét típusú naplófájlba. Ha a syslog beállítás értéke nagyobb a log level beállítás értékénél, akkor semmi sem íródna a syslog
rendszernaplózóra. Ha azt szeretnénk, hogy az üzenetek csak a syslog rendszernaplóba kerüljenek be, a Samba standard naplófájljaiba viszont ne, akkor a következő bejegyzést helyezzük el a konfigurációs fájlba: syslog only = yes Ebben az esetben a syslog beállításban megadott szint fölötti naplóinformációk figyelmen kívül maradnak, akárcsak a log level beállításé. Naplózási konfigurációs beállítások A 4.7 táblázat felsorolja a Sambában használható naplózási konfigurációs beállításokat 4.7 táblázat Naplózási konfigurációs beállítások Beállítás Paraméterek Karakterlánc (a fájlnév teljes elérési útja) log level Numerikus (debug (0-10) level) log file max log size Numerikus (KB-ban megadva) debug Boolean érték timestamp (timestamp logs) Funkció Alapértelmezett érték Hatókör Megadja a Samba által használt naplófájl nevét és helyét. A standard változók használhatók. Megadja a naplófájlba
kerülő naplózási/hibakeresési üzenetek mennyiségét. 0nál nincs üzenet, a 3-as szint elfogadható mennyiség. Megadja a naplófájl maximális méretét. Ha a naplófájl meghaladja ezt a méretet, az old kiterjesztést kapja, és új naplófájl jön létre Ha no az értéke, a naplófájlba nem kerül időbélyeg, és könnyebben olvasható sok hiba esetén. A Samba makefájlban megadva. Globális 1 Globális 5000 Globális yes Globális 122 | SAMBA 4.7 táblázat folytatása Beállítás Paraméterek Funkció Alapértelmezett érték Hatókör syslog Numerikus (0-10) 1 Globális syslog only Boolean érték Megadja a syslog rendszernaplózóra küldendő üzenetek szintjét. A syslog alatti szintek a rendszernaplóba kerülnek. Ha yes az értéke, akkor csak rendszernapló készül, és semmi sem kerül a Samba standard naplófájljaiba. no Globális log file A kiszolgálónkon a Samba a naplóinformációkat a home könyvtárának var
alkönyvtárában levő szöveges fájlokba küldi, amint ezt a lefordításakor a make-fájl beállította. A log file beállítás segítségével új helyet és nevet választhatunk a naplófájl számára. Ha például a Samba naplófájljának a sambalog nevet akarjuk adni, és a fájlt a /usr/local/logs/ könyvtárban akarjuk elhelyezni, akkor a következő beállítást használjuk: [global] log file = /usr/local/logs/samba.log Változókat is használhatunk, ha egyedi naplófájlokat akarunk létrehozni az egyes felhasználók vagy ügyfelek számára. Bármelyik démon indításakor az -l parancssori kapcsolóval felülbírálhatjuk a naplófájl alapértelmezés szerinti helyét. Ez azonban nem bírálja felül a log file beállítást Ha használjuk ezt a beállítást, az induláskori naplóinformációk az -l kapcsoló után megadott fájlba (vagy a Samba make-fájljában megadott alapértelmezett fájlba) kerülnek mindaddig, amíg a démonok nem dolgozzák fel az
smb.conf fájlt, és nem tudják, hogy az információkat új naplófájlba kell átirányítaniuk log level A log level beállítással a naplózandó adatok mennyiségét szabályozhatjuk. Normál esetben ehhez a 0 vagy az 1 értéket rendeljük Ha viszont egy különleges problémának kell utánajárnunk, a 3-as értéket is használhatjuk, ami a leghasznosabb információkat szolgáltatja egy probléma gyökerének megkereséséhez. A 3-as fölötti szinteket elsősorban a programfejlesztők használják a belső hibák feltárásához, ami jelentősen lelassítja a kiszolgáló működését. Ezért a 3-as és az e fölötti szintek beállítása nem ajánlott [global] log file = /usr/local/logs/samba.log%m log level = 3 4. FEJEZET LEMEZMEGOSZTÁSOK | 123 max log size A max log size beállítás segítségével a Samba által kezelt hibakereső naplófájlok maximális méretét állíthatjuk be kilobájtokban. Ha a naplófájl mérete meghaladja ezt az értéket, az
aktuális naplófájl tartalma átkerül egy azonos nevű, old kiterjesztésű fájlba (az előzőleg létezett ilyen nevű és kiterjesztésű fájl tartalma törlődik), és új naplófájl készül az eredeti névvel. Például: [global] log file = /usr/local/logs/samba.log%m max log size = 1000 Ezt a beállítást használva, ha bármelyik naplófájl mérete meghaladja az 1 megabájtot, a Samba a samba.log naplófájlt a számítógépnévold névre nevezi át, és új naplófájlt generál Ha korábban volt már egy hasonló nevű, old kiterjesztésű fájl, akkor a Samba törli azt Nagyon ajánlott a konfigurációs fájlokban ennek a beállításnak a használata, mert a hibakereső naplózások (akár még alacsonyabb szinten is) elfogyaszthatják a merevlemezen rendelkezésre álló lemezterületet. Ezt a beállítást használva megóvhatjuk az elővigyázatlan rendszergazdákat attól, hogy egyszer csak rádöbbenjenek arra, hogy a lemezterület nagy részét egyetlen
Samba naplófájl foglalja el. debug timestamp vagy timestamp logs Ha éppen egy hálózati probléma elhárításán dolgozunk, és úgy gondoljuk, hogy útban vannak a Samba naplóbejegyzései előtt álló dátum- és időbélyegek, akkor kikapcsolhatjuk ezeket, ha akár a timestamp logs, akár a debug timestamp beállításhoz (ezek egymás szinonimái) a no értéket rendeljük. Egy szokásos Samba naplófájlba például az alábbi kimenet kerülhet: 12/31/98 12:03:34 hydra (192.168220101) connect to server network as user davecb Ha viszont ehhez a beállításhoz a no értéket rendeljük, akkor a kimenet dátumbélyeg vagy időbélyeg nélkül jelenhet meg: hydra (192.168220101) connect to server network as user davecb syslog A syslog beállítás hatására a Samba naplóüzenetei a Unix rendszernaplózó démonjára kerülnek. A küldendő naplóinformációk típusát paraméterrel adhatjuk meg A log level beállításhoz hasonlóan ennek is 1 és 10 között lehet az
értéke. A megadott számnál alacsonyabb szintű naplóinformációk a rendszernaplóba kerülnek. A syslog beállításban megadott szinttel azonos vagy annál magasabb szintű naplóinformációkat a Samba standard naplófájljai fogják tartalmazni. Ha ezt meg akarjuk akadályozni, akkor a syslog only beállítást használjuk. Például: 124 | SAMBA [global] log level = 3 syslog = 1 Ezt a beállítást megadva a 0-ás szintű naplóinformációk mind a standard, mind a rendszernaplóba bekerülnek, míg az 1-es, 2-es és 3-as szintű információk csak a standard naplófájlokba. A 3-asnál magasabb szintű információk egyáltalán nem lesznek naplózva Figyeljük meg, hogy a rendszernaplózóra küldött üzenetek a syslog processzeknek megfelelő, különböző prioritási szintű naplókba kerülnek, amint ez a 4.8 táblázatban látható Az alapértelmezés szerinti szint értéke 1. 4.8 táblázat A syslog naplóprioritásai Log Level A syslog prioritásai 0 1 2
3 4 és e fölött LOG ERR LOG WARNING LOG NOTICE LOG INFO LOG DEBUG Ha használni akarjuk a syslog rendszernaplózót, akkor a configure --with-syslog beállítást kell használnunk a Samba lefordításához, és ennek megfelelően kell konfigurálnunk az /etc/syslog.conf fájlt (lásd ,,A syslog használata” című előző fejezetrészt) syslog only A syslog only beállítás arra utasítja a Sambát, hogy a naplózáshoz csak a rendszernaplózó démont használja. Ha ezt szeretnénk, akkor a Samba konfigurációs fájljának [global] szakaszában helyezzük el a következő bejegyzést: [global] syslog only = yes Tallózás és a lemezmegosztások folytatása Ebben a fejezetben folytatjuk a lemezmegosztásokról az előző fejezetben elkezdett fejtegetéseinket. Megismerkedünk a Windows és a Unix fájlrendszerei közötti különbségekkel, és látni fogjuk, miképpen hidalja át ezeket a Samba Meglepődve fogjuk tapasztalni, hogy mennyi eltérés van a DOS és a Unix
fájlrendszere között. Emellett röviden szólunk a névzsugorításról, a fájlok zárolásáról és a Samba egyik viszonylag új képességéről, az ,,opportunista” zárolásról. Mielőtt azonban elmerülnénk ezekbe a részletekbe, ismerkedjünk meg egy valamelyest misztikus témával, nevezetesen a tallózással Tallózás A tallózás ebben az összefüggésben azt a tevékenységet jelenti, hogy megvizsgáljuk, milyen kiszolgálók és megosztások találhatók a hálózaton. A Windows NT 40 vagy Windows 95/98 operációs rendszert használó felhasználók a Network Neighborhood (Hálózat) ablakban tallózhatják a hálózat kiszolgálóit. A kiszolgálót jelképező ikonra kettőt kattintva azt is megnézhetik, hogy az adott kiszolgálón milyen nyomtató- és lemezmegosztások érhetők el A Windows parancssorába a net view parancs beírásával is megnézhetjük, milyen kiszolgálók érhetők el a hálózaton. A parancs hatására például az alábbi eredményt
kaphatjuk: C:>net view Servers available in workgroup SIMPLE Server name Remark ----------------------------------------------------\CHIMAERA Windows NT 4.0 \HYDRA Samba 2.04 on (hydra) \PHOENIX Windows 98 A tallózás letiltása A browseable beállítás segítségével kizárhatunk egy megosztást a tallózólistából. Az ilyen módon kizárt megosztás egyáltalán nem jelenik meg a Network Neighborhood ablakában. Ha például azt szeretnénk, hogy az előző fejezetben használt [data] megosztás ne legyen látható, akkor a következőket kell beírnunk: 126 | SAMBA [data] path = /home/samba/data browseable = no guest ok = yes comment = Data Drive volume = Sample-Data-Drive writeable = yes Bár egy megosztást feltehetően nem azért hozunk létre, hogy elrejtsük a felhasználók előtt, bizonyos esetekben mégis jól jön ez a lehetőség. Készíthetünk például egy [netlogin] megosztást, amelyben a Windows tartományvezérlőinek bejelentkezési szkriptjeit
akarjuk tárolni (a bejelentkezési szkriptekről további információk a ,,Felhasználók, biztonság és tartományok” című 6. fejezetben olvashatunk) Másik példa lehet erre a [homes] megosztás. Ezt a megosztást gyakran nem tallózhatónak állítják be, úgyhogy ez nem jelenik meg, amikor a felhasználó az ezt a megosztást tartalmazó gépet tallózza. Ha viszont egy alice nevű felhasználó bejelentkezik, és tallózza a gépet, az illető gép helyett egy [alice] megosztás fog megjelenni. Hogyan érhetnénk el, hogy minden ügyfél előtt megjelenjen ez a megosztás, mielőtt még az alice nevű felhasználó bejelentkezne? A megoldás a globális auto service beállítás. Ez a beállítás előre betölti a megosztásokat egy tallózólistába, hogy mindig láthatók legyenek a megosztások: [global] . auto services = alice . Alapértelmezett szolgáltatások Arra az esetre, ha egy felhasználó nem tudna sikeresen kapcsolódni egy megosztáshoz, megadhatunk egy
alapértelmezett megosztást, amelyhez mindig tud kapcsolódni. Miután nem tudhatjuk, hogy egy adott időben éppen ki akarja használni ezt a megosztást, vegyük fel hozzá a guest ok = yes beállítást. Egy default service (alapértelmezett szolgáltatás) specifikálása akkor lehet hasznos, ha valakinek végső segítségként egy súgófájlt akarunk a rendelkezésére bocsátani Például: [global] . default service = helpshare . [helpshare] path = /home/samba/helpshare/%S browseable = yes guest ok = yes comment = Alapértelmezett megosztás sikertelen kapcsolatnál volume = Sample-Data-Drive writeable = no 5. FEJEZET TALLÓZÁS ÉS A LEMEZMEGOSZTÁSOK FOLYTATÁSA | 127 Figyeljük meg, hogy a path beállításban a %S változót használtuk. Ez a változó a kért, de nem létező megosztásra hivatkozik (a felhasználó által kért eredeti megosztásra), és nem az eredményül kapott alapértelmezett megosztásra. Így lehetőségünk van arra, hogy az egyes
kiszolgálók nevével különböző elérési utakat definiáljunk, és így egyénre szabott súgófájlokat bocsássunk a felhasználók rendelkezésére. Emellett a %S változó azt is lehetővé teszi, hogy a kért megosztásban lévő aláhúzásjelek ( ) törtvonallá (/) alakuljanak át Tallózó kiválasztása Amint az 1. fejezetben említettük, mindegyik alhálózatban van egy számítógép, amelyik listát vezet az éppen aktív gépekről. Ezt a listát tallózólistának nevezzük, a listát vezető kiszolgálónak pedig helyi főtallózó a neve. Amint különböző gépek rákapcsolódnak a hálózatra vagy lekapcsolódnak róla, a helyi főtallózó folyamatosan frissíti a tallózólistát, és kérésre bármelyik gép rendelkezésére bocsátja. A helyi alhálózatban a tallózó kiválasztásának eredményétől függően lehet egy számítógép a helyi főtallózó. A tallózó kiválasztása bármikor kikényszeríthető A Samba különböző módon képes a
választási eredmény ,,meghamisítására”, beleértve azt is, hogy az adott alhálózatban mindig ő legyen a helyi főtallózó, vagy éppenséggel sohase legyen az. Így például az alábbi beállításokkal, amelyekkel a 4. fejezetben használt konfigurációs fájlt egészítjük ki, biztosíthatjuk, hogy a Samba mindig megnyerje a helyi főtallózó szerepéért folytatott versenyt, függetlenül attól, hogy milyen más gépek vannak még a hálózatban: [global] netbios name = HYDRA server string = Samba %v on (%L) workgroup = SIMPLE # A tallózó kiválasztás beállításai os level = 34 local master = yes # A hálózat konfigurációs beállításai hosts allow = 192.168220 134213233 localhost hosts deny = 192.168220102 interfaces = 192.168220100/2552552550 134.213233110/2552552550 # Naplózás log level = 2 log file = /var/log/samba.log%m max log size = 50 debug timestamp = yes [data] path = /home/samba/data browseable = yes 128 | SAMBA guest ok = yes comment =
Data Drive volume = Sample-Data-Drive writable = yes Mit kell tennünk azonban akkor, ha nem akarjuk mindig megnyerni a választást? Mit kell tennünk, ha azt szeretnénk, hogy egy Windows NT Server legyen a főtallózó, ha rákapcsolódik a hálózatra? Amint tudjuk, minden olyan gépnek, amely részt vesz a versengésben, információkat kell szétküldenie magáról. Ezek az információk a következőket tartalmazzák: • a használt választási protokoll verziója; • a gépen futó operációs rendszer; • az ügyfél által a hálózaton eltöltött idő tartama; • az ügyfél gazdaneve. A verseny a következők szerint dől el. Az operációs rendszerekhez a verziójuktól függően egy-egy bináris érték tartozik az 5.1 táblázat szerint 5.1 táblázat Az operációs rendszerek értékei a választásban Operációs rendszer Érték Windows NT Server 4.0 Windows NT Server 3.51 Windows NT Workstation 4.0 Windows NT Workstation 3.51 Windows 98 Windows 95 Windows
3.1 for Workgroups 33 32 17 16 2 1 1 Ezt követően a hálózathoz kapcsolódó mindegyik számítógéphez még egy másik érték is tartozik a hálózatban betöltött szerepüktől függően (lásd az 5.2 táblázatot) 5.2 táblázat A számítógépek szerepe a választásban Szerep Érték Elsődleges tartományvezérlő WINS ügyfél Preferált főtallózó Aktív főtallózó Készenléti tallózó Aktív biztonsági tallózó 128 32 8 4 2 1 5. FEJEZET TALLÓZÁS ÉS A LEMEZMEGOSZTÁSOK FOLYTATÁSA | 129 A választások a következő sorrendben történnek: 1. A választási protokoll legmagasabb számú verziója győz (Ennek itt még nincs jelentősége, mert az összes Windows ügyfélnek 1-es verziójú a választási protokollja) 2. A legnagyobb értékű operációs rendszert használó számítógép győz 3. Ha egyezőség van, akkor a preferált főtallózó (8-as szerep) gép győz 4. Ha továbbra is van egyezőség, a legrégebben a hálózaton lévő
ügyfélgép győz 5. Ha még mindig van egyezőség, akkor az a gép győz, amelyiknek a neve ábécé sorrendben megelőzi a többi gép nevét 6. Végül a második helyezett gép lesz a tartaléktallózó Ha tehát azt szeretnénk, hogy a Samba legyen a helyi főtallózó, de csak abban az esetben, ha nincs a hálózatban Windows NT Server (4.0 vagy 351), akkor az előző példánkban az os level beállítás értékét a következők szerint módosítsuk: os level = 31 Ennek hatására a Samba azonnal elveszíti a versenyt egy Windows NT 4.0 vagy Windows NT 3.5 Server géppel szemben, mert ezeknek magasabb szintű az operációs rendszerük Másrészt viszont, ha azt akarjuk, hogy a helyi főtallózóért folytatott verseny a gépeknek a hálózaton betöltött szerepe szerint dőljön el, például aszerint, hogy melyikük az elsődleges tartományvezérlő, akkor az os level beállításhoz a hálózat legmagasabb szintű operációs rendszerét rendeljük, és a prioritási
sorrendben szorítsuk a második helyre a választási protokollt. Hogyan tudható meg egy gépről, hogy az helyi főtallózó? Ehhez az nbtstat parancsot kell kiadnunk. A parancs után az -a kapcsolót használva írjuk be a vizsgálandó gép nevét: C:>nbtstat -a hydra NetBIOS Remote Machine Name Table Name Type Status ---------------------------------------------------------HYDRA <00> UNIQUE Registered HYDRA <03> UNIQUE Registered HYDRA <20> UNIQUE Registered . MSBROWSE <01> GROUP Registered SIMPLE <00> GROUP Registered SIMPLE <1D> UNIQUE Registered SIMPLE <1E> GROUP Registered MAC Address = 00-00-00-00-00-00 A keresett erőforrás-bejegyzés az . MSBROWSE <01> Ez jelzi, hogy a kiszolgáló az aktuális alhálózatban éppen a helyi főtallózó szerepét tölti be. Emellett ha ez a gép egyúttal egy Samba kiszolgáló is, az nmbd naplófájlban is kereshetünk egy ehhez hasonló bejegyzést: 130 | SAMBA
nmbd/nmbd become lmb.c:become local master stage2(406) * Samba name server HYDRA is now a local master browser for workgroup SIMPLE on subnet 192.168220100 * Végül az elsődleges tartományvezérlő szerepét betöltő Windows NT kiszolgálók még egy lehetőséget kínálnak arra, hogy bizonyos körülmények között a helyi főtallózó szerepkörében mutatkozzanak meg. Ezt az ún preferált főtallózó bit teszi lehetővé A Samba saját maga is be tudja állítani ezt a bitet, ha a preferred master beállítással engedélyezzük a számára: # A tallózó kiválasztás beállításai os level = 33 local master = yes preferred master = yes Ha a preferált főtallózó bit értéke 1, akkor a gép induláskor kikényszeríti a tallózó kiválasztását. Erre természetesen csak akkor van szükség, ha az os level beállításhoz egy Windows NT gép operációs rendszerét rendeltük. Ennek a beállításnak a használata nem ajánlott, ha más gépek is szerepelhetnek
preferált főtallózóként, mint például egy NT kiszolgáló. Tartomány-főtallózó Ez első fejezetben említettük, hogy ha azt akarjuk, hogy egy Windows munkacsoport vagy tartomány több alhálózatra legyen kiterjeszthető, akkor az egyik gépet tartományfőtallózóvá kell tennünk. A tartomány-főtallózó adja tovább a tallózólistákat a munkacsoport alhálózataiban Ezt azért teheti meg, mert az egyes helyi főtallózók rendszeres időközönként szinkronizálják a tallózólistájukat a tartomány-főtallózóval A szinkronizálás során a helyi főtallózó mindazon kiszolgálóra elküldi a tallózólistáját, amelyet a tartományfőtallózó nem tartalmaz, és fordítva. Így ha minden rendben működik, minden egyes helyi főtallózón rendelkezésre áll a teljes tartományra vonatkozó tallózólista. A helyi főtallózótól eltérően itt nincs olyan versengés, ami eldöntené, hogy melyik gép töltse be a tartomány-főtallózó szerepét. Ezt a
rendszergazdának kézzel kell beállítania A Microsoft-féle megvalósítás szerint azonban mind a tartomány-főtallózó, mind az elsődleges tartományvezérlő (PDC) <1B> típusú erőforrásként regisztrálja magát, vagyis a szerepek és a gépek nem választhatók el egymástól. Ha van a hálózatunkban egy elsődleges tartományvezérlő szerepét betöltő Windows NT kiszolgáló, akkor az javasolható, hogy ne a Samba kiszolgáló legyen a tartomány-főtallózó. Ugyanez fordítva is igaz: ha a Samba venné át az elsődleges tartományvezérlő szerepét, akkor ez legyen a tartomány-főtallózó is Bár a Samba esetében megosztható ez a két szerep, nem célszerű így tenni. Ha két különböző gépet használnánk elsődleges tartományvezérlőként és tartomány-főtallózóként, akkor egy Windows munkacsoportban ebből véletlenszerű hibák adódhatnak. A Samba egy munkacsoport összes alhálózatában betöltheti a tartomány-főtallózó szerepét
a következő beállítás megadásával: domain master = yes 5. FEJEZET TALLÓZÁS ÉS A LEMEZMEGOSZTÁSOK FOLYTATÁSA | 131 Ellenőrizhetjük, hogy ténylegesen a Samba gép a tartomány-főtallózó, ha megvizsgáljuk az nmbd naplófájlt: nmbd/nmbd become dmb.c:become domain master stage2(118) * Samba name server HYDRA is now a domain master browser for workgroup SIMPLE on subnet 192.168220100 * Más eljárásként a Samba disztribúcióhoz tartozó nmblookup parancs segítségével is lekérdezhetjük a munkacsoportban lévő <1B> típusú erőforrást: # nmblookup SIMPLE#1B Sending queries to 192.168220255 192.168220100 SIMPLE<1b> Több alhálózat Három szabályt kell szem előtt tartanunk, amikor egy munkacsoportot/tartományt egynél több alhálózatra terjesztünk ki: • Vagy egy Windows NT, vagy egy Samba gépnek helyi főtallózónak kell lennie a munkacsoport/tartomány minden egyes alhálózatában. • Vagy egy Windows NT, vagy egy Samba gépnek
tartomány-főtallózónak kell lennie valahol a munkacsoportban. • Mindegyik helyi főtallózót utasítani kell arra, hogy szinkronizálja magát a tartományfőtallózóval. A Samba ebben az összefüggésben még néhány más képességgel is rendelkezik arra az esetre, ha nincs, vagy nem akarjuk, hogy legyen egy tartomány-főtallózó a hálózatban. Vegyük szemügyre az 5.1 ábrán látható alhálózatokat: Először is egy helyi főtallózó szerepét betöltő Samba kiszolgáló használhatja a remote announce konfigurációs beállítást, amellyel biztosíthatja, hogy a különböző alhálózatokban lévő számítógépek megkapják a kiszolgálóról küldött broadcast üzeneteket. Ennek köszönhetően a Samba kiszolgáló az idegen alhálózatok tallózólistájában is megjelenik. Ehhez azonban az irányított broadcast üzeneteknek el kell jutniuk a többi alhálózat helyi főtallózójához. Tudjunk arról, hogy számos útválasztó alapbeállítás szerint
nem engedélyezi az irányított broadcast üzeneteket; az útválasztón módosítani kell ezt a beállítást, hogy az üzenetek eljussanak az alhálózatába. A remote announce beállításban soroljuk fel azokat az alhálózatokat és munkacsoportot, ahová a broadcast üzeneteknek el kell jutniuk. Ha például biztosítani akarjuk, hogy a Samba kiszolgálóról az üzenetek eljussanak a 192.168221 és a 192168222 alhálózatokba és a SIMPLE munkacsoportba, akkor a következőképpen adjuk meg a beállítást: # A tallózókiválasztás beállításai os level = 34 local master = yes remote announce = 192.168221255/SIMPLE 192.168222255/SIMPLE 132 | SAMBA 5.1 ábra Samba kiszolgálókat tartalmazó több alhálózat Az üzenetek címzettjének pontos címét is megadhatjuk, ha az idegen hálózatban a helyi főtallózónak garantáltan mindig rögzített az IP címe. Egy Samba helyi főtallózó a tallózólistáját közvetlenül szinkronizálhatja egy másik Samba
kiszolgálóval, amely helyi főtallózóként működik egy másik alhálózatban. Tegyük fel például, hogy a Samba helyi főtallózóként van konfigurálva, és vannak Samba helyi főtallózók a 192.168221130 és a 192168222120 alhálózatokban Ekkor a remote browse sync beállítás segítségével közvetlenül szinkronizálhatók a Samba kiszolgálók a következők szerint: # A tallózókiválasztás beállításai os level = 34 local master = yes remote browse sync = 192.168221130 192168222120 Ahhoz, hogy ez a beállítás működjön, a többi Samba gépnek is helyi főtallózónak kell lennie. Ezzel a beállítással irányított broadcast üzenetek is küldhetők, ha nem ismerjük a helyi főtallózók IP címét. Tallózási beállítások Az 5.3 táblázat 14 olyan beállítást sorol fel, amelyek segítségével meghatározhatjuk, miként kezelje a Samba a tallózási feladatokat. Javasolható az alapértelmezett értékek megtartása, ha meg akarjuk könnyíteni a
felhasználóknak a megosztások és a nyomtatók megtalálását. 5. FEJEZET TALLÓZÁS ÉS A LEMEZMEGOSZTÁSOK FOLYTATÁSA | 133 5.3 táblázat A tallózás konfigurációs beállításai Beállítás Paraméterek Funkció Alapértelmezett érték Hatókör announce as NT vagy Win95 vagy WfW Numerikus Megadja, hogy a Samba milyen operációs rendszerként jelentse be magát. Megadja annak az operációs rendszernek a verziószámát, amilyen rendszerként a Samba bejelentette magát. Engedélyezi a megosztás megjelentését a gépi erőforrások listájában. NT Globális 4.2 Globális yes Megosztás yes Globális nincs Globális nincs Globális yes Globális auto Globális 60 Globális no Globális no Globális 0 Globális announce version browseable (browsable) browse list Boolean érték Boolean érték auto Karakterlánc services (megosztások (preload) listája) default Karakterlánc service (megosztás (default) neve) local master
Boolean érték lm announce yes, no vagy auto lm interval Numerikus preferred Boolean érték master (prefered master) domain Boolean érték master os level Numerikus Ha yes az értéke, a Samba megjeleníti azon a kiszolgálón a tallózólistát. Megadja azoknak a megosztásoknak a listáját, amelyek mindig megjelennek a tallózólistában. Megnevezi azt a megosztást (szolgáltatást), ami akkor jelenik meg, ha az ügyfél egy, az smb.conf fájlban nem felsorolt megosztást kér. Ha yes az értéke, a Samba megpróbál főtallózóvá válni a helyi alhálózatban. Engedélyezi vagy tiltja a LAN Manager stílusú gazdabejelentkezést. Megadja másodpercekben azt a gyakoriságot, amellyel a LAN Manager bejelentkezés megtörténhet, ha aktív. Ha yes az értéke, a Samba a preferált főtallózó bitet használja arra, hogy helyi főtallózó lehessen. Ha yes az értéke, a Samba megpróbál főtallózó lenni a munkacsoportban. Megadja a Samba operációs rendszerének
szintjét a helyi főtallózóvá való választásához. 134 | SAMBA 5.3 táblázat folytatása Beállítás Paraméterek Funkció Alapértelmezett érték Hatókör remote browse sync Karakterlánc (IP címek listája) nincs Globális remote announce Karakterlánc (IP cím / munkacsoport párok) Felsorolja azokat a Samba kiszolgálókat, amelyekkel szinkronizálni kell a tallózólistákat. Felsorolja azokat az alhálózatokat és munkacsoportokat, amelyekre el kell küldeni az irányított broadcast csomagokat, hogy a Samba megjelenhessen a tallózólistákban. nincs Globális announce as Ez a globális konfigurációs beállítás azt az operációs rendszert jelzi, amelyet a Samba a hálózaton lévő több gép számára önmagáról bejelent. A beállítás alapértelmezés szerinti értéke NT, ami a Windows NT operációs rendszert jelenti. Más lehetséges érték a Win95, ami a Windows 95, és a WfW, ami a Windows for Workgroups operációs rendszert
jelenti. Az alapértelmezés szerinti értéket az alábbi módon írhatjuk felül: [global] announce as = Win95 Ennek a konfigurációs beállításnak nem javasolt a módosítása. announce version Ezt az ugyancsak globális hatókörű beállítást gyakran az announce as beállítással együtt használják; ez annak az operációs rendszernek a verziószámát adja meg, amelyet a Samba a hálózaton lévő többi gép számára önmagáról jelentett. A beállítás alapértelmezett értéke 4.2, ami az aktuális Windows NT 40-s verziójánál magasabb szintet jelent A beállításhoz ennél nagyobb értéket is rendelhetünk: [global] announce version = 4.3 Ebben az esetben sem javasoljuk az alapértelmezés szerinti érték megváltoztatását. browseable A browseable beállítás (ami browsable formában is írható) segítségével azt írhatjuk elő, hogy a hivatkozott megosztás megjelenjen-e annak a gépnek az elérhető erőforrásai között, amelyen maga a megosztás
található. Alapértelmezés szerint ennek a beállításnak mindig yes az értéke. Ha azt szeretnénk, hogy egy megosztás ne jelenjen meg egy ügyfél tallózójában, akkor a no értéket rendeljük hozzá. 5. FEJEZET TALLÓZÁS ÉS A LEMEZMEGOSZTÁSOK FOLYTATÁSA | 135 Jegyezzük meg, hogy ezzel nem akadályozhatjuk meg azt, hogy valaki más eszközökkel, például a Windows Intézőjében egy UNC helymegadással (\serveraccounting) ne férhessen hozzá a megosztáshoz. A beállítással mindössze azt tilthatjuk meg, hogy tallózáskor a megosztás ne jelenjen meg a gép erőforrásai között browse list Sohasem lesz szükségünk arra, hogy ennek a beállításnak az alapértelmezett yes értékét megváltoztassuk. Ha a Samba kiszolgáló szerepel helyi főtallózóként (vagyis ez nyerte meg a választási versenyt), akkor a globális browse list beállítás segítségével utasíthatjuk arra a Sambát, hogy az ügyfelek rendelkezésére bocsássa-e a
tallózólistát, vagy sem. Alapbeállítás szerint a Samba mindig felkínálja a tallózólistát. Ezt az alapbeállítást az alábbi módon változtathatjuk meg: [global] browse list = no Ha letiltjuk a tallózólista megjelenítését, akkor az ügyfelek nem tallózhatják a hálózathoz aktuálisan kapcsolódó többi gép nevét, a szolgáltatásaikat és a tartományokat. Jegyezzük meg azonban, hogy ezzel egyetlen gépet sem tehetünk elérhetetlenné: ha valaki ismeri egy számítógép érvényes nevét/címét, és egy adott megosztást az illető gépen, akkor a NET USE segítségével vagy a Windows Intézőjében egy meghajtó-azonosító leképzésével kapcsolódhat hozzá. A beállítással mindössze azt akadályozhatjuk meg, hogy az ügyfelek előtt megjelenjen a tallózólista. auto services A globális auto services beállítás, ami preload néven is ismeretes, biztosítja, hogy a megadott megosztások mindig megjelenjenek a tallózólistában. Ezt a
beállítást gyakran használják arra, hogy a [homes] vagy a [printers] megosztásokkal létrehozott meghatározott felhasználói vagy nyomtatómegosztások megjelenjenek, de egyéb módon ne legyenek tallózhatók. A beállítás leginkább lemezmegosztásokkal együtt használható. Ha azt szeretnénk, hogy ezt a beállítást használva a rendszernyomtatók (vagyis a nyomtatóbeállításokat tartalmazó fájlban felsorolt nyomtatók) megjelenjenek a tallózólistában, akkor ehelyett a load printers beállítást használjuk. Az auto services beállításban felsorolt egyik megosztás sem listázódik ki, ha a browse list beállításhoz a no érték van rendelve. default service A globális default service beállítással (amelynek esetenként default a neve) az ,,utolsó mentsvárnak” tekinthető megosztás adható meg. Ha létező megosztás neve van ehhez a beállításhoz rendelve, és egy ügyfél egy nem létező lemez- vagy nyomtatómegosztáshoz akar hozzáférni,
akkor a Samba ehelyett az itt megnevezett megosztáshoz hozza létre a kapcsolatot. A beállítás a következőképpen használható: default service = helpshare Figyeljük meg, hogy a megosztás helpshare neve nem áll szögletes zárójelek között, jóllehet a Samba konfigurációs fájljában a definiálásakor alkalmazni kell ezt a zárójelezést. 136 | SAMBA Továbbá ha ebben a beállításban megadott megosztásban a %S változót használjuk, a változó a kért, nem létező megosztást, nem pedig az alapértelmezett szolgáltatást fogja jelenteni. Emellett a %S változó azt is lehetővé teszi, hogy a kért megosztásban lévő aláhúzásjelek ( ) törtvonallá (/) alakuljanak át local master Ezzel a globális beállítással azt írhatjuk elő, hogy vegyen-e részt a Samba a helyi főtallózóért folytatott versenyben. Ha a beállításhoz a yes értéket rendeljük, a Samba részt vesz a versenyben. Ez azonban önmagában még nem garantálja a győzelmet
(Más beállítások, így a preferred master és az os level segíthetik a Samba győzelmét.) Ha a beállításhoz a no értéket rendeljük, a Samba minden versenyben alulmarad, függetlenül attól, hogy milyen értéket rendelünk a többi beállításhoz. A beállítás alapértelmezett értéke a yes lm announce Az lm announce globális beállítás azt közli a Samba nmbd démonjával, hogy küldjön-e LAN Manager gazdabejelentkezéseket a kiszolgáló megbízásából vagy sem. Ilyen gazdabejelentkezésekre a régebbi ügyfélgépeknek, például az IBM OS/2 operációs rendszerét futtató gépeknek lehet szükségük. Ez a bejelentkezés lehetővé teszi, hogy a kiszolgáló bekerüljön az ügyfélgép tallózólistájába. Ha a beállításnak yes az értéke, a Samba az lm interval beállításban megadott gyakorisággal, ismétlődően bejelentkezik. A beállítás a standard Boolean értékeket, vagyis a yes vagy a no értéket veheti fel, és így vagy engedélyezi,
vagy tiltja a LAN Manager bejelentkezéseket. Ezen alapértékek mellett azonban még egy harmadik, auto értéket is felvehet, mely esetben az nmbd passzívan figyel a LAN Manager bejelentkezésekre, de a maga részéről nem kezdeményez ilyeneket. Ha a hálózaton lévő más gépek észlelik a LAN Manager bejelentkezéseket, az nmbd a maga részéről is megkezdi a LAN Manager bejelentkezések küldését, hogy biztosítsa a láthatóságát. A beállítást az alábbi módon adhatjuk meg: [global] lm announce = yes A beállítás alapértelmezett értéke az auto. Feltehetően sohasem kell megváltoztatnunk ezt az értéket. lm interval Ezzel az lm announce beállítással együtt használandó beállítással azon időtartam másodpercekben mért hosszát adhatjuk meg, ameddig az nmbd arra vár, hogy újra kiküldje a LAN Manager-féle bejelentkezéseket. Ne feledjük, hogy ennek a beállításnak csak akkor van értelme, ha előzőleg aktivizáltuk a LAN Manager
bejelentkezéseket. Az időtartam alapbeállítás szerinti hossza 60 másodperc Ha 0 értéket adunk meg, a Samba semmilyen LAN Manager bejelentkezést nem küld ki, bármilyen értéket tartalmazzon is az lm announce beállítás. Az alapbeállítás a következőképpen változtatható meg: [global] lm interval = 90 5. FEJEZET TALLÓZÁS ÉS A LEMEZMEGOSZTÁSOK FOLYTATÁSA | 137 preferred master A preferred master beállítás igényli, hogy a Samba 1-es értékre állítsa a preferált mesterbit értékét, amikor részt vesz a tallózásért folyó versenyben. Ezzel a kiszolgáló preferált helyzetbe kerül a munkacsoport többi, azonos szintű operációs rendszert futtató gépéhez képest. Ha a Samba gépet úgy konfiguráljuk, hogy az legyen a helyi főtallózó, akkor célszerű az alábbi beállítás használata: [global] preferred master = yes Más esetben meghagyhatjuk a beállítás alapértelmezett no értékét. Ha a Samba preferált főtallózóként van
konfigurálva, akkor a hálózatra kapcsolódásakor kikényszeríti a választási versenyt. os level Az os level globális beállítással azt adhatjuk meg, hogy a Samba milyen operációs rendszert jelentsen be magáról a tallózó kiválasztásakor. Ha azt szeretnénk, hogy a Samba megnyerje a választást és főtallózóvá váljon, akkor a hálózatban részt vevő operációs rendszerek legmagasabb értékénél nagyobb értéket állítsunk be Az alapértelmezett értékeket az 5.1 táblázat tartalmazza A beállítás alapértelmezett értéke 0, ami azt jelenti, hogy a Samba az összes választást elveszti. Ha azt szeretnénk, hogy a Samba minden választást megnyerjen, akkor a következő beállítást válasszuk: os level = 34 Ez azt jelenti, hogy a kiszolgáló minden egyes választáskor 34-szer fog magára szavazni, ami biztosítja a győzelmét. domain master Ha a munkacsoportban vagy az NT tartományban a Samba az elsődleges tartományvezérlő, akkor
célszerűen ez legyen a tartomány-főtallózó is. Az a gép a tartomány-főtallózó, amelyiknek <1B> a NetBIOS erőforrástípusa, és amely a tartomány alhálózataiban lévő helyi főtallózók felé továbbítja, illetve azoktól megkapja a tallózólistákat. Ha ki szeretnénk kényszeríteni, hogy a Samba tartomány-főtallózó legyen, akkor az smb.conf fájl [global] szakaszába vegyük fel a következő bejegyzést: [global] domain master = yes Ha a hálózatban van olyan Windows NT gép, amely az elsődleges tartományvezérlő (PDC) szerepét tölti be, akkor nem ajánlható, hogy a Samba legyen a tartomány-főtallózó. Ennek a fordítottja is igaz: Ha a Samba az elsődleges tartományvezérlő, akkor ez legyen a tartomány-főtallózó is. Ha két különböző gépre osztjuk szét az elsődleges tartományvezérlő és a tartomány-főtallózó szerepét, akkor ebből előre nem látható problémák adódhatnak a hálózaton 138 | SAMBA remote browse
sync A globális remote browse sync beállítással azt írhatjuk elő, hogy a Samba szinkronizálja a tallózólistáit a többi alhálózat helyi főtallózóival. Ez a szinkronizálás azonban csak Samba kiszolgálókkal végezhető el, Windows számítógépekkel nem. Ha például egy Samba kiszolgáló főtallózó van a 192.168235 alhálózatban, és a 19216823492, valamint a 192.1682362 alhálózatokban Samba helyi főtallózók vannak, akkor a következő beállítást használhatjuk: remote browse sync = 192.16823492 1921682362 Ebben az esetben a Samba kiszolgáló közvetlenül kapcsolatba léphet a címlistában megadott gépekkel, és elvégezheti a tallózólisták szinkronizálását. A következő beállítást is használhatjuk: remote browse sync = 192.168234255 192168236255 Ezzel arra kényszerítjük a Sambát, hogy broadcast lekérdezéssel állapítsa meg az alhálózatokban lévő helyi főtallózók IP címét, és azokkal szinkronizálja a tallózólistákat.
Ez a beállítás azonban csak akkor használható, ha az útválasztó nem tiltja a 255-tel végződő irányított broadcast lekérdezést remote announce A Samba kiszolgálók képesek arra, hogy a remote annonunce beállítás segítségével küldjék el a tallózólistákat az idegen alhálózatoknak. Ezeket tipikusan az alhálózatok helyi főtallózójának küldik meg. Ha viszont nem ismerjük a helyi főtallózók címét, akkor a következőt tehetjük: [global] remote announce = 192.168234255/ACCOUNTING 192.168236255/ACCOUNTING Ebben az esetben a Samba a gazdabejelentkezéseket a 192.168234 és a 192168236 alhálózatok összes gépeire szétküldi, amelyek remélhetőleg az illető alhálózat helyi főtallózóját is elérik Természetesen a pontos IP címeket is megadhatjuk, ha ismerjük ezeket Fájlrendszerbeli különbözőségek A Samba egyik legfontosabb feladata, hogy kiküszöbölje a Unix és a nem Unix fájlrendszerek közötti különbözőségeket. Ide
tartoznak többek között a szimbolikus csatolásokkal, a rejtett és az ún dot fájlokkal kapcsolatos problémák megoldása Ugyancsak gondot jelenthetnek a nem megfelelőképpen kezelt fájlengedélyek. A fejezet e részében arról olvashatunk, hogy miként hidalja át a Samba ezeket a bosszantó eltéréseket, továbbá milyen újdonságokkal egészíti ki a fájlrendszereket. 5. FEJEZET TALLÓZÁS ÉS A LEMEZMEGOSZTÁSOK FOLYTATÁSA | 139 Fájlok elrejtése és vétózása Vannak olyan esetek, amikor biztosítani akarjuk, hogy egy felhasználó egyáltalán ne lásson egy fájlt, és ne férhessen hozzá. Más esetekben viszont csak azt szeretnénk, hogy amikor belenéz egy könyvtárba, rejtettként jelenjen meg benne egy fájl. A Windows operációs rendszerekben a fájlok egyik attribútumának beállításával rejthetünk el egy fájlt egy mappában A Unix rendszerekben hagyományosan a fájl elé helyezett pont, azaz dot (.) segítségével rejthetünk el egy fájlt
Ezzel megelőzhetjük, hogy egy szokásos ls parancs kiadásakor kilistázódjanak az olyan tételek, mint például a konfigurációs fájlok Ha viszont egy fájlt mindenképpen meg akarunk óvni attól, hogy a felhasználók hozzáférhessenek, akkor a fájlokkal és a könyvtárakkal kapcsolatos engedélyeket kell ennek megfelelően beállítanunk. Elsőként tekintsünk a hide dot files (dot fájlok elrejtése) beállítást. Ha ehhez a yes értéket rendeljük, akkor a ponttal kezdődő fájlok rejtettként jelennek meg. Ha beállítás értéke no, akkor ezek a fájlok is kilistázódnak. Itt fel kell hívnunk a figyelmet arra, hogy ezek a fájlok csak rejtettek. Ha a felhasználó a tallózáskor azt a lehetőséget választja, hogy a rejtett fájlok is megjelenjenek (vagyis a Windows 98-ban a Nézet menü Mappa beállításai párbeszédablakában bejelöli az ide vonatkozó választógombot), akkor ezeket a fájlokat is láthatja (lásd az 5.2 ábrát) 5.2 ábra Rejtett
fájlok a [data] megosztásban Ahelyett, hogy egyszerűen csak a ponttal kezdődő fájlokat elrejtsük, a hide files beállítás segítségével arra is utasíthatjuk a Sambát, hogy egy adott karakterlánc-mintát használjon a fájlok elrejtéséhez. Tegyük fel például, hogy az alábbi bejegyzéseket helyeztük el egy [data] megosztásba: [data] path = /home/samba/data browseable = yes guest ok = yes writeable = yes case sensitive = no hide files = /*.java/*README/ 140 | SAMBA A beállításban felsorolt minden egyes elemnek törtvonallal (/) kell kezdődnie és végződnie, még akkor is, ha a lista egyetlen elemből áll. Ez a jelölésmód lehetővé teszi, hogy szóközök is legyenek a fájlnevekben. A példabeli beállítást megadva az 53 ábrán látható módon jelenne meg a megosztott könyvtár. A Windows 98-ban ebben az esetben is engedélyeztük a rejtett fájlok megjelenítését 5.3 ábra Fájlok elrejtése fájlnév-minták alapján Ha azt szeretnénk,
hogy a felhasználók egyáltalán ne lássanak bizonyos fájlokat, akkor a veto files beállítást kell használnunk. Ebben a beállításban, amelynek ugyanaz a szintaxisa, mint a hide files beállításé, soroljuk fel azokat a fájlokat, amelyeket semmikor sem akarunk láttatni a felhasználókkal. Ehhez a [data] megosztást például a következőképpen módosíthatjuk: [data] path = /home/samba/data browseable = yes guest ok = yes writeable = yes case sensitive = no veto files = /*.java/*README/ Ennek a beállításnak ugyanolyan a szintaxisa, mint a hide files beállításé: a lista mindegyik elemének törtvonallal (/) kell kezdődnie és végződnie, még akkor is, ha a lista csak egyetlen elemet tartalmaz. A példában bemutatott beállítás következtében a hellojava és a README fájlok egyszerűen eltűnnek a könyvtárból, és a felhasználó nem lesz képes arra, hogy SMB-n keresztül hozzájuk férjen. A fentiekkel kapcsolatban választ kell adni még egy
kérdésre. Mi történik akkor, ha egy felhasználó vétózott fájlokat tartalmazó könyvtárt próbál törölni? Ekkor jut szerephez a delete veto files beállítás. Ha ehhez a beállításhoz a yes érték van rendelve, akkor a felhasználó a könyvtárban lévő normál és vétózott fájlokat is törölheti, és ezzel maga a könyvtár is törlődik. Ha viszont a beállításhoz a no érték van rendelve, akkor a felhasználó 5. FEJEZET TALLÓZÁS ÉS A LEMEZMEGOSZTÁSOK FOLYTATÁSA | 141 nem törölheti a vétózott fájlokat, következésképpen a könyvtár sem törölhető. A felhasználó számára úgy jelenik meg a könyvtár, mint ami üres, ám ennek ellenére nem törölhető A dont descend (lejjebb nem) direktívához felsorolt könyvtárak tartalmát a Samba nem engedi megjeleníteni. Jegyezzük meg, hogy a könyvtárak tartalmáról van szó, és nem magukról a könyvtárakról. A felhasználó beléphet egy ilyen módon megjelölt könyvtárba, de a
könyvtárfában lejjebb, az alsóbb szintekre már nem léphet. Az ilyen könyvtár mindig üres könyvtárként jelenik meg. Használjuk ezt a beállítást például egy, a fejezetben már korábban megismert megosztásban: [data] path = /home/samba/data browseable = yes guest ok = yes writeable = yes case sensitive = no dont descend = config defaults Ehhez tegyük még fel, hogy a /home/samba/data könyvtárnak a következő a tartalma: drwxr-xr-x drwxr-xr-x -rw-r--r-drwxr-xr-x drwxr-xr-x drwxr-xr-x 6 8 2 3 3 3 tom root tom tom tom tom users root users users users users 1024 1024 1024 1024 1024 1024 Jun Jun Jun Jun Jun Jun 13 10 9 13 13 13 09:24 17:53 11:43 09:28 09:28 09:28 . . README config defaults market Ha egy felhasználó kapcsolódik ehhez a megosztáshoz, akkor az 5.4 ábrán látható könyvtárakat látná A /config és a /defaults könyvtárak üresként jelennének meg, még akkor is, ha más fájlok vagy könyvtárak lennének benne. A felhasználó írni
sem tud az ilyen könyvtárakba (amivel megelőzhető az, hogy egy már létező, de számára láthatatlan fájllal vagy mappával azonos nevű fájlt vagy mappát hozzon létre). Ha megpróbálkozna ezzel, akkor az ,,Access Denied” (Hozzáférés megtagadva) üzenetet kapná. A dont descend inkább adminisztratív jellegű beállítás, semmint biztonsági intézkedés, és nem helyettesítheti a fájlengedélyekkel kapcsolatos beállításokat. Hivatkozások A DOS és az NT fájlrendszerek nem használnak szimbolikus hivatkozásokat, míg a Windows 95/98 ,,parancsikonokat” (shortcuts) használ erre a célra. Ezért amikor egy felhasználó a Samba kiszolgáló egyik megosztásán megpróbál megnyitni egy szimbolikus hivatkozást, a Samba megpróbálja követni a hivatkozást, hogy megtalálja a tényleges fájlt, és megnyissa azt, ugyanúgy, mintha a felhasználó Unix gépen dolgozna. Ha nem szeretnénk ezt engedélyezni, akkor a következőképpen használjuk a follow
symlinks beállítást: 142 | SAMBA 5.4 ábra A [data] megosztás tartalma dont descend beállítással [data] path = /home/samba/data browseable = yes guest ok = yes writeable = yes case sensitive = no follow symlinks = no A beállítást azzal tesztelhetjük, hogy a Unix kiszolgálón létrehozunk egy könyvtárat azon a megosztáson belül, amelybe a felhasználó bejelentkezik. Írjuk be a következő parancsokat: % mkdir hello; cd hello % cat "This is a test" >hello.txt % ln -s hello.txt "Link to hello" Eredményül az 5.5 ábrán látható két fájlt kapjuk Normál esetben, ha e két fájl bármelyikére rákattintunk, a ,,This is a test” szöveget tartalmazó fájlt kapjuk meg Ha viszont a follow symlinks beállításhoz a no érték van rendelve, akkor az 5.5 ábra jobb oldalán láthatóhoz hasonló hibaüzenetet kapjuk, ha a ,,Link to hello” fájlra kattintunk. 5.5 ábra Hibaüzenet jelenik meg, ha a Samba egy tiltott follow symlinks
hivatkozást próbál meg követni 5. FEJEZET TALLÓZÁS ÉS A LEMEZMEGOSZTÁSOK FOLYTATÁSA | 143 Végezetül essen szó a wide links beállításról. Ha ehhez a beállításhoz a yes érték tartozik, akkor a felhasználó a megosztott könyvtárfán kívüli helyekre mutató szimbolikus hivatkozásokat is követheti, beleértve a hivatkozás másik oldalán lévő fájlokat és könyvtárakat is. Tegyük fel például, hogy a [data] megosztást a következők szerint módosítottuk: [data] path = /home/samba/data browseable = yes guest ok = yes writeable = yes case sensitive = no follow symlinks = yes wide links = yes Addig, amíg engedélyezve van a follow symlinks beállítás, a Samba képes követni az aktuális megosztásfán kívüli szimbolikus hivatkozásokat is. Ha például a megosztáson kívül hoznánk létre egy fájlt (például valakinek a home könyvtárában), majd a megosztásban az alábbiak szerint készítenénk hozzá egy hivatkozást: ln -s
~tom/datafile ./datafile akkor Tom könyvtárában a célfájlra vonatkozó engedélyek alapján meg tudnánk nyitni a fájlt. Fájlrendszeri beállítások Az 5.4 táblázat az eddigiekben tárgyalt beállításokat sorolja fel Célszerű, ha a legtöbbjük esetében megtartjuk az alapbeállítás szerinti értéket, kivéve a következőkben bemutatásra kerülő beállításokat. 5.4 táblázat A fájlrendszer konfigurációs beállításai Beállítás Paraméterek Funkció Alapértelmezett érték Hatókör unix realname Boolean érték no Globális dont descend Karakterlánc (könyvtárlista) Nincs Megosztás follow symlinks Boolean érték yes Megosztás getwd cache Boolean érték A Unix felhasználó teljes nevét bocsátja az ügyfél rendelkezésére. Megadja azoknak a könyvtáraknak a listáját, amelyek tartalmát a Sambának az ügyfelek elől el kell rejtenie. Ha no az értéke, a Samba nem veszi figyelembe a szimbolikus hivatkozásokat. Ha yes az
értéke, a Samba gyorsítást használ a getwd( ) függvényhívásokhoz. yes Globális | 144 SAMBA 5.4 táblázat folytatása Beállítás Paraméterek Funkció Alapértelmezett érték Hatókör wide links Boolean érték yes Megosztás hide dot files Boolean érték yes Megosztás hide files Karakterlánc (fájllista) nincs Megosztás veto files Karakterlánc (fájllista) nincs Megosztás delete veto files Boolean érték Ha yes az értéke, a Samba a megosztáson kívül is követi a szimbolikus hivatkozásokat. Ha yes az értéke, a Samba úgy kezeli a Unix rejtett fájljait, mint a Windows rejtett fájljait. Felsorolja azokat a fájlmintákat, amelyeket a Sambának rejtettként kell kezelnie. Felsorolja azokat a fájlmintákat, amelyeket a Samba sohasem jelenít meg. Ha yes az értéke, törli a veto files beállításban megadott fájlokat, ha a felhasználó törli az ezeket a fájlokat tartalmazó könyvtárat. no Megosztás unix realname
Egyes programok a megfelelő működésükhöz a teljes felhasználónevet igénylik. Így például egy windowsos elektronikus levelezőprogramnak gyakran össze kell kapcsolnia egy felhasználónevet a valós névvel. Ha a rendszerünk jelszófájlja a GCOS mezőben a felhasználók teljes nevét tartalmazza, akkor a unix realname beállítás arra utasítja a Sambát, hogy szolgáltassa ezt az információt az ügyfeleknek. Ha ezt nem biztosítanánk, akkor a felhasználó neve azonos lenne a bejelentkezési nevével. Ha például a Unix jelszófájlja tartalmazza a következő sort: rcollins:/KaBfco47Rer5:500:500:Robert Collins: /home/rcollins:/bin/ksh és a konfigurációs fájl a következő beállítást tartalmazza: [global] unix realname = yes akkor a Samba mindazon ügyfél számára szolgáltatja az rcollins felhasználó valós, Robert Collins nevét, aki ezt kéri. Ezzel a beállítással általában nem kell törődnünk dont descend A dont descend (lejjebb nem)
beállítás segítségével megadhatjuk azokat a könyvtárakat, amelyeket az ügyfelek előtt üresként akarunk megjeleníteni. A Samba az ilyen könyvtárak 5. FEJEZET TALLÓZÁS ÉS A LEMEZMEGOSZTÁSOK FOLYTATÁSA | 145 tartalmát nem jeleníti meg. Ez azonban nem a legmegfelelőbb eljárás a fájlok megvédésére (a felhasználó találhat megoldást ennek a tiltásnak a megkerülésére), és valójában csak arra jó, hogy ne engedjük tallózni a felhasználót az érzékeny fájlokat tartalmazó könyvtárakban. Lásd a fejezetrész korábbi példáját follow symlinks Ezzel a beállítással, amelyről korábban már bővebben olvashattunk, az szabályozható, hogy kövessen-e a Samba egy szimbolikus hivatkozást a Unix operációs rendszerben a célig, vagy hibaüzenettel térjen-e vissza a felhasználóhoz. Ha a beállításhoz a yes érték tartozik, akkor a Samba fájlként jeleníti meg a hivatkozási célt. getwd cache Ezzel a globális beállítással azt
írhatjuk elő, hogy a Samba használjon-e helyi gyorsítást a Unix getwd() (get current working directory, aktuális munkakönyvtár bekérése) rendszerfüggvényének meghívásához. A beállítás alapértelmezés szerinti yes értékét a következőképpen írhatjuk felül: [global] getwd cache = no Ha a beállításhoz a yes értéket rendeljük, jelentős mértékben megnöveljük a munkakönyvtár feloldásához szükséges időt, különösen akkor, ha a wide links beállításnak no az értéke. Normál esetben nem kell változtatnunk a beállítás alapértelmezés szerinti értékén wide links Ezzel a beállítással azt adhatjuk meg, hogy a felhasználó követhet-e olyan szimbolikus hivatkozásokat, amelyek a megosztott könyvtárfán kívüli helyekre mutatnak. Ezek a helyek a hivatkozás végén álló bármely fájlt vagy könyvtárat jelenthetik, amennyiben a felhasználó rendelkezik a megfelelő hozzáférési engedélyekkel. A beállításnak alapértelmezés
szerint yes az értéke Jegyezzük meg, hogy ez a beállítás figyelmen kívül marad, ha a follow symlinks beállításhoz a no érték van rendelve. Utóbbi esetben lényegesen lelassul az smbd futása. hide files A hide files beállításban egy vagy több könyvtár vagy fájl nevének mintáját sorolhatjuk fel. A Samba mindazokat a könyvtárakat és fájlokat, amelyek neve megfelel az adott mintá(k)nak, rejtettként kezeli, és elrejti a felhasználók elől. Jegyezzük meg azonban, hogy ez nem jelent többet, mint a DOS rejtett attribútumának bekapcsolását, és semmiképpen sem biztosítja, hogy egy felhasználó a tallózás során ne láthassa ezeket. A lista mindegyik elemének törtjellel (/) kell kezdődnie és végződnie, még akkor is, ha a lista csak egyetlen elemet tartalmaz. Ez lehetővé teszi, hogy szóközöket is tartalmazzanak a listaelemek Általános helyettesítőként csillag karakterek használhatók 0 vagy több karakter helyett. Minden egyes
kérdőjel pontosan egy karaktert helyettesít Példa: hide files = /.jav*/README.???/ 146 | SAMBA hide dot files A hide dot files beállítás segítségével a kiszolgálón lévő, pont (.) karakterrel kezdődő fájlok rejthetők el. A hide files beállításhoz hasonlóan a ponttal kezdődő fájloknak be lesz kapcsolva a DOS rejtett attribútumuk, ami semmilyen garanciát sem nyújt arra, hogy ezek a fájlok nem lesznek megjeleníthetők. A beállításnak alapértelmezés szerint yes az értéke. veto files A fájlok elrejtéséhez képest még nagyobb mértékben eltitkolhatjuk a fájljainkat a veto files beállítás segítségével. E beállítást használva a Samba még annyit sem hajlandó elárulni, hogy egyáltalán léteznek a fájlok A valóságban azonban ez nem jelent igazi védelmet, mindössze egy mechanizmus, amely nem engedi, hogy a PC-s programok töröljék a Macintosh fájlok Unix fájlrendszerben való tárolására szolgáló speciális fájlokat. Ha
Windows és Mac gépek közösen használnak fájlokat, akkor ezzel megakadályozható, hogy hozzá nem értő felhasználók töröljék a Mac felhasználók számára szükséges fájlokat. A beállításnak ugyanaz a szintaxisa, mint a hide files beállításé: a lista mindegyik elemének törtvonallal (/) kell kezdődnie és végződnie, még akkor is, ha a lista egyetlen elemből áll. Általános helyettesítőként csillag karakterek használhatók 0 vagy több karakter helyett Minden egyes kérdőjel pontosan egy karaktert helyettesít Példa: veto files = /*config/default?/ A beállítás elsősorban adminisztratív célokra használható, és nem helyettesítheti az engedélyekre vonatkozó beállításokat. delete veto files Ezzel a beállítással arra utasítható a Samba, hogy törölje a vétózott fájlokat, ha egy felhasználó az ezeket tartalmazó könyvtárt törli. A beállítás alapértelmezés szerinti értéke a no Ez azt jelenti, hogy amikor egy
felhasználó olyan könyvtárt próbál törölni, amely vétózott fájlt tartalmaz, a fájl nem törlődik (sem a könyvtár). A könyvtár továbbra is megmarad, csak üresnek látszik. Ha a beállításhoz a yes értéket rendeljük, mind a vétózott fájlok, mind a könyvtár törlődnek. Fájlengedélyek és attribútumok MS-DOS és Unix rendszerben A DOS rendszert a kifejlesztői sohasem szánták többfelhasználós, hálózati operációs rendszernek. Ezzel szemben a Unixot már a születésétől fogva erre tervezték Ebből következik, hogy a két fájlrendszer között számos eltérés van, amelyekkel a Sambának nem csak tisztában kell lennie, hanem megoldást is kell találnia rájuk. Az egyik leglényegesebb különbség abban van, ahogyan a Unix és a DOS a fájlengedélyeket kezeli. Nézzük először a Unixot. Mindegyik Unix fájlhoz tartozik egy-egy olvasási (read), írási (write) és végrehajtási (execute) bit a felhasználók következő három
csoportjához: tulaj- 5. FEJEZET TALLÓZÁS ÉS A LEMEZMEGOSZTÁSOK FOLYTATÁSA | 147 donos, csoport és világ. Ezek az engedélyező bitek egy fájl bal szélén olvashatók, amikor egy Unix könyvtárban kiadjuk az ls -al parancsot. Például: -rwxr--r-- 1 tom users 2014 Apr 13 14:11 access.conf Ezzel szemben a Windows négy ún. attribútumbitet használ minden egyes fájlhoz: csak olvasható (read-only), rendszer (system), rejtett (hidden) és archiválandó (archive). Ezeket a biteket úgy nézhetjük meg, hogy az egér jobb oldali gombjával egy fájlra kattintunk, és a helyi menüben a Tulajdonságok parancsot választjuk. Ekkor az 56 ábrán látható párbeszédablak jelenik meg 5.6 ábra DOS és Windows fájlok tulajdonságai Az egyes attribútumbitek jelentése: Csak olvasható (Read-only) A fájl tartalmát olvashatja a felhasználó, de nem szerkesztheti (nem írhat bele, nem törölhet belőle). 148 | SAMBA Rendszer (System) Ezek az ún.
rendszerfájlok, amelyekre az operációs rendszernek van szüksége Rejtett (Hidden) Ezek a fájlok el vannak rejtve a felhasználó elől, és csak akkor jelennek meg, ha kifejezetten így állítjuk be az operációs rendszert. Archiválandó (Archive) Az ilyen fájlok módosultak azt követően, hogy utoljára biztonsági másolat készült róluk. Figyeljük meg, hogy a DOS nem ismeri a végrehajtható (executable) attribútumot. A DOS és a Windows NT fájlrendszerek az .EXE, COM, CMD és a BAT kiterjesztéssel jelölik a végrehajtható fájlokat. Ebből következik, hogy egy Samba lemezmegosztásban nincs kihasználva a Unix fájlok három végrehajtást jelző bitje. Ugyanakkor a DOS fájloknak meg kell őrizniük az archiválandó, a rendszer és a rejtett attribútumbitjeiket, ha Unix környezetben kerülnek tárolásra A Samba ehhez a Unix fájlok három végrehajtást engedélyező bitjét használhatja, ha erre kap utasítást. E biteknek az ilyen módon történő
megfeleltetése (leképzése) azonban sajnos mellékhatással jár: ha egy Windows felhasználó Samba megosztásban tárolja a fájlját, és egy Unixos felhasználó az ls -al paranccsal meg akarja tekintetni azt, a végrehajthatóságot jelző bitek némelyike nem úgy viselkedik, amint az várható. A Sambában a következő három beállítással adhatjuk meg, hogy megtörténjen-e a bitek leképzése: map archive, map system és map hidden. Ezek a beállítások az archiválandó, a rendszer és a rejtett attribútumbiteket rendre leképzik a tulajdonos, a csoport és a világ végrehajtható bitekre. A beállításokat a [data] megosztásba vehetjük fel a következő módon: [data] path = /home/samba/data browseable = yes guest ok = yes writeable = yes map archive = yes map system = yes map hidden = yes Ezt követően Unix alatt készítsünk el egy fájlt a megosztásban, ami például a hello.java lehet, és állítsuk 755-re a fájl engedélyeit. Miután elvégeztük ezeket
a beállításokat, a Windows oldalon megvizsgálva az engedélyeket azt látjuk, hogy a Tulajdonságok párbeszédablakban mind a három attribútumbit be van jelölve. Mi történik azonban a csak olvasható attribútummal? Alapértelmezés szerint a Samba 2.0 ehhez mindig az 1-es értéket rendeli, ha a Unixban a tulajdonosi írásbit értéke 0. Másként fogalmazva a csak olvasható attribútumbitet úgy állíthatjuk 1-re, hogy a fájl engedélyeit az 555-ös értékre módosítjuk. Fel kell hívnunk arra a figyelmet, hogy a map archive beállításhoz alapértelmezés szerint a yes érték tartozik, míg a másik két beállításnak alapértelmezés szerint no az értéke. 5. FEJEZET TALLÓZÁS ÉS A LEMEZMEGOSZTÁSOK FOLYTATÁSA | 149 Ennek az az oka, hogy sok program nem működik helyesen, ha a DOS és a Windows fájlok archiválandó bitje nincs helyesen tárolva. Ezzel szemben a rendszer és a rejtett attribútumoknak nincs különösebb jelentésőgük a programok
működésében, ezért a rendszergazda belátására van bízva ezek leképzése Az 5.7 ábrán összefoglaltuk a Unix engedélyeit, és azt is szemléltetjük, hogyan képezi le a Samba ezeket a biteket a DOS attribútumbitjeire. Figyeljük meg, hogy a csoport írási/olvasási és a világ olvasási/írási bitek nincsenek közvetlenül leképezve a DOS attribútumbitjeire, hanem a Samba kiszolgálón megtartják az eredeti unixos szerepüket. 5.7 ábra Fájlengedélyek Unix és Samba oldalról nézve Létrehozási maszk A Sambában különböző beállítások segítik a létrehozási maszk (más néven umask) használatát. A létrehozási maszk segítségével már a fájl vagy a könyvtár készítésekor meghatározhatjuk a hozzá tartozó engedélyeket A Unixban ez azt jelenti, hogy a fájl vagy a könyvtár létrehozásakor szabályozhatjuk, hogy milyen tiltások legyenek érvényesek a fájlra vagy a könyvtárra. Windows oldalra lefordítva ez azt jelenti, hogy egy fájl
létrehozásakor a Windowsban használatos négy attribútumbit (csak olvasható, archiválandó, rendszer és rejtett) bármelyikét kikapcsolhatjuk Az alábbi példában a create mask beállításhoz a 744-es értéket adtuk meg, amivel kikényszerítjük a Windows ügyféltől, hogy egy fájl létrehozásakor a lehető legtöbb engedélyt rendelje a fájlhoz: [data] path = /home/samba/data browseable = yes guest ok = yes writeable = yes create mask = 744 Ehhez hasonlóan a directory mask beállításhoz a maximális 755-ös értéket rendelve azt kényszerítjük ki a Windows ügyféltől, hogy a lehetséges legtöbb engedélyt rendelje a létrehozandó könyvtárhoz: 150 | SAMBA [data] path = /home/samba/data browseable = yes guest ok = yes writeable = yes directory mask = 755 A force create mode és a force directory mode beállítások segítségével akár az egyes attribútumbitek egyenkénti be-, illetve kikapcsolásával is kikényszeríthetjük az engedélyeket.
Ezek a beállítások logikai OR műveletet végeznek a fájl- és a könyvtárlétrehozó maszkokon, és ezzel biztosítják, hogy egy adott bit mindig be legyen kapcsolva Ezeket a beállításokat általában globális hatókörrel használjuk, hogy a csoport és a világ olvasási/írási engedélyek minden egyes megosztásban létrehozásra kerülő fájlokra és könyvtárakra megfelelően legyenek beállítva. A fentiekhez hasonlóan a force user és a force group beállítások segítségével a Windows oldalon készített fájlok Unixos felhasználói és csoportengedélyeit is beállíthatjuk. Például: [data] path = /home/samba/data browseable = yes guest ok = yes writeable = yes create mask = 744 directory mask = 755 force user = joe force group = accounting Ezek a beállítások statikus Unix felhasználót és csoportot rendelnek a megosztáshoz létrehozott minden egyes kapcsolathoz. Ez azonban csak az ügyfél hitelesítése után történik meg, és nem engedélyezi a
megosztáshoz való szabad hozzáférést. A beállításokat gyakran azon mellékhatásuk miatt használják, amivel adott felhasználó vagy csoport rendelhető a megosztásban létrehozásra kerülő új fájlhoz vagy könyvtárhoz Legyünk óvatosak ezekkel a beállításokkal. Végül essen szó a Unix még egy olyan képességéről, amely hiányzik a DOS-ból: egy csak olvasható fájl törlése egy írható könyvtárból. A Unix rendszerben egy írható könyvtárból egy csak olvasható fájl is törölhető Ez lehetővé teszi, hogy bármelyik könyvtárunkból töröljünk fájlokat, még ha egy adott fájlt más is helyezett el benne A DOS fájlrendszert nem többfelhasználós környezetre tervezték, ezért abban a csak olvasható azt jelenti, hogy ,,védett véletlen változtatásokkal szemben, beleértve a törlését is”, és nem azt, hogy ,,védett az egyfelhasználós rendszeren más felhasználókkal szemben”. Ezért a DOS tervezői nem engedélyezték a csak
olvasható fájlok törlését Még a mai Windows fájlrendszerek is követik ezt a hagyományt. Normál esetben ezzel nincs is probléma. A Windows programok nem kísérlik meg a csak olvasható fájlok törlését, mert tisztában vannak azzal, hogy ez nem okos dolog. Ezzel szemben egy sor más, eredetileg Unixra írt, és most Windows alatt futó program igényli, 5. FEJEZET TALLÓZÁS ÉS A LEMEZMEGOSZTÁSOK FOLYTATÁSA | 151 hogy törölhetők legyenek a csak olvasható fájlok. A Sambában ezt a delete readonly beállítás segítségével engedélyezhetjük, amennyiben a yes értéket rendeljük hozzá: [data] path = /home/samba/data browseable = yes guest ok = yes writeable = yes create mask = 744 directory mask = 755 force user = joe force group = accounting delete readonly = yes Fájl- és könyvtárengedélyek beállításai A fájl- és könyvtárengedélyekkel kapcsolatos beállítási lehetőségeket a 5.5 táblázat foglalja fel Ezt követően külön-külön
ismertetjük mindegyiket 5.5 táblázat Fájl- és könyvtárengedélyek beállításai Beállítás Paraméterek Funkció Alapértelmezett érték Hatókör map archive Boolean érték yes Megosztás map system Boolean érték no Megosztás map hidden Boolean érték Megőrzi a DOS archiválandó attribútumát a felhasználói végrehajtható bitben (0100). Megőrzi a DOS rendszer attribútumát a csoport végrehajtható bitben (0010). Megőrzi a DOS rejtett attribútumát a világ végrehajtható bitben (0001). Beállítja a Samba által létrehozott fájlokhoz rendelhető maximális engedélyt. no Megosztás 0744 Megosztás 0755 Megosztás 0000 Megosztás create Numerikus mask (create mode) directory Numerikus mask (directory mode) force Numerikus create mode Beállítja a Samba által létrehozott könyvtárakhoz rendelhető maximális engedélyt. Kikényszeríti a megadott engedélyeket (bitenkénti OR) a Samba által létrehozott fájlokhoz. 152 |
SAMBA 5.5 táblázat folytatása Beállítás Alapértelmezett érték Hatókör force Numerikus directory mode 0000 Megosztás force group (group) force user Nincs Megosztás Nincs Megosztás no Megosztás delete readonly Paraméterek Funkció Kikényszeríti a megadott engedélyeket (bitenkénti OR) a Samba által létrehozott könyvtárakhoz. Karakterlánc Csoportot rendel az illető (csoport neve) megosztáshoz kapcsolódó felhasználóhoz. Karakterlánc Felhasználót rendel az illető (felhasználómegosztáshoz kapcsolódó név) felhasználóhoz. Boolean érték Lehetővé teszi csak olvasható fájl törlését egy írható könyvtárból. create mask A beállításhoz rendelt oktális szám azt jelzi, hogy az ügyfél egy fájl mely engedélybitjeit kapcsolhatja be, amikor létrehozza a fájlt a megosztásban. Az alapbeállítás szerinti érték 0744, ami azt jelenti, hogy a fájl unixos tulajdonosa olvashatja, írhatja és végrehajthatja a fájlt, míg a
csoportjába tartozó felhasználók és mások csak olvashatják és végrehajthatják azt. Ha azt szeretnénk, hogy ne legyen végrehajtható a fájl, akkor a 0644-es értéket állítsuk be (rw-r--r--). Ne feledjük, hogy a végrehajtható biteket a kiszolgáló arra is használhatja, hogy DOS fájlok bizonyos attribútumbitjeit képezze le rájuk, amint erről korábban olvashattunk. Ha módosítjuk a create mask beállításhoz rendelt értéket, akkor ezeknek a biteknek a viselkedését is módosítjuk. directory mask A beállításhoz rendelt oktális szám azt jelzi, hogy az ügyfél egy könyvtár mely engedélybitjeit kapcsolhatja be, amikor létrehozza a könyvtárt a megosztásban. Az alapbeállítás szerinti érték 0755, ami azt jelenti, hogy Unix oldalon bárki olvashatja a könyvtárat és lépegethet is benne, de csak a létrehozója módosíthatja Itt a 0750-es érték javasolható force create mode Ezzel a beállítással átállíthatók azok az engedélybitek,
amelyek bekapcsolását a Samba egy fájl engedélybitjeinek módosításakor kikényszeríti. Ezt a beállítást gyakran használják csoportengedélyek kikényszerítésére, amint erről korábban már volt szó Segítségével a DOS archiválandó (0100), rendszer (0010) és a rejtett (0001) attribútumbitjei előre is beállíthatók. Ez a beállítás mindig felülbírálja a map archive, a map system, a map hidden és a create mask beállításokat. 5. FEJEZET TALLÓZÁS ÉS A LEMEZMEGOSZTÁSOK FOLYTATÁSA | 153 Számos Windows alkalmazás az adatfájlok módosításakor a régi adatfájlt .bak kiterjesztéssel menti, és újat hoz létre, vagyis úgy változtatja meg a tulajdonosát és az engedélyeit, hogy ugyanannak a Unix csoportnak a tagjai nem szerkeszthetik a fájlt. A force create mode = 0660 beállítással az új fájlt szerkeszthetik is a csoport tagjai force directory mode Ezzel a beállítással átállíthatók azok az engedélybitek, amelyek
bekapcsolását a Samba egy könyvtár engedélybitjeinek módosításakor kikényszeríti. Ezt a beállítást gyakran használják csoportengedélyek kikényszerítésére, amint erről korábban már volt szó A beállítás alapértelmezés szerinti értéke 0000, és a force create mode beállításhoz hasonlóan szükség esetén csoport vagy más engedélyek megadására használható. Ez a beállítás mindig felülbírálja a map archive, a map system, a map hidden és a directory mask beállításokat force group Ez a beállítás, amit esetenként group alakban is írnak, statikus csoportazonosítót ad meg, amit minden felhasználó használhat, miután bejelentkezett egy megosztáshoz, és a hitelesítése is megtörtént. A beállítás az SMB ügyfél által létrehozott minden egyes új fájlhoz vagy könyvtárhoz hozzárendel egy meghatározott csoportot. force user A force user beállítás statikus felhasználó-azonosítót ad meg, amit minden felhasználó
használhat, miután bejelentkezett egy megosztáshoz, és a hitelesítése is megtörtént. A beállítás az SMB ügyfél által létrehozott minden egyes új fájlhoz vagy könyvtárhoz hozzárendel egy meghatározott felhasználót delete readonly Ezzel a beállítással engedélyezhetjük, hogy egy felhasználó csak olvasható fájlt tartalmazó könyvtárt is törölhessen. Alapbeállítás szerint a DOS és a Windows az ilyen műveletet nem teszi lehetővé. Hacsak nem igényli egy program, akkor hagyjuk kikapcsolva ezt a beállítást; sok windowsos felhasználó zokon venné, ha azt tapasztalná, hogy a csak olvashatóvá tett fájljai is törölhetők. Igazából azonban a Unix rm parancsa is megkérdezi a felhasználót, hogy tényleg felül akarja-e bírálni ezt a beállítást, és valóban törölni akarja a csak olvasható fájlokat. Lehetőség szerint ne változtassuk meg a Samba alapbeállítását map archive A DOS archiválandó bitje azt jelzi, hogy módosult-e
egy fájl azóta, hogy utoljára biztonsági másolatot készítettünk róla (vagy lefuttattuk-e vele a DOS archiváló programját). Ha a map archive = yes beállítást adjuk meg, akkor a Samba a DOS archiválandó jelzőbitjét a Unix tulajdonosi végrehajtható bitjére (0100) képezi le (ennek felelteti meg). Legjobb ezt a beállítást használnunk, ha engedélyezzük, hogy a Windows felhasználók biztonsági másolatot készítsenek a fájljaikról, vagy ha olyan programokat futtatunk, amelyek igénylik az archiválandó bitet. A Unix egyáltalán nem ismer ilyen archiválandó bitet A biztonsági 154 | SAMBA másolatokat készítő programok viszont általában listát vezetnek az archivált fájlokról és a másolatkészítés idejéről, ezért a módosulási dátumok összehasonlítása ugyanezt a célt szolgálja. A yes érték választása esetenként meglepheti a Unixos ügyfeleket, ha azt tapasztalják, hogy egy adatfájljuk végrehajtható fájlként van
megjelölve, de ennél nagyobb baj nem történik. Ha valaki megpróbálna végrehajtani egy ilyen fájlt, hibaüzenetet kapna, amikor a héjprogram megkísérelné utasításként értelmezni a kezdő sorokat. A dolog fordítottja is előfordulhat: egy végrehajtható Unix fájl akként jelenhet meg, mint amiről a Windowsban még nem készült biztonsági másolat. Az előzőhöz hasonlóan ebből sem származhatnak komolyabb problémák. map system A DOS system (rendszer) attribútumbitje azokat a fájlokat jelöli meg, amelyekre az operációs rendszernek van szüksége, és amelyeket nem szabad törölni, átnevezni vagy áthelyezni külön intézkedések nélkül. Csak akkor kapcsoljuk be ezt a beállítást, ha egy Unix fájlkiszolgálón akarjuk tárolni a Windows rendszerfájljait. A végrehajtható Unix fájlok nem áthelyezhető speciális Windows fájlokként jelennek meg a Windows ügyfelek előtt. Ez ugyan némi kényelmetlenséget okozhat, ha megpróbálnánk áthelyezni
őket, de a legtöbb esetben nincs velük probléma. map hidden A DOS a hidden (rejtett) attribútumbittel azokat a fájlokat jelöli meg, amelyeket normál körülmények között nem akar megjeleníteni a fájlok listájában. A Unixban nincs ilyen bit; a rendszer az egyedi programokra (nevezetesen például a héjprogramra) bízza azt, hogy mely fájlokat jelenítsenek meg és melyeket ne. Normál esetben nincs szükségünk a rejtett DOS fájlokra, ezért a legjobb, ha meghagyjuk ennek a beállításnak a kikapcsolt állapotát. Ha a beállításhoz a yes értéket rendeljük, akkor a kiszolgáló a rejtett attribútumbitet a világ végrehajtható bitjére (0001) képezi le. Ennek meglehetősen furcsa lenne a hatása Minden olyan Unix program, amelyet bárki végrehajthat, eltűnne a Windows felhasználók elől. Ha viszont a no értéket rendeljük ehhez a beállításhoz, és egy Windows felhasználó egy Samba megosztásban lévő fájlt rejtettként szeretne megjelölni, akkor
ez nem sikerülne neki: a Sambának ugyanis nincs helye, ahol tárolhatná a rejtett attribútumbitet! Névzsugorítás és a kis- és nagybetűk A DOS és a Windows 3.1 operációs rendszerek idejében a fájlnevek maximum 8 nagybetűből, egy pontból és három, ugyancsak nagybetűből álló, ún névkiterjesztésből állhattak Ezt röviden 8.3-as formátumnak nevezték, és számos kellemetlenséget okoztak Azóta a Windows 95/98, a Windows NT és a Unix azzal, hogy jóval több karaktert enged meg a fájlnevekben, és ezeken belül a kis- és nagybetűket is megkülönbözteti, megoldotta ezt a problémát. Az 56 táblázatban összefoglaltuk a leggyakoribb operációs rendszerekre érvényes névhasználatot. 5. FEJEZET TALLÓZÁS ÉS A LEMEZMEGOSZTÁSOK FOLYTATÁSA | 155 5.6 táblázat Névhasználati kötöttségek az operációs rendszerekben Operációs rendszer Névhasználati szabályok DOS 6.22 vagy korábbi Nyolc karakter, utána egy pont, majd három
karakter (8.3 formátum), kis- és nagybetű nem számít Nyolc karakter, utána egy pont, majd három karakter (8.3 formátum), kis- és nagybetű nem számít 255 karakter, kis- és nagybetű számít, és megtartja az írásmódot 255 karakter, kis- és nagybetű számít, és megtartja az írásmódot 255 karakter, kis- és nagybetű számít Windows 3.1 for Workgroups Windows 95/98 Windows NT Unix A Samba az olyan felhasználók kedvéért, akik például a Windows for Workgroups operációs rendszer alatt dolgoznak, megtartotta a kompatibilitást a 8.3-as formátummal Ha egy felhasználó egy megosztásban egy antidisestablishmentarianism.txt nevű fájlt hozna létre, akkor a Windows for Workgroups rendszert használó ügyfél nem tudná ezt megkülönböztetni egy ugyanabban a könyvtárban lévő antidisease.txt nevű fájltól A Windows 95/98 és a Windows NT rendszerhez hasonlóan a Samba is egy speciális eljárást használ arra, hogy a hosszú fájlneveket 8.3-as
formátumra alakítsa át úgy, hogy a hasonló fájlnevekből ne adódjon ütközés Ezt az eljárást névzsugorításnak nevezik A Samba a fájlneveket a Windows 95 és az utódjaihoz hasonló, de nem azonos módon zsugorítja A Samba névzsugorítási eljárása A Samba a következő módon zsugorítja a hosszú fájlneveket 8.3-as formátumra: • Ha az eredeti fájlnév nem ponttal kezdődik, akkor az utolsó pont (amennyiben van ilyen) előtti első öt alfanumerikus karaktert nagybetűsre alakítja át. Ezek a karakterek alkotják a 8.3-as formátumra zsugorítandó fájlnév első öt karakterét • Ha az eredeti fájlnév ponttal kezdődik, akkor a pontot eltávolítja, és az utolsó pont (amennyiben van ilyen) előtti első öt alfanumerikus karaktert nagybetűsre alakítja át. Ezek a karakterek alkotják a 8.3-as formátumra zsugorítandó fájlnév első öt karakterét • Ezeket a karaktereket közvetlenül egy speciális rövidítő karakter követi, ami
alapbeállítás szerint a tilde (~), de ez megváltoztatható. • A hosszú fájlnévnek az utolsó pont előtti részéből egy kétkarakteres kódot képez; amennyiben szükséges, a név utolsó pont utáni részei használhatók. Ezt a kétkarakteres kódot beilleszti a rövidítő karakter mögé • Az eredeti fájlnév utolsó pontja (amennyiben van ilyen) utáni első három karaktert nagybetűsre alakítja át, és hozzáfűzi a rövidített névhez. Ha az eredeti fájlnév ponttal kezdődött, akkor három aláhúzásjelet ( ) használ kiterjesztésként. 156 | SAMBA Íme néhány példa: virtuosity.dat .htaccess hello.java team.configtxt antidisestablishmentarianism.txt antidiseast.txt VIRTU~F1.DAT HTACC~U0. HELLO~1F.JAV TEAMC~04.TXT ANTID~E3.TXT ANTID~9K.TXT A szabályokat használva a Windows for Workgroups rendszerben dolgozók is különbséget tudnak tenni az eredetileg hosszú nevű fájlok között. Jegyezzük meg, hogy a Samba ugyanazt a hosszú
fájlnevet mindig ugyanarra a rövid névre zsugorítja, ami a Windowsban nem mindig igaz. Ennek viszont az a hátránya, hogy továbbra is előfordulhatnak ütközések, bár ennek kicsi a valószínűsége A névzsugorítási beállításokkal általában csak akkor kell foglalkoznunk, ha régi rendszereken dolgozó ügyfelek is csatlakoznak a hálózathoz. Azért, hogy a többi ügyfelet ne zaklassuk ilyen problémákkal, azt javasoljuk, hogy vegyünk fel egy include direktívát az smb.conf fájlba: [global] include = /usr/local/samba/lib/smb.conf%a Ez elkészíti az smb.confWfWg feloldást, amikor egy Windows for Workgroups ügyfél jelentkezik be a hálózatra. Most el kell készítenünk a /usr/local/samba/lib/smbconfWfWg fájlt, ami a következő beállításokat tartalmazhatja: [global] case sensitive = no default case = upper preserve case = no short preserve case = no mangle case = yes mangled names= yes Ha nem használunk Windows for Workgroups 3.1 operációs rendszert,
akkor valószínűleg egyik beállításnak sem kell megváltoztatnunk az alapértelmezés szerinti értékét Fájlnevek ábrázolása és feloldása a Sambában A fájlnevekkel kapcsolatban arról is szólnunk kell, hogy a különböző operációs rendszerek eltérően ábrázolják és oldják fel a fájlneveket. Aki dolgozott már Windows 95/98/NT operációs rendszerben, az minden bizonnyal találkozott már egy README.TXT nevű fájllal Az operációs rendszer ennek a fájlnak a nevét csupa nagybetűvel tárolja Ha viszont megnyitunk egy DOS ablakot, és a parancssorba beírjuk az edit readme.txt parancsot, a nagybetűs nevű program betöltődik a szerkesztőprogramba, még ha kisbetűkkel is írtuk be nevét. 5. FEJEZET TALLÓZÁS ÉS A LEMEZMEGOSZTÁSOK FOLYTATÁSA | 157 Ennek az az oka, hogy a Windows 95/98/NT család tagjai a név feloldásakor nem tesznek különbséget a kis- és a nagybetűk között. Ezzel szemben viszont a Unix alapú operációs rendszerek a
fájlnevek feloldásakor mindig megkülönböztetik a kis- és a nagybetűket: ha a vi readme.txt parancs beírásával megpróbálnánk szerkeszteni a READMETXT fájlt, akkor feltehetően csak egy új fájl üres pufferét szerkeszthetnénk. A Samba a következőképpen kezeli a kis- és nagybetűket: ha a preserve case beállításhoz a yes értéket rendeljük, akkor a Samba az operációs rendszer által rendelkezésére bocsátott alakban fogja használni a betűket a fájlnevek megjelenítéséhez (nincs feloldás). Ha a beállításhoz a no értéket rendeljük, akkor a Samba a default case beállításban megadott alakot (kisbetű vagy nagybetű) fogja használni. Ugyanez vonatkozik a short preserve case beállításra is. Ha ennek a beállításnak yes az értéke, a Samba a 83 formátumú fájlnevek megjelenítéséhez az operációs rendszer alapértelmezés szerinti alakját fogja használni. Végül a Samba a megosztásaiban a fájlneveket mindig a case sensitive
beállításban megadott alak szerint fogja használni. A zsugorítás beállításai A Samba lehetővé teszi, hogy finomabban szabályozzuk a hosszú fájlnevek zsugorítását. Így például előírhatjuk a kis- és nagybetűk megkülönböztetését, a rövidített fájlnevekbe beszúrandó karaktereket, valamint a fájlnevek egyik formátumból másik formátumba történő kézi átalakítását. Ezeket a beállítási lehetőségeket az 57 táblázat sorolja fel 5.7 táblázat A névzsugorítás beállítási lehetőségei Beállítás Paraméterek case Boolean érték sensitive (casesignames) default (upper case vagy lower) preserve case Boolean érték short preserve case mangle case Boolean érték mangled names Boolean érték Boolean érték Funkció Alapértelmezett érték Hatókör Ha yes az értéke, a Samba a fájlnevekben megkülönbözteti a kis- és nagybetűket (a Windows nem teszi). Az alapértelmezésnek tekintett alakot használja (csak akkor, ha
a preserve case értéke no). Ha yes az értéke, megtartja az ügyfél által használt alakot (vagyis nem alakítja át a default case szerint). Ha yes az értéke, megtartja az ügyfél által használt 8.3-as formátum alakját. Zsugorítja a nevet, ha vegyesen van benne kis- és nagybetű. A DOS 8.3-as formátumára zsugorítja a fájlnevet. no Megosztás Lower Megosztás yes Megosztás yes Megosztás no Megosztás yes Megosztás 158 | SAMBA 5.7 táblázat folytatása Beállítás Paraméterek Funkció Alapértelmezett érték Hatókör mangling char Karakterlánc (egyetlen karakter) Numerikus Megadja a rövidítő karaktert. ~ Megosztás A helyi rövidítő veremben tárolandó rövidített nevek száma. Lehetővé teszi fájlnevek egyik formátumból másik formátumba való leképzését. 50 Global Nincs Megosztás mangled stack mangled map Karakterlánc (mintalista) case sensitive Ezzel a megosztás hatókörű beállítással, aminek a
rejtelmes casesignames a szinonimája, azt írhatjuk elő, hogy a Samba egy adott megosztásban a fájlnevek feloldásakor megtartsa-e a kis- és a nagybetűket. A beállításhoz alapértelmezés szerint a no érték van rendelve, ami annak felel meg, ahogyan a Windows kezeli a névfeloldást. Ha az ügyfelek olyan operációs rendszert használnak, amely megkülönbözteti a fájlnevekben a kis- és a nagybetűket, akkor a beállítást az alábbi módon használhatjuk: [accounting] case sensitive = yes Ellenkező esetben hagyjuk meg a beállítás alapértelmezett értékét. default case Ezt a beállítást a preserve case beállítással együtt használhatjuk. Ez a beállítás azt az alapbeállítás szerinti alakot (kisbetűk vagy nagybetűk) határozza meg, amit a Samba használni fog, amikor a megosztásaiban egy ügyfél számára létrehoz egy fájlt. Az alapbeállítás szerinti alak a kisbetűs (lower) alak, ami azt jelenti, hogy az újonnan létrehozott fájlok neveiben
megmaradnak az ügyfél által használt kis- és nagybetűk. Amennyiben szükséges, a következő módon felülbírálhatjuk ezt a globális beállítást: [global] default case = upper Ha a beállításhoz ezt az értéket rendeljük, akkor az újonnan létrehozott fájlok nevében a kisbetűkből nagybetűk lesznek, és ezek nem bírálhatók felül egy programban. Azt ajánljuk, hogy tartsuk meg az alapértelmezett értéket, hacsak nem kell Windows for Workgroups vagy más, 83-as formátumot használó ügyfelekkel együtt dolgoznunk 5. FEJEZET TALLÓZÁS ÉS A LEMEZMEGOSZTÁSOK FOLYTATÁSA | 159 preserve case Ezzel a beállítással azt írhatjuk elő, hogy a Samba az ügyfél részére létrehozandó fájl nevében az ügyfél operációs rendszere által használt alakot, vagy a default case beállításban megadott alakot fogadja-e el. A beállításhoz alapértelmezés szerint a yes érték tartozik, ami azt jelenti, hogy a Samba az ügyfél operációs rendszere
által felkínált alakot fogadja el. Ha a no értéket rendeljük ehhez a beállításhoz, akkor a Samba a default case beállításban megadott alakot fogja használni. Jegyezzük meg, hogy ez a beállítás nem kezeli az ügyfél által küldött 8.3-as kéréseket – lásd ehhez a short preserve case beállítást alant. A beállításhoz a yes értéket rendelhetjük, ha a Samba kiszolgálón olyan alkalmazások akarnak fájlokat létrehozni, amelyek különbséget tesznek a fájlnevekben a kis- és a nagybetűk között. Ha például a Windows NT fájlrendszerét akarjuk utánozni, akkor hagyjuk meg a beállítás alapértelmezés szerinti yes értékét. short preserve case Ezzel a beállítással azt írhatjuk elő, hogy a Samba az ügyfél részére létrehozandó 8.3 formátumú fájlnevekben az ügyfél operációs rendszere által használt alakot, vagy a default case beállításban megadott alakot fogadja-e el. A beállításhoz alapértelmezés szerint a yes érték
tartozik, ami azt jelenti, hogy a Samba az ügyfél operációs rendszere által felkínált alakot fogadja el. A választást a Sambára bízhatjuk a default case alábbi megadásával: [global] short preserve case = no Ha arra szeretnénk rábírni a Sambát, hogy a Windows NT fájlrendszer viselkedését utánozza le, akkor hagyjuk meg a beállítás alapértelmezés szerinti yes értékét. mangled names Ezzel a megosztás hatókörű beállítással azt adhatjuk meg, hogy zsugorítsa-e a Samba a fájlneveket a 8.3-as formátumot használó ügyfelek számára Ha a beállításhoz a no értéket rendeljük, akkor a Samba nem zsugorítja a fájlneveket, és a nevek (az ügyféltől függően) vagy láthatatlanok maradnak, vagy a 8.3-as operációs rendszernek megfelelően csonkulnak A beállításhoz alapértelmezés szerint a yes érték tartozik Ezt az értéket a megosztásokban felülírhatjuk: [data] mangled names = no mangle case Ezzel a beállítással arra utasíthatjuk a
Sambát, hogy zsugorítsa-e azokat a fájlneveket, amelyek nem teljesen olyan alakú betűkből állnak, amilyen alakot (kisbetűt vagy nagybetűt) a default case beállításban megadtunk. A beállításhoz alapértelmezés szerint a no érték tartozik. Ha ehelyett a yes értéket választjuk, akkor biztosítanunk kell, hogy az összes ügyfelünk képes legyen az eredményül kapott rövidített fájlnevek kezelésére Az alapértelmezés szerinti értéket egy megosztáson belül a következők szerint bírálhatjuk felül: 160 | SAMBA [data] mangle case = yes Javasoljuk az alapértelmezés szerinti érték megtartását, hacsak nem szól valamilyen nyomós ok ellene. mangling char Ezzel az ugyancsak megosztás hatókörű beállítással azt a karaktert adhatjuk meg, amelyet a Samba a fájlnevek 8.3-as formátumba való átalakításakor rövidítő karakterként használ Alapbeállítás szerint ez a tilde (~) karakter. Ehelyett bármilyen más karaktert is előírhatunk,
például: [data] mangling char = # mangled stack A Samba egy helyi vermet tart fenn, amelyben az utoljára rövidített 8.3-as fájlneveket tárolja Ezt a vermet arra használja, hogy visszaalakíthassa a rövidített fájlneveket az eredeti alakjukra. Erre akkor lehet szükség, amikor egy alkalmazás létrehoz, ment, bezár vagy módosít egy fájlt. Alapbeállítás szerint ez a verem 50 hosszú és rövidített fájlnév-párt képes tárolni. Ha meg akarjuk kímélni a processzort attól, hogy sűrűn kelljen zsugorítania a fájlneveket, akkor növeljük meg ennek a veremnek a méretét – ezzel viszont több memóriahelyet foglalunk el, és némileg a fájlhozzáférések ideje is meghosszabbodik: [global] mangled stack = 100 mangled map Ha a névzsugorítás alapértelmezés szerint rendelkezésünkre álló lehetőségei nem lennének elegendők, akkor a mangled map beállítás segítségével további utasításokat adhatunk a Sambának a fájlnevek átalakítására
vonatkozóan. Ennek a beállításnak a segítségével leképző mintákat adhatunk meg, amelyeket a Samba a zsugorításhoz használhat Egy példa: [data] mangled map =(*.database *.db) (*.class *.cls) Ebben a beállításban arra utasítjuk a Sambát, hogy keresse meg azokat a fájlokat, amelyek nevében előfordul a gömbölyű zárójelek között elsőként megadott minta, majd alakítsa át ezek nevét a második zárójelpár között megadott mintára, és ennek megfelelően jelenítse meg a fájlneveket a 8.3 formátumot használó ügyfelek számára Ennek a beállításnak akkor vehetjük hasznát, ha hibásan működik a névzsugorítás, vagy olyan formátumot eredményez, amit az ügyfelek nem képesek értelmezni. A mintákat szóközzel kell egymástól elválasztani 5. FEJEZET TALLÓZÁS ÉS A LEMEZMEGOSZTÁSOK FOLYTATÁSA | 161 Zárolások és ,,opportunista” zárolások Az ugyanazon fájlba való egyidejű írást egyik operációs rendszer sem tartja
kívánatos műveletnek. Ezt elkerülendő az operációs rendszerek többsége zárolásokkal biztosítja, hogy egyidejűleg mindig csak egyetlen művelet írhasson egy fájlba. Az operációs rendszerek hagyományos módon a teljes fájlokat lezárják, bár az újabbak lehetővé teszik csak meghatározott számú bájt lezárását. Ha egy másik művelet megpróbál írni egy zárolt fájlba (vagy annak egy részébe), hibaüzenetet kap az operációs rendszertől, és meg kell várnia, amíg feloldásra kerül a zár A Samba támogatja a DOS és az NT fájlrendszer standard zárolási kérelmeit, amelyek csak egyetlen műveletnek engedik meg, hogy adott időben a kiszolgálón lévő teljes fájlba vagy a zárolt területére írjon. Emellett a Samba a Windows NT rendszer új, ,,opportunista zárolás” vagy röviden oplock nevű új zárolási mechanizmusát is támogatja. Opportunista zárolás Az opportunista zárolás révén egy ügyfél arról értesítheti a Sambát,
hogy nemcsak kizárólagos joggal írni akar egy fájlba, hanem el is akarja rejteni a fájlon végzett módosításokat a saját gépén (és nem a Samba kiszolgálón) azzal a céllal, hogy gyorsabban férhessen hozzá a fájlhoz. Amikor a Samba tudomást szerez arról, hogy egy ügyfél opportunista zárolást alkalmaz egy fájlra, akkor ilyen módon jelöli meg a saját verzióját, és megvárja, amíg a felhasználó befejezi a munkáját és visszaküldi a végleges változatot, amivel aztán szinkronizálja az eredeti fájlt. Ha másik ügyfél is hozzá szeretne férni a fájlhoz, mielőtt az első ügyfél még befejezte volna a munkáját, a Samba egy oplock break kérést küld az első felhasználóhoz. Ezzel arra kéri a felhasználót, hogy hagyja abba a módosítások elrejtését, és küldje vissza a fájlt az aktuális állapotában a kiszolgálóra, hogy a megszakítást kérő ügyfél használhassa. Ez az opportunista zárolás azonban nem helyettesíti a standard
megtagadási (deny) módot. Az opportunista zárolás folyamatát az 5.8 ábra szemlélteti A zárolásokkal kapcsolatban azt javasoljuk, hogy a Samba alapértelmezés szerinti zárolásait használjuk: ezek a DOS/Windows standard deny (megtagadás) módú zárolásai a kompatibilitás megtartása céljából, és az oplock zárolások, amelyek a helyi elrejtésből adódóan a teljesítményt javítják. Ha az operációs rendszerünk ki tudja használni az oplock zárolásból származó előnyöket, akkor ezzel jelentősen növelhető a teljesítmény. Ha viszont nincs különösebb okunk ezen beállítások módosítására, akkor hagyjuk meg őket az eredeti állapotukban. A Unix és a zárolás A Windows rendszerek megfelelőképpen tudnak egymással együttműködni, és megfelelő védelmet nyújtanak a másik rendszer felülírásaival szemben. Ha viszont egy fájlt egy Samba rendszerben tárolunk, és a fájlhoz egy Unix művelet is hozzáférhet, a művelet nem vesz
tudomást a Windows oplock zárolásáról, és könnyen megkerülheti azt. Egyes Unix rendszereket viszont már felkészítettek arra, hogy észrevegyék a Samba által fenntartott Windows oplock zárolásokat. Jelenleg ilyen rendszer a SGI Irix 652f és későbbi verziói, a Linux és a FreeBSD, amelyeket hamarosan újabb rendszerek is követni fognak. 162 | SAMBA 5.8 ábra Opportunista zárolás Ha a rendszerünk megérti az oplock zárolásokat, akkor a Samba konfigurációs fájlba vegyük fel a kernel oplocks = yes bejegyzést. Ezzel kiküszöbölhetjük a Unix folyamatok és a Windows felhasználók közötti ütközéseket Ha a rendszerünk nem támogatja a kernel zárolásokat, meghibásodhatnak az adataink, ha valaki egy Unix művelettel olvasni vagy írni próbál olyan fájlt, amihez egy Windows felhasználó is hozzáférhet. Ugyanakkor a Samba rendelkezésünkre bocsát egy – viszonylag durva – védelmi mechanizmust, ha nem használhatók a kernel zárolások:
ez a veto oplock files beállítás. Ha előre tudjuk vagy feltételezzük, hogy melyek azok a Samba kiszolgálón tárolt fájlok, amelyekhez mind Windows, mind Unix ügyfelek hozzá fognak férni, akkor adjuk meg ezen fájlok nevét a veto oplock files beállításban. Ezzel letiltjuk a mintának megfelelő fájlnevekről az oplock zárolást, ezzel együtt az ügyfélnél történő elrejtést is, és lehetővé tesszük, hogy a Windows és a Unix programok a rendszer zárolását vagy a frissített dátumokat használják egy adott fájl eléréséért folytatott versenyben. Egy példa erre a beállításra. veto oplock files = /*.dbm/ Ez a beállítás mind a Unix processzek, mind a Windows felhasználók számára lehetővé teszi a .dbm kiterjesztésű fájlok szerkesztését Figyeljük meg, hogy a beállításnak ugyanolyan a szintaxisa, mint a veto files beállításé A Samba locks és oplocks beállítási lehetőségeit az 5.8 táblázat foglalja össze 5. FEJEZET
TALLÓZÁS ÉS A LEMEZMEGOSZTÁSOK FOLYTATÁSA | 163 5.8 táblázat A locks és az oplocks konfigurációs beállításai Beállítás Paraméterek Funkció Alapértelmezett érték Hatókör share modes Boolean érték yes Megosztás locking Boolean érték yes Megosztás strict locking Boolean érték no Megosztás oplocks Boolean érték yes Megosztás kernel oplocks Boolean érték yes Globális fake oplocks Boolean érték no Megosztás blocking locks Boolean érték yes Megosztás veto oplock files lock directory Karakterlánc (fájlnevek listája) Karakterlánc (teljes elérési út) Ha yes az értéke, bekapcsolja a DOS stílusú, teljes fájlra vonatkozó zárolást. Ha yes az értéke, bekapcsolja bájttartományú zárolást. Ha yes az értéke, letiltja a teljes fájl elérését, ha be van kapcsolva rá a bájttartományú zárolás. Ha yes az értéke, bekapcsolja a fájloknak az ügyfélnél történő elrejtését az adott
megosztásra. Ha yes az értéke, azt jelzi, hogy a kernel támogatja az oplock zárolást. Ha yes az értéke, azt közli az ügyféllel, hogy megkapta a zárolást, de még sincsen zárolva. Lehetővé teszi, hogy a zárolást kérő várakozzon a zárolás megadására. Nem alkalmaz oplock zárolást az adott fájlokra. Nincs Megosztás Megadja azt a helyet, ahol a Samba különböző fájlokat tárol, ide értve a zárolt fájlokat is. A Samba makeGlobális fájlban megadottak szerint share modes A Sambában rendelkezésre álló legegyszerűbb zárolás a megtagadás (deny) módú, vagy share modes néven ismert zárolás, amelyeket olyan programok alkalmaznak, mint a szövegszerkesztők, hogy megakadályozzák a fájlok véletlen felülírását. A megtagadás módú zárolásokat az 5.9 táblázat foglalja össze 164 | SAMBA 5.9 táblázat Az SMB megtagadás módú zárolásai Zárolás Leírás DENY NONE DENY ALL DENY READ Semmilyen fájlkérést sem tagad meg.
Az aktuális fájlra minden megnyitási kérést megtagad. Az aktuális fájlra vonatkozó minden, csak olvasásra vonatkozó megnyitási kérést megtagad. Az aktuális fájlra vonatkozó minden, csak írásra vonatkozó megnyitási kérést megtagad. Ha olvasásra van megnyitva a fájl, mások is olvashatják, de nem írhatnak bele. Ha írásra van megnyitva, mások egyáltalán nem nyithatják meg Elavult. DENY WRITE DENY DOS DENY FCB A share modes beállítás, amely kikényszeríti a fenti zárolásokat, alapbeállítás szerint be van kapcsolva. A kikapcsolásához írjuk be a következőt: [accounting] share modes = no Sohase tiltsuk le ezt az alapértelmezett zárolási mechanizmust, hacsak nincs nyomós okunk rá. Számos DOS és Windows alatt futó alkalmazás igényli a helyes működéséhez ezt a zároló mechanizmust, és nagyon zokon venné a hiányát. locking A locking beállítás segítségével azt írhatjuk elő a Sambának, hogy alkalmazza-e egy ügyfél
kérésére a kiszolgálón a bájttartományú zárolást vagy sem. A Samba normál Unix zárolásként valósítja meg a bájttartományú zárolásokat, és a jól megtervezett Unix processzeket megakadályozza abban, hogy felülírják a zárolt bájttartományt A beállítást az alábbiak szerint adhatjuk meg egy megosztásra: [accounting] locking = yes Ha a locking beállításhoz a yes értéket rendeljük, a hozzáférési kérés teljesítése mindaddig késik, amíg bármelyik típusú zárolás birtokosa fel nem oldja a zárolást (vagy össze nem omlik). Ha viszont a no értéket rendeljük hozzá, akkor a fájlokra nem fog érvényesülni a bájttartományú zárolás, jóllehet úgy tűnik, hogy elvégezhető a fájlok zárolása és a zárolás feloldása. A beállításhoz alapértelmezés szerint a yes érték tartozik, de ezt megváltoztathatjuk, ha csak olvasható adathordozót használunk strict locking Ez a beállítás minden egyes, bájttartományú zárolásra
irányuló fájlhozzáférést megvizsgál a zárolt bájtok tartományában. Erre általában nincs szükség, ha egy ügyfél következetesen tartja magát az összes zárolási mechanizmushoz. A beállítás alapértelmezett értéke a no, bár ez egy adott megosztásra megváltoztatható: 5. FEJEZET TALLÓZÁS ÉS A LEMEZMEGOSZTÁSOK FOLYTATÁSA | 165 [accounting] strict locking = yes Azzal, hogy a beállításhoz a yes értéket rendeljük, az összes bájtzárolást használó fájlra kikényszerítjük a kötelező zárolásokat. blocking locks A Samba a blocking locks beállítást is támogatja, ami a tartományi zárolások egyik alváltozatának tekinthető. Ha egy ügyfél azt tapasztalja, hogy egy bájttartományhoz nem férhet hozzá, megadhatja azt az időtartamot, amennyi ideig hajlandó várakozni. A kiszolgáló ekkor félreteszi a kérelmet, és rendszeres időközönként megvizsgálja, hogy felszabadult-e már a bájttartomány. Ha igen, akkor értesíti
erről az ügyfelet, ha viszont időközben lejárt a várakozási idő, azt közli a felhasználóval, hogy nem tudta teljesíteni a kérését. Ezzel az eljárással megkímélhető az ügyfél attól, hogy folytonosan vizsgálja, megszűnt-e a zárolás. A beállítást az alábbiak szerint tilthatjuk le egy megosztásra: [accounting] blocking locks = no Ha a yes értéket rendeljük a beállításhoz, akkor a zárolás blokkolása a teljes fájlra érvényesül. Ha a beállításhoz a no értéket rendeljük, akkor a Samba a normál blokkolási eljárást használja. A beállítás alapértelmezett értéke a yes oplocks Ezzel a beállítással engedélyezhetjük vagy tilthatjuk az ügyfélnél az opportunista zárolások támogatását. A beállítás alapértelmezés szerint támogatja az ilyen zárolást, de ezt az alábbiak szerint meg is változtathatjuk: [data] oplocks = no Ha rendkívül instabil a hálózati környezetünk, vagy ha sok olyan ügyfelünk van, aki nem tudja
használni az opportunista zárolást, akkor célszerűbb nem használni ezt a beállítást. Akkor is ajánlatos tiltani az ilyen zárolást, ha biztosítanunk kell, hogy Unix alkalmazások (mint például a vi) és SMB ügyfelek is hozzáférhessenek ugyanazokhoz a fájlokhoz (hacsak nincs olyan szerencsénk, hogy az operációs rendszerünk a kernel oplock zárolásokat is támogatja, amint erről korábban olvashattunk). fake oplocks Az opportunista zárolás megvalósítása előtt a Samba démonjai a fake oplocks (hamis oplocks) beállítás révén úgy tettek, mintha engedélyezték volna az oplocks zárolásokat. Ha engedélyezve volt ez a beállítás, az összes ügyfél azt a tájékoztatást kapta, hogy a fájlra kiadható az opportunista zárolás, és nem kapnak figyelmeztetést az egyidejű hozzáférésekről. Mióta a Samba lehetővé teszi a valóságos oplocks zárolásokat, ez a beállítás elvesztette a jelentőségét 166 | SAMBA kernel oplocks Ha egy
Unix alkalmazás a Sambától függetlenül olyan fájlt próbál meg frissíteni, amelyet a Samba opportunista módon zárolt egy Windows ügyfél elől, akkor ez a művelet valószínűleg sikerülhet neki, és erről sem a Samba, sem az ügyfél sohasem szerez tudomást. Ha viszont a helyi Unix operációs rendszer támogatja ezt a beállítást, a Samba tájékoztathatja a Unix alkalmazást az opportunista módon zárolt fájlokról. Ekkor a Unix felfüggeszti a processz futását, a Sambán keresztül értesíti az ügyfelet, hogy írja vissza a módosításait, és csak ez után engedélyezi a fájl megnyitását. Lényegében ez azt jelenti, hogy a Unix operációs rendszer kernelje ugyanúgy képes kezelni az oplocks zárolásokat, mint maga a Samba A kernel oplocks beállításnak ezt a viselkedését a következő módon engedélyezhetjük: [global] kernel oplocks = yes A Samba automatikusan észleli a kernel oplocks zárolásokat és használja is őket. E könyv
írásának idején csak az SGI Irix 6.52f és a későbbi verziói támogatják az ilyen zárolásokat A közeljövőben ugyanez várható a Linux és a FreeBSD operációs rendszerektől. A kernel oplocks zárolásokat nem támogató operációs rendszerek engedélyezik a Unix processznek egy fájl frissítését, de az ügyfélprogramok csak később vagy egyáltalán nem értesülnek ezekről a változásokról. veto oplock files A veto oplock files beállításban felsorolhatjuk azokat a fájlokat, amelyekre sohasem akarjuk alkalmazni az oplocks zárolásokat. A beállítás globális vagy megosztás hatókörben is használható Például: veto oplock files = /*.bat/*.htm/ A beállításhoz minták sorozatát rendeltük. Mindegyik listaelemnek törtjellel (/) kell kezdődnie és végződnie, még akkor is, ha a lista egyetlen elemből áll Általános helyettesítőként csillag karakterek használhatók 0 vagy több karakter helyett Minden egyes kérdőjel pontosan egy
karaktert helyettesít. Javasolható, hogy mindazokra a fájlokra tiltsuk le az oplocks zárolásokat, amelyeket Unix alkalmazásoknak kell frissíteniük, vagy amelyekhez több processznek egyidejűleg kell hozzáférnie. lock directory Ezzel a beállítással (amely lock dir alakban is írható) annak a könyvtárnak a helyét adhatjuk meg, ahol a Samba a deny (megtagadás) módon zárolt fájlokat tárolja. A Samba ebben a könyvtárban más fájlokat is tárol, így például a tallózólistákat és a megosztott memóriafájlokat. Ha engedélyezve van a WINS, akkor a WINS adatbázisa is ebbe a könyvtárba íródik. A beállításhoz tartozó alapértelmezett könyvtárat a Samba make-fájl programja határozza meg, ami tipikusan a /usr/local/samba/var/locks. Ezt a helyet a következő módon felülbírálhatjuk: [global] lock directory = /usr/local/samba/locks Az alapértelmezett könyvtárat általában nem kell megváltoztatnunk, hacsak nem akarjuk a zárolt fájlokat egy, a
szokásoknak még inkább megfelelő helyre írnunk, például a /var/spool/locks könyvtárba. Felhasználók, biztonság és tartományok Ebben a fejezetben arról olvashatunk, hogy miként konfigurálhatjuk a Samba kiszolgálóhoz csatlakozó felhasználókat. A feladat első hallásra egyszerűnek tűnhet, de hamarosan látni fogjuk, hogy a művelet során számos problémával kell szembenéznünk. A Samba rendszergazdáknak például komoly nehézséget okoz a felhasználók hitelesítése – a Samba levelezőlistáira a jelszavakkal és a biztonsággal kapcsolatban érkezik a legtöbb kérdés. Ha megtudjuk, hogy a különböző hitelesítő mechanizmusok hogyan működnek bizonyos architektúrákban (és másokban miért nem), akkor rengeteg időt takaríthatunk meg a Samba felhasználóinak tesztelése és a hibakeresés során. Felhasználók és csoportok Mielőtt még belefognánk a részletekbe, fel kell hívnunk a Samba rendszergazdák figyelmét arra, hogy ha
Windows 98 vagy NT 4.0 Workstation SP3 rendszert használó ügyfelek is kapcsolódnak a kiszolgálóhoz, akkor a kiszolgálót úgy kell konfigurálniuk, hogy képes legyen titkosított jelszavak kezelésére. Ezek az operációs rendszerek ugyanis titkosított jelszavakat küldenek, és a Sambának vissza kell tudni fejtenie ezeket. Erről a konfigurálásról a fejezet későbbi részében lesz szó Kezdjük a feladatot egyetlen felhasználóval. Felhasználó telepítésének legegyszerűbb módja az, hogy a kiszolgálón elkészítünk a számára egy Unix fiókot (és a home könyvtárát), majd tájékoztatjuk a Sambát a felhasználó létezéséről. Az utóbbit olyan lemezmegosztás készítésével is megtehetjük, amely leképzi a felhasználó home könyvtárát a Samba konfigurációs fájlban, és az érvényes felhasználókra korlátozza az ehhez való hozzáférést. Például: [dave] path = /home/dave comment = Dave home könyvtára writeable = yes valid users = dave
A valid users beállítás azokat a felhasználókat sorolja fel, akik számára engedélyezve van a megosztáshoz való hozzáférés. A példánkban ez csak a dave nevű felhasználó Az előző fejezetekben a guest ok beállítást használva bármely felhasználónak engedélyeztük a hozzáférést. Mivel most nem ez a célunk, nem használjuk ezt a beállítást Ha akar- 168 | SAMBA nánk, természetesen engedélyezhetnénk, hogy mind a hitelesített felhasználók, mind a vendég felhasználók hozzáférhessenek egy adott megosztáshoz. A kétféle hozzáférés közötti különbség az egyes fájlokra megadott hozzáférési jogokkal függ össze. Emlékezzünk arra, hogy a felhasználó home könyvtárát a %H változóval rövidíthetjük. Emellett a Unixos felhasználónév helyett a %u, és/vagy az ügyfél felhasználóneve helyett a %U változót használhatjuk a beállításokban. Például: [dave] comment = %U home könyvtár writeable = yes valid users = dave
path = %H A fenti példák mindaddig megfelelően működnek, amíg a Samba számára ügyfélként megjelenő Unix felhasználónak olvasási és írási hozzáférése van az elérési útban (path) megadott könyvtárhoz. Másként fogalmazva az ügyfélnek először át kell haladnia a Samba biztonsági mechanizmusán (titkosított jelszavak, valid users beállítás stb.), és meg kell felelnie a Unix oldali normál fájl- és könyvtárengedélyeknek is, mielőtt megkapná a megosztáshoz való hozzáférés olvasási/írási jogát. Abban az esetben, ha csak egyetlen felhasználónak kell hozzáférnie egy home könyvtárhoz, a hozzáférési jogosultságok megadása akkor történik meg, amikor az operációs rendszer létrehozza a felhasználó fiókját. Ha viszont csoportelérésű megosztott könyvtárat készítünk, ennél valamivel több lépésre van szükség Próbáljunk meg egy csoportmegosztást létrehozni az accounting részleg számára az smbconf fájlban:
[accounting] comment = Accounting részleg könyvtára writeable = yes valid users = @account path = /home/samba/accounting create mode = 0660 directory mode = 0770 Elsőként az tűnhet fel, hogy a példában a valid users (érvényes felhasználók) beállításhoz nem egy vagy több felhasználónevet, hanem az @account értéket rendeltük. Ez a rövidítés azt jelenti, hogy az érvényes felhasználókat a Unix account csoportfiókja tartalmazza Ezeket a felhasználókat fel kell vennünk a rendszer csoportfájljában (/etc/group) lévő account csoportbejegyzésbe, hogy a Samba a csoport tagjainak tekinthesse őket. Miután ez megtörtént, a Samba ezeket a felhasználókat olyan érvényes felhasználóknak tekinti, akik hozzáférhetnek az adott megosztáshoz. Ezt követően el kell készítenünk azt a megosztott könyvtárat, amelyhez a csoport tagjai hozzáférhetnek. Ezt a path konfigurációs beállítással tehetjük meg Az alábbi Unix parancsokkal hozhatjuk létre az
accounting részleg megosztott könyvtárát (feltételezve, hogy létezik a /home/samba könyvtár): 6. FEJEZET FELHASZNÁLÓK, BIZTONSÁG ÉS TARTOMÁNYOK | 169 # mkdir /home/samba/accounting # chgrp account /home/samba/accounting # chmod 770 /home/samba/accounting Két másik beállítás is szerepel ebben az smb.conf példában, amellyel már találkoztunk az előző fejezetben. Ez a create mode és a directory mode beállítás, amelyek azokat a maximális fájl- és könyvtárengedélyeket határozzák meg, amelyekkel egy újonnan létrehozandó fájl vagy könyvtár rendelkezhet. Az esetünkben a megosztástól minden világi hozzáférést megtagadtunk. (Ezt a chmod parancs is megerősíti) A [homes] megosztás Térjünk vissza egy pillanatra a felhasználói megosztásokhoz. Ha több felhasználóhoz kell létrehoznunk megosztott home könyvtárakat, akkor ehhez a 4. fejezetben megismert speciális [homes] megosztást használhatjuk Ebben a megosztásban mindössze a
következőket kell megadnunk: [homes] browsable = no writable = yes A [homes] megosztás a Samba konfigurációs fájljának egyik különleges szakasza. Ha egy ügyfél olyan normál megosztáshoz próbál hozzáférni, amely nem szerepel az smb.conf fájlban (például a Windows Intézőjében egy UNC-címmel megadva), a Samba egy [homes] megosztást fog keresni. Ha talál ilyet, akkor feltételezi, hogy a kért megosztásnév egy felhasználó neve, és lekérdezi a jelszóadatbázisát (ami az /etc/passwd vagy egy ehhez hasonló fájlban van). Ha megtalálja a felhasználó nevét, akkor feltételezi, hogy az ügyfél unixos felhasználó, aki a saját home könyvtárához próbál meg kapcsolódni. Példaként tegyük fel, hogy egy sofia nevű felhasználó megpróbál kapcsolódni a Samba kiszolgálón lévő [sofia] nevű megosztáshoz. A konfigurációs fájlban nincs ilyen nevű megosztás, de van benne [homes] megosztás, és a jelszóadatbázis is tartalmaz egy sofia nevű
felhasználót. A Samba ekkor a következő lépéseket hajtja végre: 1. Létrehoz egy [sofia] nevű új lemezmegosztást a [homes] szakasz path beállításában megadott elérési úttal Ha a [homes] szakaszban nincs megadva path beállítás, akkor létrehoz egy elérési utat a home könyvtárhoz. 2. Inicializálja az új megosztás beállításait a [global] szakaszban található alapértelmezett értékekkel és a [homes] szakasz felülbíráló értékeivel, a browseable beállítás kivételével. 3. A sofia nevű ügyfelet összekapcsolja ezzel a megosztással A [homes] megosztás gyors és kényelmes megoldást kínál a felhasználók megosztásainak létrehozásához anélkül, hogy meg kellene kettőznünk az smb.conf fájlban a jelszóadatbázis adatait Van azonban néhány olyan különlegessége, amire itt ki kell térnünk: • A [homes] szakasz olyan fiókokat is készíthet a gépen, amelyek nem mindig kívánatosak. Így például olyan nevekhez is létrehozhat
megosztást, mint root, bin, sys, uucp és ehhez hasonlók (ez ellen a globális hatókörű invalid users beállítással védekezhetünk.) 170 | SAMBA • A browseable konfigurációs beállítás jelentése ebben a szakaszban eltér a más megosztásokban betöltött szerepétől. Itt azt jelzi, hogy csak a [homes] szakasz nem jelenik meg a helyi tallózólistában, és nem vonatkozik az [alice] megosztásra. Amikor a Samba (a kapcsolódást követően) létrehozza az [alice] szakaszt, a browseable beállítás értékét az adott megosztás [global] szakaszából és nem a [homes] szakaszából veszi ki. Amint említettük, nincs szükség a path beállításra a [homes] szakaszban, ha a felhasználóknak Unix home könyvtáruk van a kiszolgáló /etc/passwd fájljában. Gondoskodnunk kell azonban arról, hogy létezzen érvényes home könyvtár, mert a Samba ezt nem hozza automatikusan létre egy felhasználó számára, és megtagadja a kapcsolatot, ha nem létezne ilyen
könyvtár vagy nem lenne elérhető. Megosztások elérésének szabályozása Biztonsági okokból gyakran korlátozni kell a felhasználókat adott megosztások elérésében. Ezt a Sambában könnyen megtehetjük, mert számos olyan beállítást bocsát a rendelkezésünkre, amelyek segítségével gyakorlatilag bármilyen biztonsági óvintézkedést megtehetünk Lássunk néhány olyan konfigurációs beállítást, amelyet a Samba telepítésekor használhatunk. Itt is elmondjuk, hogy azok az ügyfelek, akik Windows 98 vagy a 3-as szervizcsomaggal kiegészített NT 4.0 operációs rendszert vagy ezek újabb verzióit használva kapcsolódnak a Samba kiszolgálóhoz, titkosított jelszavakat küldenek a kiszolgálóra. Ha a Sambát nem készítjük fel az ilyen jelszavak fogadására, akkor a kiszolgáló nem hozza létre ezeket a kapcsolatokat Ennek a fejezetnek a ,,Jelszavak” részében olvashatunk arról, miként konfigurálhatjuk a Sambát a titkosított jelszavak
fogadásához Az előbb láttuk, hogy mi történik, amikor érvényes felhasználókat adunk meg. Megadhatjuk azonban az érvénytelen felhasználók listáját is – azon felhasználókat, akiknek sohasem engedélyezzük, hogy hozzáférjenek a Sambához vagy valamely megosztásához Ezt az invalid users beállítás segítségével tehetjük meg. Ennek a beállításnak a gyakori használatára már korábban utaltunk a [homes] szakasz kapcsán: egy globális hatókörű beállítással gondoskodhatunk arról, hogy különböző rendszerhasználók és kiemelt felhasználók ne kerülhessék meg a tiltást. Például: [global] invalid users = root bin daemon adm sync shutdown halt mail news uucp operator gopher auto services = dave peter bob [homes] browsable = no writeable = yes 6. FEJEZET FELHASZNÁLÓK, BIZTONSÁG ÉS TARTOMÁNYOK | 171 A valid users beállításhoz hasonlóan az invalid users beállításhoz is rendelhetők csoportnevek. Abban az esetben, ha egy
felhasználói vagy csoportnév mindkét listában előfordul, az invalid users beállításnak van elsőbbsége, és az ide tartozó felhasználók vagy csoportok nem férhetnek hozzá a megosztáshoz. Ennek ellentéteként az admin users beállítás segítségével kifejezetten azokat a felhasználókat is megadhatjuk, akik szuperfelhasználóként (root) férhetnek hozzá egy megosztáshoz. Tekintsük az alábbi példát: [sales] path = /home/sales comment = Fiction Corp Sales Data writeable = yes valid users = tom dick harry admin users = mike Ehhez a beállításhoz felhasználói és csoportnevek is rendelhetők. Ezen túlmenően az @ karakter előreírásával NIS hálózatcsoportokat is specifikálhatunk; ha a Samba nem talál hálózatcsoportokat, akkor azt feltételezi, hogy egy normál Unixos csoportra hivatkozunk. Legyünk óvatosak, amikor teljes csoportnak adunk rendszergazdai privilégiumokat egy megosztás eléréséhez. A Samba fejlesztői semmiképpen sem
javasolják ezt, mert ezzel az adott megosztáshoz root szintű hozzáférést engedélyezünk a specifikált felhasználók vagy csoportok részére. Ha egy adott megosztáshoz hozzáférő felhasználók számára csak olvasási vagy olvasási és írási jogokat akarunk megadni, akkor ezt a read list és a write list beállítások segítségével tehetjük meg. Például: [sales] path = /home/sales comment = Fiction Corp Sales Data read only = yes write list = tom dick A write list beállítással nem bírálhatók felül a Unix engedélyek. Ha anélkül hoztunk volna létre egy megosztást, hogy a Unix rendszerben engedélyeztük volna a felhasználó számára az írási hozzáférést, a felhasználó nem férhet hozzá a megosztáshoz, bármi legyen is a write list beállítás értéke. Vendéghozzáférés Amint korábban szó volt róla, megadhatunk olyan felhasználókat, akik vendégként férhetnek hozzá egy megosztáshoz. A vendéghozzáférések beállításai
egyszerűen használhatók Az első beállítás, a guest account azt a Unix fiókot adja meg, amelyhez a vendégfelhasználók tartozni fognak, amikor kapcsolódnak a Samba kiszolgálóhoz A beállítás az alapértelmezés szerinti értékét a Samba lefordításakor kapja meg, ami tipikusan a nobody (=senki). Ezt az értéket azonban módosíthatjuk például az ftp értékre, ha problémát okoz a különböző rendszerszolgáltatások elérése. | 172 SAMBA Ha egy megosztáshoz való hozzáférést csak a vendégekre akarjuk korlátozni – vagyis azt szeretnénk, hogy a felhasználók csak vendégként férhessenek hozzá a megosztáshoz –, akkor a guest only beállítást a guest ok beállítással együtt használhatjuk az alábbiak szerint: [sales] path = /home/sales comment = Fiction Corp Sales Data writeable = yes guest ok = yes guest account = ftp guest only = yes Győződjünk meg arról, hogy ebben a szereposztásban mind a guest only, mind a guest ok
beállításhoz a yes értéket rendeltük, mert ellenkező esetben a Samba nem használná a megadott guest account fiókot. Hozzáférést szabályozó beállítások A megosztások elérését szabályozó beállítási lehetőségeket a 6.1 táblázat foglalja össze 6.1 táblázat Megosztás szintű hozzáférési beállítások Beállítás Paraméterek Funkció Alapértelmezett érték Hatókör admin users Karakterlánc (felhasználónevek listája) Karakterlánc (felhasználónevek listája) Karakterlánc (felhasználónevek listája) Azon felhasználók listáját adja meg, akik rootként végezhetnek műveleteket. Azon felhasználók listáját adja meg, akik hozzáférhetnek egy megosztáshoz. Azon felhasználók listáját adja meg, akik nem férhetnek hozzá egy megosztáshoz. Azon felhasználók listáját adja meg, akik csak olvasásra férhetnek hozzá egy írható megosztáshoz. Azon felhasználók listáját adja meg, akik olvasásra és írásra férhetnek
hozzá egy csak olvasható megosztáshoz. Megadja a megosztáshoz egyidejűleg létrehozható hozzáférések maximális számát. Nincs Megosztás Nincs Megosztás Nincs Megosztás Nincs Megosztás Nincs Megosztás 0 Megosztás valid users invalid users read list Karakterlánc (felhasználónevek listája) write list Karakterlánc (felhasználónevek listája) max connections Numerikus 6. FEJEZET FELHASZNÁLÓK, BIZTONSÁG ÉS TARTOMÁNYOK | 173 6.1 táblázat folytatása Beállítás Paraméterek Funkció Alapértelmezett érték Hatókör guest only (only guest) guest account Boolean érték Azt jelzi, hogy a megosztáshoz csak vendég férhet hozzá. no Megosztás Karakterlánc (fiók neve) Megadja a vendéghozzáféréshez használt Unix fiók nevét. nobody Megosztás admin users Ehhez a beállításhoz azon felhasználók nevét rendelhetjük, akik rootként hajthatnak végre fájlműveleteket. Ez azt jelenti, hogy az ilyen felhasználók
más felhasználók munkáit módosíthatják vagy akár tönkre is tehetik, bármilyen engedélyek is tartozzanak a fájlokhoz. Az ilyen felhasználók által létrehozott fájloknak a root lesz a tulajdonosa, és a rendszergazdai jogú felhasználók alapértelmezés szerinti csoportja használhatja ezeket Az admin users beállítás arra használható, hogy a PC-s felhasználók rendszergazdaként dolgozhassanak adott megosztásokon. Lehetőség szerint kerüljük ennek a beállításnak a használatát. valid users és invalid users A fenti két beállítás segítségével azokat a felhasználókat és csoportokat sorolhatjuk fel, akik, illetve amelyek számára meg akarjuk adni, illetve meg akarjuk tiltani egy adott megosztás elérését. A listában a neveket szóköz választja el, és a csoport neve elé írt @ karakterrel NIS vagy Unix csoportnevet is megadhatunk E két beállítás használatával kapcsolatban fontos tudnunk, hogy az invalid users beállításhoz rendelt
lista egyetlen felhasználója vagy csoportja számára sincs engedélyezve a hozzáférés, még akkor sem, ha szerepel a nevük (bármilyen formában) a valid users beállítás listájában. Alapértelmezés szerint egyik beállításhoz sem tartozik lista Ha egyik beállításhoz sincs rendelve lista, akkor bármelyik felhasználó hozzáférhet a megosztáshoz. read list és write list A valid users és az invalid users beállításokhoz hasonlóan ez a beállításkettős azokat a felhasználókat adja meg, akik csak olvasásra férhetnek hozzá egy írható megosztáshoz, illetve írásra és olvasásra férhetnek hozzá egy csak olvasható megosztáshoz. Mindkét beállításhoz felhasználók listája rendelhető. A read list beállítás a Samba által megadott összes engedélyt felülbírálja, akárcsak a kiszolgáló rendszerén a Unix fájlengedélyeket, vagyis megtagadja a felhasználóktól az írási jogot. A write list beállítás felülbírálja a Samba által
írásra megadott engedélyeket, de nem adhat írási engedélyt, ha a felhasználónak a Unix rendszeren nincs joga írni a fájlba. A listában a csoport neve elé írt @ karakterrel NIS vagy Unix csoportneveket is megadhatunk (mint például @users) Alapértelmezés szerint egyik beállításhoz sem tartozik lista 174 | SAMBA max connections Ezzel a beállítással azon felhasználók maximális számát adhatjuk meg, akik egyidejűleg kapcsolódhatnak egy megosztáshoz. Ha a kapcsolódások száma eléri az itt megadott számot, a Samba az újabb kérelmeket elutasítja A beállításhoz alapértelmezés szerint a 0 érték tartozik, ami azt jelenti, hogy a kapcsolatok száma nincs korlátozva. Ezt az értéket az alábbiak szerint módosíthatjuk: [accounting] max connections = 30 Ennek a beállításnak akkor vehetjük a hasznát, ha korlátozni akarjuk egy licencprogramot vagy egy adathalmazt egyidejűleg használó felhasználók számát. guest only Ez a megosztás
szintű beállítás (amit esetenként az only guest alakban is használnak) a guest account beállításban megadott felhasználói fiókhoz létrehozandó kapcsolatot kényszeríti ki. A megosztásba kifejezetten be kell venni a guest ok = yes beállítást, hogy a Samba észlelje a fiókot. A guest only beállításhoz alapértelmezés szerint a no érték tartozik. guest account Ez a beállítás annak a fióknak a nevét adja meg, amelyet a Sambában a vendégek használnak a megosztások eléréséhez. A beállításhoz tartozó alapértelmezett érték rendszerről rendszerre változó, de gyakran a nobody (=senki) az értéke. Egyes alapértelmezés szerinti felhasználói fiókoknak problémáik vannak a vendégfelhasználóként való hozzáférésekkel. Ha ilyen problémák lépnének fel a rendszerünkben, akkor a Samba fejlesztői azt javasolják, hogy az ftp fióknevet használjuk a vendégfelhasználók fiókneveként Felhasználói nevek beállításai A 6.2 táblázat
két olyan beállítást mutat be, amelyek segítségével a Samba kijavíthatja a Windows és a Unix rendszerekben használt felhasználónevek közötti eltéréseket. 6.2 táblázat Felhasználói nevek beállítási lehetőségei Beállítás Paraméterek Funkció Alapértelmezett érték Hatókör username map Karakterlánc (teljes elérési út) Numerikus Megadja a felhasználónevet leképező fájl nevét. Nincs Globális Megadja a felhasználónév illesztése során használható nagybetűk számát. 0 Globális username level 6. FEJEZET FELHASZNÁLÓK, BIZTONSÁG ÉS TARTOMÁNYOK | 175 username map Amíg egy SMB hálózaton a felhasználói nevek viszonylag hosszúak lehetnek (max. 255 karakter), addig a unixos hálózatok általában nyolc karakternél hosszabb neveket nem tesznek lehetővé. Ez azt jelenti, hogy egy felhasználónak az ügyfélgépen hosszabb, a Samba kiszolgálón pedig rövidebb (másik) neve lehet. Ezen a problémán úgy
segíthetünk, hogy a nagyobb szabadsággal megválasztható ügyfélnevet egy nyolc vagy ennél kevesebb karakterből álló unixos névnek feleltetjük meg, és a megfeleltetéseket normál, szöveges fájlban tároljuk. A megfeleltetések formátumára rövidesen kitérünk Ezt követően a globális hatókörű username map beállításban megadjuk a fájl elérési útját Korlátozzuk ennek a fájlnak az elérhetőségét: tegyük a rootfelhasználót a fájl tulajdonosává, és mindenki más számára tiltsuk meg a fájl elérését. Ha nem tennénk így, akkor egy meghatalmazás nélküli felhasználó, aki hozzáférne a fájlhoz, könnyen leképezhetné a felhasználónevét a Samba rootfelhasználói nevére A beállítást az alábbi módon használhatjuk: [global] username map = /etc/samba/usermap.txt A felhasználónevek megfeleltetését tartalmazó fájlban az egyes bejegyzéseknek a következő formátumúaknak kell lenniük: Unix felhasználói név, utána egy
egyenlőségjel (=), amit egy vagy több szóközzel elválasztva követnek az SMB ügyfél felhasználói nevek. Jegyezzük meg, hogy ha nem intézkedünk másként (vagyis ha nem vendégkapcsolatról van szó), akkor a Samba mind az ügyfél, mind a kiszolgálói felhasználónévhez ugyanazt a jelszót várja. Az @ karakter segítségével NT csoportokat is megfeleltethetünk egy vagy több Unix csoportnak. Néhány példa a fentiekre: jarwin = JosephArwin manderso = MarkAnderson users = @account Egy bejegyzésben csillag (*) karakterrel jelölhetünk olyan megfeleltetést, amely bármilyen ügyfél felhasználói nevet jelenthet: nobody = * A fájlban létra (#) vagy pontosvessző (;) karakterekkel kezdődő sorokban helyezhetünk el megjegyzéseket. Jegyezzük meg, hogy ezt a fájlt arra is használhatjuk, hogy egy Unix felhasználót másik Unix felhasználóra irányítsunk át. Legyünk azonban óvatosak ezzel, mert előfordulhat, hogy a Samba és az ügyfelünk nem
értesíti arról a felhasználót, hogy át lett irányítva, és a Samba más jelszót várhat tőle. username level Az SMB ügyfelek (például a Windows ügyfelek) az SMB kapcsolatkéréseik során a felhasználói nevüket gyakran csupa nagybetűs alakban küldik el, vagyis nem különböztetik meg feltétlenül a kis- és a nagybetűket. Egy Unix kiszolgáló viszont különbséget tesz közöttük: 176 | SAMBA az ANDY felhasználói nevet nem tekinti azonosnak az andy névvel. Alapbeállítás szerint a Samba a következőképpen hidalja át ezt a problémát: 1. Az ügyfél által küldött névvel pontosan egyező név alapján megkeresi a felhasználó fiókját. 2. Megvizsgálja a felhasználónevet csupa kisbetűs alakban 3. Megvizsgálja a felhasználónevet úgy, hogy csak az első betűjét alakítja át nagybetűsre A globális hatókörű username level beállítás segítségével további nagy- és kisbetűs kombinációk vizsgálatát is előírhatjuk a Samba
számára. A beállításhoz egész értékeket rendelhetünk, amelyek azt mondják meg, hogy a felhasználói névben hány betűt kell nagybetűs alakra átalakítani, amikor egy felhasználó hozzá akar férni egy megosztáshoz. A beállítást a következő módon használhatjuk: [global] username level = 3 A fenti példában a Samba a felhasználóneveken minden olyan permutációt elvégez, ami három nagybetűvel végrehajtható. Minél nagyobb ez a szám, annál több számítást kell végeznie a Sambának, és annál tovább tart a hitelesítés. Hitelesítési biztonság Ezen a ponton elérkeztünk oda, hogy megvizsgáljuk, miként hitelesíti a Samba a felhasználókat. A felhasználónak minden olyan megosztásra irányuló kapcsolatkérés esetén, amely nem engedélyezi a vendéghozzáférést, el kell küldenie egy jelszót, hogy létrejöhessen a kapcsolat. A security beállítás megfelelő használatával írhatjuk elő, hogy mit kezdjen a Samba a jelszóval, és
milyen hitelesítési stratégiát alkalmazzon a megfelelő biztonság eléréséhez. Jelenleg a Samba négy különböző szinten támogatja a hálózati biztonságot: megosztási, felhasználói, kiszolgálói és tartományi szinten. Megosztás szintű biztonság A munkacsoportban minden egyes megosztáshoz egy vagy több jelszó tartozik. Bárki, aki ismer egy érvényes jelszót, hozzáférhet az adott megosztáshoz. Felhasználói szintű biztonság A munkacsoport megosztásai úgy vannak konfigurálva, hogy bizonyos felhasználóknak engedélyezzék a megosztások elérését. A Samba kiszolgáló ellenőrzi a felhasználókat és a jelszavukat arra vonatkozóan, hogy hozzáférhetnek-e az adott megosztáshoz Kiszolgálói szintű biztonság Ez azonos a felhasználói szintű biztonsággal azzal a kivétellel, hogy a Samba külön SMB kiszolgálót használ a felhasználók és a jelszavak érvényesítésére, mielőtt engedélyezné adott megosztások elérését. 6.
FEJEZET FELHASZNÁLÓK, BIZTONSÁG ÉS TARTOMÁNYOK | 177 Tartomány szintű biztonság A Samba egy Windows tartomány tagjává válik, és a tartomány elsődleges tartományvezérlőjét (PDC) használja a hitelesítés elvégzéséhez. Miután megtörtént a hitelesítés, a felhasználó egy speciális ,,tokent” kap, ami lehetővé teszi számára, hogy hozzáférjen azokhoz a megosztásokhoz, amelyekre ez a token feljogosítja. Miután a felhasználó a token birtokába jutott, az elsődleges tartományvezérlő nem vizsgálja újra a felhasználó jelszavát minden olyan alkalommal, amikor a tartományon belül más megosztásokhoz akar hozzáférni. Ezek a biztonsággal kapcsolatos ,,házirendek” a globális security beállítás segítségével valósíthatók meg (lásd a 6.3 táblázatot) 6.3 táblázat Biztonsági beállítások Beállítás Paraméterek Funkció Alapértelmezett érték Hatókör security domain, server, share vagy user A Samba kiszolgáló
által használt biztonsági szintet jelzi. user (Samba 2.0) vagy share (Samba 1.9) Globális Megosztás szintű biztonság Megosztás szintű biztonság alkalmazásakor minden egyes megosztáshoz egy vagy több jelszó tartozik. A biztonságnak ez a típusa annyiban különbözik a biztonság többi típusától, hogy a megosztáshoz való hozzáférés nem valamely felhasználóhoz vagy felhasználókhoz kapcsolódik Bárki, aki ismeri a jelszót, hozzáférhet a megosztáshoz A megosztásokhoz gyakran több jelszó is tartozik Így például az egyik jelszó csak olvasható hozzáférést engedélyez, míg egy másik az írási engedélyt is megadja, és így tovább A biztonság mindaddig garantált, amíg jogosulatlan felhasználók nem jutnak a számukra tiltott megosztások jelszavának birtokába. Mind az OS/2, mind a Windows 95/98 támogatja az erőforrásaira vonatkozó, megosztás szintű biztonságot. Windows 95/98-as rendszerben a Hálózat párbeszédablak
Hozzáférési jogok lapján a Megosztásszintű hozzáférés választógomb bekapcsolásával állíthatjuk be a megosztás szintű biztonságot (lásd a 61 ábrát) Miután bekapcsoltuk ezt a választógombot, kattintsunk az OK gombra Ezt követően kattintsunk az egér jobb oldali gombjával valamelyik erőforrásra, például a merevlemezre vagy a CD-ROM meghajtóra. Ekkor megnyílik az Erőforrás tulajdonságok párbeszédablak. Válasszuk a Megosztás lapot, és kapcsoljuk be a Megosztva az alábbi néven feliratú választógombot. Ekkor megadhatjuk, hogy az erőforrás milyen néven jelenjen meg az egyes felhasználók számára, milyen hozzáférési jogok tartozzanak a megosztáshoz (csak olvasásra, teljes, jelszótól függő), és mi legyen a jelszó. Ha valaki azt gondolná, hogy ez a biztonsági modell nem kellőképpen jó a Samba kiszolgálón, annak igaza van. Csakugyan, ha a Samba konfigurációs fájljában a security = share beállítást alkalmaznánk, a Samba a
rendszer jelszófájljaiban újra használná a fel- 178 | SAMBA 6.1 ábra Megosztás szintű biztonság választása Windows rendszerben használónév/jelszó kombinációt egy hozzáférés hitelesítéséhez. Közelebbről nézve a Samba az alábbi lépéseket végzi el, amikor egy ügyfél kapcsolatot akar létrehozni egy megosztás szintű biztonsággal védett megosztáshoz: 1. A kapcsolatfelvétel kérésekor a Samba fogadja a felhasználó jelszavát és (amennyiben elküldésre került) a nevét. 2. Ha a megosztás guest only (vagyis csak vendégek férhetnek hozzá), a Samba azonnal elérhetővé teszi a felhasználó számára a megosztást a guest account beállításban megadott jogokkal, és nem vizsgálja a jelszavát. 3. A többi megosztást illetően a Samba a felhasználó nevét felveszi azon felhasználók listájába, akik hozzáférhetnek a megosztáshoz Csak ezt követően vizsgálja a felhasználónévvel együtt megadott jelszót Ha érvényesnek
találja, engedélyezi a megosztás elérését a felhasználóhoz rendelt jogokkal A felhasználót nem kell újra hitelesíteni, hacsak nem szerepel a megosztáson belül a revalidate = yes beállítás. 4. Ha nem sikerült a hitelesítés, a Samba megpróbálja azon felhasználók szerint érvényesíteni a jelszót, akiket a korábbi kapcsolatok létrehozásakor már lefordított magának, vagy akik a konfigurációs fájlban az illető megosztásban megadásra kerültek. Ha a jelszó egyik felhasználónévhez sem tartozik (a neveket a rendszer jelszófájlja, tipikusan az /etc/passwd tartalmazza), a felhasználó ezen a felhasználói néven nem kap engedélyt a megosztás elérésére. 5. Ha viszont a megosztáshoz engedélyezett a guest ok vagy a public beállítás, a felhasználó hozzáférhet a megosztáshoz a guest account (vendégfiók) beállításhoz megadott jogokkal. A username beállítás segítségével megadhatjuk, hogy induláskor mely felhasználók kerüljenek
be azon felhasználók listájába, akikre a megosztás szintű biztonság vonatkozik: 6. FEJEZET FELHASZNÁLÓK, BIZTONSÁG ÉS TARTOMÁNYOK | 179 [global] security = share [accounting1] path = /home/samba/accounting1 guest ok = no writable = yes username = davecb, pkelly, andyo Ha a fenti beállításnak megfelelően egy felhasználó megpróbál kapcsolódni egy megosztáshoz, akkor a Samba a küldött jelszót megvizsgálja az egyes felhasználók szerint a saját listájában, majd a davecb, pkelly, és az andyo felhasználók jelszava szerint. Ha bármelyik helyen egyezőséget talál, elfogadja a kapcsolatkérést, és engedélyezi a felhasználónak a hozzáférést. Ellenkező esetben sikertelen az adott megosztás elérése A megosztás szintű biztonság beállításai A 6.4 táblázat a megosztás szintű biztonság tipikus beállításait sorolja fel 6.4 táblázat A megosztás szintű biztonság beállításai Beállítás Paraméterek Funkció
Alapértelmezett érték Hatókör only user Boolean érték no Megosztás username (felhasználó vagy felhasználók) Karakterlánc (felhasználónevek listája) Azt jelzi, hogy csak a username beállításban megadott felhasználónevek fogadhatók el. Megadja azon felhasználók listáját, akik szerint egy ügyfél jelszavát meg kell vizsgálni. Nincs Megosztás only user Ez a kétféle értéket felvehető beállítás azt határozza meg, hogy a Samba a megosztás szintű biztonságot használva csak azon felhasználóknak engedélyezze-e egy megosztás elérését, akik a username beállításban vannak felsorolva, vagy azoknak, akiket a belső listájába lefordított. A beállításhoz alapértelmezés szerint a no érték tartozik, amit azonban egy megosztásban felülbírálhatunk: [global] security = share [data] username = andy, peter, valerie only user = yes 180 | SAMBA username Ehhez a beállításhoz azon felhasználók listája tartozik, akiknek a
Samba megvizsgálja a jelszavát, amikor kapcsolódni akarnak egy megosztáshoz. Ezt tipikusan azon ügyfelekhez használják, akikre megosztás szintű biztonság vonatkozik annak érdekében, hogy egy minősítő jelszó alapján férhessenek hozzá egy adott megosztáshoz – ebben az esetben a jelszó egy adott felhasználóhoz tartozó jelszóval egyezik meg: [global] security = share [data] username = andy, peter, terry Ez a beállítás nem javasolható, hacsak nem megosztás szintű biztonsággal akarjuk felépíteni a Samba kiszolgálónkat. Felhasználói szintű biztonság A Samba rendszer konfigurálásakor ez az előnyben részesítendő biztonsági szint. Ezt a mechanizmust használva az egyes megosztások adott felhasználókhoz vannak rendelve, akik hozzáférhetnek ezekhez a megosztásokhoz. Amikor egy felhasználó kapcsolódni próbál egy megosztáshoz, a Samba úgy végzi el a hitelesítését, hogy a megadott felhasználónevet és jelszót összeveti a
konfigurációs fájlban megadott meghatalmazott felhasználókkal és a Samba kiszolgálón lévő jelszóadatbázisban tárolt jelszavakkal. Amint a fejezet elején említettük, az egyes megosztásokhoz alkalmazott valid users beállítás segítségével különíthetjük el azokat a felhasználókat, akik számára engedélyezett egy adott megosztás elérése: [global] security = user [accounting1] writable = yes valid users = bob, joe, sandy A listában megadott mindegyik felhasználó kapcsolódhat a megosztáshoz, ha a jelszava megegyezik a kiszolgálón a jelszóadatbázisban tárolt jelszóval. Ha az induláskor sikeres volt a hitelesítés, akkor a felhasználónak nem kell újra megadnia a jeszavát, ha újra hozzá akar férni a megosztáshoz, hacsak nem tartalmazza a megosztás a revalidate = yes beállítást. A jelszavak titkosítva és titkosítás nélkül is elküldhetők a Samba kiszolgálóra. Ha a hálózatunkban mindkét típusú rendszer egyidejűleg létezik,
akkor biztosítanunk kell, hogy az egyes felhasználókhoz tartozó jelszavak a hagyományos adatbázisban és a Samba titkosított jelszóadatbázisában is meglegyenek. Ilyen módon a meghatalmazott felhasználók bármilyen típusú ügyfélként hozzáférhetnek a megosztásaikhoz.* Ha viszont fontos * Az, hogy a hálózatunkban titkosított és nem titkosított jelszavakat is használó ügyfelek lehetnek, ugyancsak oka annak, hogy a Samba miért teszi lehetővé olyan beállítások felvételét a konfigurációs fájljába, amelyek változókat használnak az ügyfél operációs rendszerek azonosításához. 6. FEJEZET FELHASZNÁLÓK, BIZTONSÁG ÉS TARTOMÁNYOK | 181 szempont a biztonság, akkor az javasolható, hogy titkosított jelszavakhoz konfiguráljuk a rendszerünket, és ne engedélyezzük a titkosítás nélkülieket. A fejezet ,,Jelszavak” részében olvashatunk arról, miként használhatunk mind titkosított, mind titkosítás nélküli jelszavakat.
Kiszolgálói szintű biztonság A kiszolgálói szintű biztonság hasonló a felhasználói szintű biztonsághoz. A különbség az, hogy kiszolgálói szintű biztonság alkalmazásakor a Samba a jelszavak hitelesítését egy másik SMB jelszó-kiszolgálóra, tipikusan egy, a hálózatban elsődleges tartományvezérlőként működő Samba vagy Windows NT Server gépre bízza. Jegyezzük azonban meg, hogy a Samba az smb.conf fájljában továbbra is vezet listát a megosztásairól és azok beállításairól Amikor egy ügyfél kapcsolatot próbál létrehozni egy megosztáshoz, a Samba megvizsgálja, hogy az ügyfél valóban jogosult-e a megosztás elérésére. Ezt követően a Samba egy ismert protokollon keresztül kapcsolatba lép az SMB jelszó-kiszolgálóval, és megkísérli annál is hitelesíteni a jelszót. Ha ez utóbbi kiszolgáló elfogadja a jelszót, akkor létrejön az ügyféllel a kapcsolat. A kapcsolat felépülését a 62 ábra szemlélteti 6.2 ábra Egy
kapcsolat tipikus felépülése kiszolgálói szintű biztonság mellett Kiszolgálói szintű biztonság esetén a globális hatókörű password server beállítással konfigurálhatjuk a Samba kiszolgálót külön jelszó-kiszolgáló használatához az alábbiak szerint: [global] security = server password server = PHOENIX120 HYDRA134 Figyeljük meg, hogy egynél több gépet is megadhatunk jelszó-kiszolgálóként; ha a Samba nem tudja elérni az elsőként megadott kiszolgálót, akkor a listában utána következőhöz fordul. A jelszó-kiszolgálókat a NetBIOS nevük, és nem a DNS nevük vagy az ezeknek megfelelő IP címek azonosítják. Ha a felsorolt kiszolgálók mindegyike visszautasítja a jelszót, a kapcsolatkérés automatikusan elutasításra kerül – a Samba más kiszolgálókat nem keres meg. 182 | SAMBA Egy hiányosság: hiába használjuk ezt a beállítást, a Samba kiszolgálón továbbra is kell léteznie egy, a felhasználóhoz tartozó fióknak.
Ennek az az oka, hogy a Unix operációs rendszernek szüksége van a felhasználónévre a különböző Be/Ki műveletek végrehajtásához. A probléma úgy kerülhető meg, hogy a Samba kiszolgálón ugyan létrehozunk a felhasználóhoz egy fiókot, de a fiókhoz tartozó jelszót letiltjuk azzal, hogy a rendszer jelszófájljában (/etc/passwd) a jelszót egy csillag (*) karakterrel helyettesítjük. Tartomány szintű biztonság A tartomány szintű biztonság hasonló a kiszolgálói szintű biztonsághoz. A fő különbség az, hogy tartomány szintű biztonság alkalmazásakor a Samba kiszolgáló egy Windows tartomány tagjaként szerepel. Emlékezzünk vissza az 1 fejezetre, ahol arról olvashattunk, hogy minden tartományban kell lennie legalább egy tartományvezérlőnek (ez általában egy Windows NT kiszolgáló), amely elvégzi a jelszavak hitelesítését. E tartományvezérlők mellett a munkacsoportban kell lennie még egy kinevezett jelszó-kiszolgálónak is A
tartományvezérlők a saját hitelesítő moduljukban (SAM, security authentication module) kísérik figyelemmel a felhasználókat és a jelszavaikat, és hitelesítik az egyes felhasználókat, amikor első alkalommal jelentkeznek be, és kísérlik meg a kapcsolódást egy másik gép megosztásaihoz. Amint a fejezet korábbi részében már említettük, a Samba hasonló módon képes felhasználói szintű biztonságot nyújtani, csakhogy ez a Unixra épül, és abból indul ki, hogy a hitelesítést a Unix jelszófájljai végzik el. Ha a Unix gép egy NIS vagy egy NIS+ tartomány tagja, akkor a Samba a felhasználók hitelesítését megosztott jelszófájlok számára is átláthatóvá teszi. Ekkor a Samba engedélyezi, hogy Windowsból is elérhető legyen a NIS vagy a NIS+ tartomány. Természetesen semmiféle összefüggés sincs a között, hogy miként kezeli a NIS és miként a Windows a tartományait. Tartomány szintű biztonság alkalmazása esetén lehetőségünk
van az NT saját, belső védelmi mechanizmusának használatára. Ez többféle előnnyel jár: • Lényegesen szorosabb integrációt tesz lehetővé az NT rendszerrel: a Windows legtöbb szolgáltatásához képest kevesebb trükköt kell használni az smb.conf fájlban a tartományok kezeléséhez Ennek köszönhetően nagyobb mértékben használhatók az NT olyan kezelőeszközei, mint a tartományok felhasználói kezelője (User manager for Domains), ami lehetővé teszi, hogy a felhasználók a Samba kiszolgálókat nagy NT gépekként kezelhessék. • A magasabb fokú integráltság olyan protokollokat is magával hoz, amelyek lehetővé teszik a Samba fejlesztőinek az NT megvalósítások követését. Az NT 4-es szervizcsomagja kijavítja a protokoll különböző hibáit, és az integráltságból adódóan a Samba is könnyebben alkalmazkodhat az ilyen módosításokhoz. • Kevesebb adminisztráció terheli az elsődleges tartományvezérlőt, mert eggyel kevesebb
állandó kapcsolatot kell fenntartania a Samba kiszolgálóval. A Samba a security = server beállításban megadott protokolltól eltérően csak akkor hajthat végre távoli hívást (Remote Procedure Call, RPC), ha hitelesítési információra van szüksége. Csak ebből a célból nem tarthat fenn állandó kapcsolatot. • Az NT tartományi hitelesítő mechanizmusa a felhasználó összes jellemzőit visszaküldi, nem csak azt, hogy sikeres vagy sikertelen volt-e a hozzáférési kísérlet. A visszaküldött jellemzők a Unix azonosító és az NT csoportok bővebb változatait, valamint más adatokat is tartalmaznak a következők szerint: 6. FEJEZET FELHASZNÁLÓK, BIZTONSÁG ÉS TARTOMÁNYOK | 183 – felhasználónév; – teljes név; – leírás; – biztonsági azonosító (a Unix uid tartomány méretű kiterjesztése); – NT csoporttagság; – bejelentkezési órák és tájékoztatás arról, hogy azonnal ki kell-e kényszeríteni a felhasználó
kijelentkezését; – a felhasználó számára engedélyezett munkaállomások; – a fiók lejáratának dátuma; – home könyvtár; – bejelentkezési szkript; – profil; – fiók típusa. • A Samba fejlesztői tartomány szintű biztonságot használtak a Samba 2.04-es verziójában tartományi felhasználók félautomatikus felvételéhez és törléséhez Emellett ez a biztonság helyet biztosít más, olyan NT-szerű kiegészítésekhez is, mint a hozzáférésvezérlő listák és a fájlengedélyek ügyfelek általi módosításának támogatása. Ez a megközelítés azzal az előnnyel jár, hogy kevesebb az adminisztráció: mindössze egyetlen hitelesítő adatbázist kell szinkronizálni. A Samba kiszolgálónak helyileg csak annyi adminisztrációs feladatot kell elvégeznie, hogy létrehozza a felhasználók számára azokat a könyvtárakat, amelyekben majd dolgozni fognak, és elkészítse az /etc/passwd fájlban a felhasználói azonosítójukat és
csoportjaikat. Samba kiszolgáló felvétele Windows NT tartományba Ha már létrehoztunk egy NT tartományt, könnyen felvehetünk bele Samba kiszolgálót. Először is le kell állítanunk a Samba démonjait. Ezt követően a ,,Windows NT Server Manager for Domains” (Windows NT kiszolgáló tartománykezelője) eszköz segítségével fel kell vennünk a Samba kiszolgálót az elsődleges tartományvezérlőn (PDC) lévő NT tartományba. Amikor kérdést kapunk a számítógép típusára vonatkozóan, válasszuk a ,,Windows NT Workstation or Server” (Windows NT munkaállomás vagy kiszolgáló) lehetőséget, és adjuk meg a Samba kiszolgáló NetBIOS nevét. Ezzel létrehozzuk a Samba gép fiókját az NT kiszolgálón. Következő lépésként az smbpasswd parancs segítségével generáljunk a géphez egy Microsoft formátumú jelszót (az eszköz használatára rövidesen kitérünk). Ha például a tartományunknak SIMPLE a neve, és az elsődleges tartományvezérlő
szerepét betöltő Windows NT gépnek beowulf a neve, a Samba kiszolgálón az alábbi parancs kiadásával végezhetjük el a név generálását: smbpasswd -j SIMPLE -r beowulf Végül vegyük fel az smb.conf fájl [global] szakaszába akövetkező beállításokat, és indítsuk újra a Samba démonjait 184 | SAMBA [global] security = domain domain logins = yes workgroup = SIMPLE password server = beowulf Ezzel a Sambát tartomány szintű biztonsággal konfiguráltuk. A tartományi bejelentkezési beállításokról a fejezet későbbi részében lesz bővebben szó. Jelszavak A jelszavak meglehetősen komoly problémát okoznak a Sambában. A Samba telepítésekor általában ez jelenti az első jelentősebb nehézséget, és a Sambát támogató levelezőcsoportok is ezekkel kapcsolatban kapják a legtöbb kérdést A korábbi fejezetekben azzal kerültük meg ezt a problémát, hogy a konfigurációs fájlokban a guest ok beállítást használtuk, ami lehetővé
teszi a hitelesítés nélküli kapcsolódást. Most azonban elérkeztünk ahhoz a ponthoz, ahol már részletesebben foglalkoznunk kell a jelszavakkal, és meg kell vizsgálnunk, hogyan használhatók ezek a hálózatban. Az ügyfelek által küldött jelszavak titkosítottak vagy titkosítás nélküliek lehetnek. A titkosított jelszavak természetesen jóval biztonságosabbak A nem titkosított jelszó könnyen elolvasható egy hálózatfigyelő programmal, mint amilyen például a módosított tcpdump, amit a 3. fejezetben már használtunk A Samba kiszolgálóhoz csatlakozó gépen futó operációs rendszer határozza meg azt, hogy titkosított-e a jelszó A 65 táblázat felsorolja azokat a Windows operációs rendszereket, amelyek titkosítják a jelszavakat, mielőtt még hitelesítés céljából elküldenék őket az elsődleges tartományvezérlőre Ha az ügyfelünk gépén nem Windows operációs rendszer fut, akkor a rendszer dokumentációjából tudhatjuk meg, hogy
titkosítja-e az SMB jelszavakat. 6.5 táblázat Jelszótitkosító Windows operációs rendszerek Operációs rendszer Titkosított vagy nem titkosított Windows 95 Windows 95 SMB frissítéssel Windows 98 Windows NT 3.x Windows NT 4.0 a 3-as szervizcsomag előtt Windows NT 4.0 a 3-as szervizcsomag után Nem titkosított Titkosított Titkosított Nem titkosított Nem titkosított Titkosított Az operációs rendszerek kétféle titkosítási eljárást használnak: a Windows 95 és 98 rendszerek a LAN Manager hálózati szoftverből örökölt eljárással titkosítják a jelszavakat, míg a Windows NT rendszerek ennél újabb titkosító rendszerrel dolgoznak. Ha az operációs rendszer támogatja a jelszótitkosítást, akkor a Samba a titkosított jelszavakat egy smbpasswd nevű fájlban tárolja. Alapbeállítás szerint ez a fájl a Samba disztribúció private nevű könyvtárában van (/usr/local/samba/private) Ezzel egyidejűleg az ügy- 6. FEJEZET FELHASZNÁLÓK,
BIZTONSÁG ÉS TARTOMÁNYOK | 185 fél gép is tárolja a jelszó titkosított változatát. A jelszót a maga normál, titkosítatlan formájában sohasem tárolja egyik rendszer sem Mindkét rendszer automatikusan titkosítja a jelszót egy ismert algoritmus szerint a jelszó létrehozásakor vagy módosításakor. Amikor egy ügyfél olyan SMB kiszolgálóval akarja felvenni a kapcsolatot, amelyik támogatja a titkosított jelszavakat (mint például a Samba vagy a Windows NT), a két számítógép az alábbi egyeztetést végzi: 1. Az ügyfél kéri a kiszolgálótól a protokoll egyeztetését 2. A kiszolgáló jelzi a használandó protokollt, és közli, hogy támogatja a titkosított jelszavakat Ezzel egyidejűleg elküld egy véletlenszerűen generált 8 bájtos karakterláncot 3. Az ügyfél ezt a karakterláncot használja az általa korábban már titkosított jelszó titkosításához – ehhez a második titkosításhoz az egyeztetett protokollban előírt algoritmust
használja. Az eredményt visszaküldi a kiszolgálónak 4. A kiszolgáló ugyanezt a műveletet elvégzi az adatbázisában tárolt, titkosított jelszón is Ha a két művelet azonos eredménnyel zárul, akkor a két jelszó azonos, és megtörtént az ügyfél hitelesítése. Jegyezzük meg, hogy ugyan az eredeti jelszót nem használja a hitelesítő művelet, nagyon kell vigyáznunk arra, hogy az smbpasswd fájlban tárolt titkosított jelszóhoz se férhessenek hozzá illetéktelenek. Ha nem lennénk eléggé óvatosak, egy jogosulatlan felhasználó az előző algoritmust végrehajtva betörhet a rendszerünkbe. A titkosított jelszavak pontosan olyan érzékeny adatoknak számítnak, mint a titkosítatlanok. Természetesen arról is gondoskodni kell, hogy az ügyfelek is megvédjék a titkosítatlan jelszavaikat illetéktelenekkel szemben. A Sambát azzal készíthetjük fel titkosított jelszavak fogadására, hogy az smb.conf fájlba felvesszük az alábbi, globális
hatókörű kiegészítéseket. Figyeljük meg, hogy kifejezetten megadtuk a Samba jelszófájljának a helyét: [global] security = user encrypt passwords = yes smb passwd file = /usr/local/samba/private/smbpasswd Ahhoz azonban, hogy a Samba fogadni tudja a titkosított jelszavakat, még inicializálni kell az smbpasswd fájlt. Titkosított jelszavak tiltása az ügyfélnél Bár a Unix már hosszú ideje használja a hitelesítést, beleértve a telnet és az rlogin internetes hozzáféréseket is, a művelet jól ismert biztonsági kockázatokat rejt magában. A jelszavakat az eredeti alakjukban küldi el az interneten keresztül, és rosszindulatú emberek az elfogott TCP csomagokból kideríthetik ezeket. Ha viszont úgy gondoljuk, hogy biztonságos a hálózatunk, és az összes ügyfelünknél a Unix standard /etc/passwd hitelesítését akarjuk használni, akkor azon Windows ügyfeleinknél, akik alapértelmezés szerint titkosított jelszavak használnának, meg kell
tiltanunk az ilyenek használatát. Ennek érdekében egy fájl telepítésével módosítanunk kell a Windows regisztrációs adatbázisát. Az illető operációs rendszertől függően ez a fájl vagy az NT4 PlainPasswordreg, vagy a Win95 PlainPasswordreg fájl A telepítést úgy végezhetjük el, hogy a 186 | SAMBA Samba disztribúció /docs könyvtárából a megfelelő .reg fájlt átmásoljuk egy hajlékonylemezre, majd az ügyfél gépén a Start menüben a Futtatás parancsot választjuk Érdekesség, hogy a Windows 95 .reg fájlja Windows 98-as rendszerben is működik A számítógép újraindítását követően az ügyfél jelszava nem lesz titkosítva mielőtt elküldésre kerülne a kiszolgálóra. Ez azt jelenti, hogy a hálózatba szétküldött TCP csomagok a jelszót az eredeti alakjában fogják tartalmazni. Éppen ezért ez az eljárás nem javasolható, hacsak nem vagyunk abszolút meggyőződve a rendszerünk biztonságáról. A Samba konfigurációs
fájljában az alábbi módon jelezhetjük, hogy nem titkosított jelszavakkal dolgozunk: [global] security = user encrypt passwords = no Az smbpasswd fájl A Samba a titkosított jelszavakat az smbpasswd nevű fájlban tárolja, amely alapbeállítás szerint a /usr/local/samba/private könyvtárban található. Ezt a fájlt legalább annyira védenünk kell, mint a passwd fájlt; olyan könyvtárban kell tartanunk, amelyhez csak rootfelhasználónak van olvasási/írási hozzáférési joga Minden más felhasználótól még az olvasási jogot is meg kell vonni Mielőtt használhatnánk a titkosított jelszavakat, az smbpasswd fájlban minden egyes Unix felhasználóhoz el kell készítenünk egy bejegyzést. A fájl nagyjából hasonló felépítésű, mint a Unix passwd fájlja, de attól eltérőek a mezői A 63 ábra szemlélteti az smbpasswd fájl szerkezetét, a benne látható bejegyzés a fájl egyik sora. 6.3 ábra Az smbpasswd fájl szerkezete (a fájl egyik sora) Az
egyes mezők jelentése: Felhasználónév A fiókhoz tartozó felhasználó neve. Közvetlenül a rendszer jelszófájljából másolódik ide 6. FEJEZET FELHASZNÁLÓK, BIZTONSÁG ÉS TARTOMÁNYOK | 187 UID A fiókhoz tartozó felhasználó azonosítója. A felhasználónévhez hasonlóan ez is közvetlenül a rendszer jelszófájljából származik, és meg kell egyeznie az ott tárolt azonosítóval LAN Manager jelszókód Ez a 32 bites hexadecimális jelsorozat képviseli a Windows 95/98 ügyfél jelszavát. A jelsorozat a KGS!@#$% karakterlánc 56 bites DES algoritmussal való titkosításával jött létre, kulcsként kétszer a felhasználó jelszavát használva (az első 14 bájt alapján, nagybetűkre alakítva). Ha a felhasználóhoz nem tartozik jelszó, akkor a kód első 11 karakterhelyén a NO PASSWORD szöveg, a többin pedig X karakterek állnak. A megosztáshoz jelszó nélkül, bárki hozzáférhet Ha viszont nem engedélyezzük jelszó használatát, akkor
az összes karakterhelyen az X karakter áll. A Samba nem engedélyezi a jelszó nélküli hozzáférést a felhasználóknak, hacsak nem tartalmazza a konfigurációs fájlja a null passwords beállítást NT jelszókód Ez a 32 bites hexadecimális jelsorozat képviseli a Windows NT ügyfél jelszavát. A jelsorozat a jelszó MD4 eljárással történő kódolásával jön létre (a jelszót 16 bites little-endian Unicode sorozat alkotja). A jelszó betűi előzőleg nem alakulnak át nagybetűsre Fiók jelzőkarakterei Ez a mező 11 karakterből áll (beleértve a kezdő és a lezáró szögletes zárójelet). A zárójelek között az alábbi karakterek bármelyike állhat tetszőleges sorrendben. A nem használt karakterek helyén szóközök állnak. U Normál felhasználói fiók. D Ezt a fiókot tiltja a Samba, és semmilyen bejelentkezést nem fogad el hozzá. N Ehhez a fiókhoz nem tartozik jelszó. W Egy munkaállomás meghatalmazott fiókja, amelyről a Samba elsődleges
tartományvezérlőként konfigurálható, ha Windows NT gépek kapcsolódhatnak a tartományához. Utolsó módosítás ideje A mező a LCT (Last Change Time) karaktereket, és az 1970. január 1-je óta a bejegyzés utolsó módosításig eltelt, másodpercekben mért időtartamot tartalmazza hexadecimális alakban Bejegyzések felvétele a smbpasswd fájlba Többféle módon is felvehetünk bejegyzéseket az smbpasswd fájlba: • Az smbpasswd programot az -a kapcsolóval futtatva automatikusan felvehetünk olyan felhasználót, akinek standard Unix rendszerfiókja van a kiszolgálón. A program a /usr/local/samba/bin könyvtárban található. • A /usr/local/samba/bin könyvtárban lévő addtosmbpass programot is futtathatjuk. Ez egyébként egy egyszerű awk szkript, amely elemzi a rendszer jelszófájlját, majd kiveszi a felhasználónevet és az azonosítót azokból a bejegyzésekből, amelyeket fel akarunk 188 | SAMBA venni az SMB jelszófájlba. Ezt követően a
felhasználói bejegyzések többi mezőjébe elhelyezi az alapbeállításokat, melyeket a későbbiekben az smbpasswd program segítségével megváltoztathatunk. Ahhoz, hogy használni tudjuk ezt a programot, esetleg szerkesztenünk kell a fájl első sorát, hogy létrejöjjön a rendszerünkben az awk szkriptre mutató hivatkozás. • Abban az esetben, ha a fenti eljárások egyike sem lenne használható, kézzel is elkészíthetünk egy alapértelmezés szerinti bejegyzést az smbpasswd fájlban. A bejegyzés például az alábbihoz hasonló lehet (a mezőket kettősponttal kell egymástól elválasztani): dave:500:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:XXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXX:[U]:LCT-00000000: A bejegyzés a felhasználónevet és az azonosítót tartalmazza a rendszer jelszófájljának megfelelően, ami után két, egyenként pontosan 32 X karakterből álló mező következik. Az utána következő két mező a fiók jelzőkaraktereit, illetve az utolsó módosítás
idejét tartalmazza. Miután elkészítettük ezt a bejegyzést, az smbpasswd program futtatásával meg kell változtatnunk ennek a felhasználónak a jelszavát Titkosított jelszó módosítása Ugyancsak az smbpasswd programot kell futtatnunk akkor is, ha módosítanunk kell egy titkosított jelszót. Figyeljünk arra, hogy ennek a programnak ugyanaz a neve, mint a titkosított jelszófájlé, ezért legyünk óvatosak, és ne keverjük össze a jelszófájlt a jelszómódosító programmal. Az smbpasswd program majdnem azonos azzal a passwd nevű programmal, amelyet Unix jelszavak módosításához használhatunk. A program egyszerűen bekéri a régi jelszót (hacsak nem rootfelhasználók vagyunk), és létrehozza az eredeti bejegyzés másolatát az új jelszóval. A képernyőn egyik jelszó sem jelenik meg # smbpasswd dave Old SMB password: New SMB password: Retype new SMB password: Password changed for user dave Miután lefutott a program, ellenőrizhetjük az smbpasswd
fájlban, hogy a jelszó LAN Manager és NT kódja a megfelelő helyre került. Azt követően, hogy a felhasználók titkosított jelszava ilyen módon bekerült az adatbázisba, a felhasználók a titkosított jelszavukat használhatják a megosztások eléréséhez. A jelszó szinkronizálása A jelszavak módosításakor problémát jelenthet, ha ugyanannak a jelszónak a normál és a titkosított alakja is létezik. Szerencsére a Samba ad némileg korlátozott segítséget a jelszavak szinkronizálásához Két olyan beállítási lehetőséget nyújt, amelyek segítségével automatikusan frissíthetjük a normál unixos jelszót, ha módosul a rendszerben a titkosított jelszó. Ezt a képességét a globális hatókörű unix password sync beállítással vehetjük igénybe: 6. FEJEZET FELHASZNÁLÓK, BIZTONSÁG ÉS TARTOMÁNYOK | 189 [global] encrypt passwords = yes smb passwd file = /usr/local/samba/private/smbpasswd unix password sync = yes Ha a yes értéket
rendeljük ehhez a beállításhoz, akkor a Samba (rootként) megváltoztatja a felhasználó normál jelszavát, amikor az smbpasswd programmal módosítjuk a titkosított jelszavát. Ahhoz azonban, hogy ez sikerüljön, még két másik feladatot is el kell végeznünk A könnyebbet a passwd program segítségével oldhatjuk meg. Ez a program azt a Unix parancsot adja meg, amelyet a felhasználó normál rendszerjelszavának módosításához használunk. Alapbeállítás szerint ez a /bin/passwd %u parancs Egyes Unix rendszerekben ez megfelelő, és semmit sem kell változtatni rajta Más esetben, például a Red Hat Linux rendszerben ehelyett a /usr/bin/passwd parancsot kell használni. Az is lehetséges, hogy a jövőben másik programot vagy szkriptet kell futtatni a feladat elvégzéséhez Példaként tegyük fel, hogy egy changepass nevű szkriptet akarunk futtatni egy felhasználó jelszavának módosításához. Emlékezzünk arra, hogy az aktuális Unix felhasználó neve
helyett a %u változót használhatjuk. Ekkor így alakul a példánk: [global] encrypt passwords = yes smb passwd file = /usr/local/samba/private/smbpasswd unix password sync = yes passwd program = changepass %u Figyeljük meg, hogy a programot rootfelhasználóként kell meghívni, ha a unix password sync beállításhoz a yes érték tartozik. Erre azért van szükség, mert a Samba nem feltétlenül ismeri a felhasználó régi, titkosítatlan jelszavát. A nehezebb feladat a passwd chat beállítás konfigurálása. A passwd chat beállítás hasonlóan működik, mint egy Unix chat (beszélgetős) szkript. Kiküld egy sor karakterláncot, valamint kiküldi azokat a válaszokat is, amelyeket a passwd program beállításban megadott programtól vár. Az alábbi részlet a passwd chat beállítás alapértelmezés szerinti alakjára mutat példát Az egyes karaktercsoportokat szóközök választják el egymástól: passwd chat = *oldpassword %o newpassword %n newpassword %n
*changed Az első karaktercsoport a jelszómódosító programtól várt választ jelenti. Figyeljük meg, hogy helyettesítő karaktereket (*) tartalmaz, hogy segítse a programot a hasonló kifejezések megtalálásában is. Itt a *oldpassword sorozat azt jelzi, hogy a Samba minden olyan sort elfogad a jelszóprogramtól, amelyben előfordul az old és a password szó, bármi álljon is a két szó előtt, között és után. Ha nem érkezik válasz, sikertelen lesz a jelszómódosító művelet A második karaktercsoport azt jelzi, amit a Samba kiküld abban az esetben, ha az első csoportnak sikerült egyezőséget találnia. A példánkban a második csoport a %o karak- 190 | SAMBA tersorozat. Ez tulajdonképpen két választ jelent: a %o a régi jelszót képviseli, míg a az újsor karakter. Lényegében az történik, hogy a karaktercsoport ,,begépeli” a régi jelszót a jelszómódosító program bemenetére, majd ,,lenyomja” az Enter billentyűt. A második
karaktercsoportot ismét egy válaszcsoport követi, ami után a jelszómódosító programnak visszaküldendő adatok következnek. (Az ilyen válasz/küldés mintát követő sorozatok végtelen sorban követhetik egymást bármelyik normál Unix beszélgetős szkriptben.) A szkript futása mindaddig tart, amíg megtörténik az utolsó minta egyeztetése* A jelszóprogram által küldött válasz karakterláncok egyeztetését a 6.6 táblázatban felsorolt karakterek használatával segíthetjük A 67 táblázatban felsorolt karaktereket a válasz kialakításához használhatjuk. 6.6 táblázat Az egyeztetést segítő karakterek Karakter Jelentés * " " Bármely karakter egyszeri vagy többszöri előfordulása. Lehetővé teszi olyan karakterláncok egyeztetését is, amelyekben szóközök vannak. A csillagok akkor is helyettesítő karaktert jelentenek, ha idézőjelek között vannak, és két, egymást követő idézőjellel üres választ jelezhetünk. 6.7
táblázat A válaszban használható karakterek Karakter Jelentés %o %n s A felhasználó régi jelszava A felhasználó új jelszava Soremelés karakter Kocsivissza karakter Tabulátor karakter Szóköz A passwd chat beállítást például az alábbiak szerint módosíthatjuk. Ez olyan esetekben használható, amikor nem kell beírnunk a régi jelszót. Emellett a Red Hat Linux által kiküldött all tokens updated successfully üzenetet is kezeli passwd chat = *new password %n new password %n success Megismételjük, hogy az alapértelmezés szerinti chat szkript a legtöbb Unix rendszerben jól működik. Ha nem így lenne, akkor a passwd chat debug beállítás segítségével új chat szkriptet készíthetünk a jelszómódosító programhoz. A passwd chat debug beállítás a jelszómódosítás során bekövetkező minden eseményt naplóz. A beállítás a Boolean értékek valamelyikét veheti fel: * Ez nem igaz a Red Hat Linux rendszerre, mert abban a
jelszóprogram a ,,Password changed” helyett az ,,All authentication tokens updated successfully” üzenetet küldi. A fejezet későbbi részében kitérünk ennek a hibának a kijavítására. 6. FEJEZET FELHASZNÁLÓK, BIZTONSÁG ÉS TARTOMÁNYOK | 191 [global] encrypted passwords = yes smb passwd file = /usr/local/samba/private/smbpasswd unix password sync = yes passwd chat debug = yes log level = 100 Miután engedélyeztük a passwd chat debug beállítást, a Samba által a beszélgetős szkripten keresztül vett Be/Ki műveletek 100-as hibakeresési szinttel bekerülnek a Samba naplófájljaiba. Mivel ez a szint gyakran nagyon sok naplófájlt készít, hatékonyabb lehet, ha saját szkriptet használunk, és a passwd program beállításban a /bin/passwd helyett ezt adjuk meg a módosítások során bekövetkezett események rögzítéséhez. A naplófájlokat is szigorú engedélyekkel védjük meg, és mihelyt megkaptuk a szükséges információkat, azonnal
töröljük őket – ugyanis ezek a normál alakjukban tartalmazhatják a jelszavakat. A Sambát futtató operációs rendszerek szigorú követelményeket támaszthatnak az érvényes jelszavakkal szemben, hogy érzéketlenebbek legyenek a szótári és ehhez hasonló támadásokkal szemben. A felhasználóknak is tisztában kell lenniük az ilyen korlátozásokkal, amikor módosítják a jelszavukat A korábbiakban említettük, hogy a Samba korlátozott mértékben segíti a jelszavak szinkronizálását. Ennek az az oka, hogy nem létezik a titkosított smbpasswd fájl fordított szinkronizálása arra az esetre, amikor egy felhasználó frissíti a normál unixos jelszavát. Bár ismertek különböző stratégiák ennek megkerülésére, így például a NIS és más ingyen hozzáférhető, beépíthető hitelesítő modulok (PAM), de a problémát igazából egyikük sem oldja meg. A Windows 2000 megjelenésével várhatóan nagyobb lesz az összhang a LDAP (Lightweight
Directory Access Protocol) protokollal, ami remélhetőleg fölöslegessé teszi a jelszavak szinkronizálását. A jelszó beállítási lehetőségei A 6.8 táblázatban felsorolt beállítási lehetőségek abban segíthetnek, hogy miként dolgozzunk a jelszavakkal a Sambában 6.8 táblázat A jelszó beállítási lehetőségei Beállítás Paraméterek encrypt Boolean érték passwords unix Boolean érték password sync passwd chat Karakterlánc (chat parancsok) Funkció Alapértelmezett érték Hatókör Bekapcsolja a titkosított jelszavakat. Ha yes az értéke, a Samba frissíti a standard Unix jelszóadatbázist, amikor egy felhasználó módosítja a titkosított jelszavát. Megadja azon parancsok sorozatát, amelyeket ki kell küldeni a jelszóprogramnak. no Globális no Globális Lásd a beállítással kapcsolatos korábbi részeket. Globális 192 | SAMBA 6.8 táblázat folytatása Beállítás Paraméterek Funkció Alapértelmezett érték
Hatókör passwd chat debug Boolean érték no Globális passwd program Karakterlánc (Unix program) Numerikus Jelszómódosítással kapcsolatos bejegyzéseket készít a naplófájlokba 100-as hibakeresési szinttel. Megadja a jelszómódosításhoz használandó programot. Megadja azon nagybetűk számát, amelyeken permutációt kell végezni egy ügyfél jelszavának egyeztetéséhez. Ha yes az értéke, a Samba frissíti a titkosított jelszófájlját, amikor egy felhasználó a normál jelszavát használva akar hozzáférni egy megosztáshoz. Ha yes az értéke, a Samba engedélyezi a null jelszavú felhasználóknak a hozzáférést. Megadja a titkosított jelszófájl nevét. password level update Boolean érték encrypted null Boolean érték passwords smb passwd file hosts equiv Karakterlánc (teljes elérési út) Karakterlánc (teljes elérési út) use rhosts Karakterlánc (teljes elérési út) Megadja annak a fájlnak a nevét, amely a jelszó
használata nélkül kapcsolódható gazdákat és felhasználókat tartalmazza. Megadja annak az .rhosts fájlnak a nevét, amely lehetővé teszi a felhasználóknak a jelszó nélküli kapcsolódást. /bin/passwd %u Globális Nincs Globális no Globális no Globális /usr/local/ Globális samba/private/ smbpasswd Nincs Globális Nincs Globális unix password sync A globális hatókörű unix password sync beállítás lehetővé teszi, hogy a Samba frissítse a standard Unix jelszófájlját, amikor egy felhasználó módosítja a titkosított jelszavát. A Samba kiszolgáló a titkosított jelszót az smbpasswd fájlban tárolja, amely alapbeállítás szerint a /usr/local/samba/private könyvtárban van. A Sambának ezt a képességét a beállítás bekapcsolásával aktivizálhatjuk: [global] unix password sync = yes 6. FEJEZET FELHASZNÁLÓK, BIZTONSÁG ÉS TARTOMÁNYOK | 193 Ha engedélyezzük ezt a beállítást, akkor a Samba amellett, hogy módosítja a
titkosított jelszót, a standard unixos jelszó módosítását is megkísérli. Ezt úgy teszi meg, hogy a passwd program beállításban (lásd korábban) megadott programnak átadja a felhasználónevet és az új jelszót. Ne feledjük, hogy a Samba nem fér hozzá feltétlenül a felhasználó normál (titkosítás nélküli) jelszavához, ezért rootként kell meghívnia a jelszómódosító programot* Ha bármilyen oknál fogva meghiúsul a unixos jelszó módosítása, az SMB jelszó sem módosul. encrypt passwords A globális hatókörű encrypt passwords beállítás segítségével a Sambát a normál jelszó alapján történő hitelesítésről a titkosított jelszó alapján történő hitelesítésre kapcsolhatjuk át. Ha a beállításhoz a yes értéket rendeljük, akkor a Samba titkosított jelszót vár az ügyfeleitől encrypt passwords = yes Alapbeállítás szerint a Windows NT 4.0 a 3-as szervizcsomaggal és e fölött, valamint a Windows 98 titkosított
jelszavakat küld ki a hálózatra. Ha engedélyezzük a titkosított jelszavakat, léteznie kell egy érvényes smbpasswd fájlnak, amelynek tartalmaznia kell a titkosított jelszavak hitelesítéséhez használt felhasználóneveket (lásd a fejezet ,,Az smbpasswd fájl” című részét). Emellett a Sambának ismernie kell az smbpasswd fájl helyét is, ha az nem az alapértelmezés szerinti helyén van (ez tipikusan a /usr/local/samba/private/ smbpasswd). A fájl helyét az smb passwd file beállítással adhatjuk meg Ha akarjuk, az update encrypted beállítás segítségével ki is kényszeríthetjük, hogy a Samba mindannyiszor frissítse a titkosított jelszavakkal az smbpasswd fájlt, amikor egy ügyfél nem titkosított jelszóval akar kapcsolódni. Ha biztosítani akarjuk, hogy azok a gazdák, akiknek titkosított jelszóhitelesítésre van szükségük, valóban így is legyenek hitelesítve, akkor vegyünk fel egy include beállítást. Ezzel a beállítással egyedi
konfigurációs fájlokat készíthetünk, amelyek aszerint kerülnek beolvasásra, hogy a kapcsolódó fél számítógépe milyen operációs rendszert használ (%a), vagy mi a gép neve (%m). Az ilyen rendszer- vagy gazdaspecifikus konfigurációs fájlokba bevehetjük az encrypted passwords = yes beállítást, ami csak akkor lép érvénybe, ha ilyen ügyfelek kapcsolódnak a kiszolgálóhoz. passwd program A passwd program beállítás segítségével a Unix alatt futó Samba kiszolgálón azt a programot adhatjuk meg, amelyet a Samba a rendszer standard jelszófájljának frissítéséhez használhat, amikor frissítődik a titkosított jelszófájl. A beállításhoz alapértelmezés szerint a standard passwd program tartozik, ami általában a /bin könyvtárban található. A beállításban tipikusan a %u képviseli a felhasználót a parancs végrehajtásakor A program bemenetét és kimenetét a program végrehajtása során a passwd chat beállításban megadott szkript
kezeli. Ezzel a beállítással bővebben a fejezet ,,A jelszó szinkronizálása” részében foglalkoztunk. * Ennek az az oka, hogy a Unix passwd programja, amely általában ennek a műveletnek a célpontja, megszorítások nélkül engedélyezi a root hozzáférést a felhasználó jelszavának módosításához. 194 | SAMBA passwd chat Ehhez a beállításhoz a Unix chat (beszélgetős) szkriptjeihez hasonlóan küldött és visszaküldött karakterláncok sorozatát adhatjuk meg, amelyet a Samba kiszolgálón futó jelszómódosító program használhat. Ezzel a beállítással is a fejezet ,,A jelszó szinkronizálása” részében foglalkoztunk bővebben. passwd chat debug Ha ehhez a beállításhoz a yes értéket rendeljük, akkor a globális hatókörű passwd chat debug beállítás naplózza azokat az üzeneteket, amelyeket a Samba a jelszóról folytatott párbeszéd során küldött vagy kapott. A beérkező és kimenő üzenetek 100-as hibakeresési szinttel a
Samba naplófájljaiba kerülnek. Meg kell adnunk a log level = 100 beállítást, ha azt akarjuk, hogy rögzítésre kerüljenek az információk. A fejezet korábbi, ,,A jelszó szinkronizálása” részében bővebben foglalkoztunk ezzel a beállítással Ha használjuk ezt a beállítást, akkor legyünk tisztában azzal, hogy a hibakereső naplófájlokban megjelenhetnek a jelszavak a normál, titkosítatlan alakjukban, és ez potenciális veszélyt jelent, ha nem védjük meg a naplófájlokat. password level Az SMB rendszerek a nem titkosított (vagyis az eredeti alakjuk szerinti) jelszavakat – akárcsak a felhasználóneveket – nagybetűsre alakítva küldik el. Számos unixos felhasználó viszont vegyesen használja a kis- és nagybetűket a jelszavában. A Samba alapbeállítás szerint teljes egészükben kisbetűk szerint végzi el a jelszavak egyeztetését, és nem változtatja nagybetűsre a jelszó első karakterét. A username level beállításhoz hasonlóan van
egy password level beállítás is, amit arra használhatunk, hogy nagybetűkkel különböző permutációkat végezzünk a jelszavakon. A beállításhoz egész érték rendelhető, amely előírja, hogy a jelszóban hány betűt kell nagybetűsre alakítani, amikor a jelszó tulajdonosa kapcsolódni próbál egy megosztáshoz. A beállítást a következő módon használhatjuk: [global] password level = 3 Ebben az esetben a Samba három nagybetűs karakterrel végzi el az összes lehetséges permutációt. Minél nagyobb ez a szám, annál több számítást kell végeznie a Sambának a jelszó egyezőségére vonatkozóan, és annál tovább tart egy adott megosztáshoz való kapcsolódás engedélyezése update encrypted A Samba ezzel a beállítással segíti az átmenetet azokon a helyeken, ahol az ügyfelek át akarnak térni a titkosított jelszó használatára. Az update encrypted beállítás megkönynyíti a normál jelszó titkosított jelszóvá történő
átalakítását A beállítást az alábbi módon kapcsolhatjuk be: [global] update encrypted = yes 6. FEJEZET FELHASZNÁLÓK, BIZTONSÁG ÉS TARTOMÁNYOK | 195 Ez a beállítás arra utasítja a Sambát, hogy az smbpassw fájlban hozza létre mindegyik felhasználó unixos jelszavának titkosított alakját, amikor az illető kapcsolódik egy megosztáshoz. Ha engedélyezzük a beállítást, akkor az encrypt passwords beállításhoz a no értéket kell rendelnünk, hogy a felhasználók a normál alakú jelszavukat küldjék a Sambára a fájlok frissítése érdekében. Miután már mindegyik felhasználó legalább egyszer kapcsolódott a kiszolgálóhoz, ismét a yes értéket rendelhetjük az encrypt passwords beállításhoz, hogy a későbbiekben már csak a titkosított jelszavakat engedélyezzük Ekkorra már létrejöttek a felhasználók érvényes bejegyzései az smbpasswd fájlban. null passwords Ez a globális hatókörű beállítás arról tájékoztatja a
Sambát, hogy engedélyezett-e a hozzáférés azon felhasználók számára, akiknek null jelszavú (titkos vagy titkosítatlan) a fiókjuk. A beállításhoz alapértelmezés szerint a no érték tartozik, amit azonban a következő szerint felülírhatunk: null passwords = yes Ennek a beállításnak a használata csak azok számára ajánlott, akik tisztában vannak a vele együtt járó biztonsági kockázatokkal; beleértve a rendszer jelszófájljában lévő azon rendszerhasználók véletlen elérését is, akiknek null a jelszavuk. smb passwd file Ezzel a globális hatókörű beállítással a titkosított jelszavakat tartalmazó adatbázis helye adható meg. Alapbeállítás szerint ez a /usr/local/samba/private/smbpasswd, de meg is változtatható: [global] smb passwd file = /etc/smbpasswd Különböző változatok, például a Red Hat számos disztribúciója is ezt a helyet használja. hosts equiv Ez az ugyancsak globális hatókörű beállítás annak a standard Unix
hosts.equiv fájlnak a nevét adja meg, amely azon gazdák és felhasználók nevét tartalmazza, akik jelszó megadása nélkül férhetnek hozzá a megosztásokhoz. A fájl helyét a következő módon adhatjuk meg: [global] hosts equiv = /etc/hosts.equiv Alapértelmezés szerint a beállításhoz semmilyen fájlnév sem tartozik. Mivel egy ilyen fájl használata óriási kockázatot jelent, semmiképpen sem javasolható a beállítás felvétele, hacsak nem tartjuk teljesen biztonságosnak a hálózatunkat. use rhosts Ez a globális hatókörű beállítás annak a standard unixos felhasználói .rhost fájlnak a nevét adja meg, amely a megosztásokhoz jelszó megadása nélkül hozzáférhető idegen gazdákat tartalmazza. A fájl helyét a következő módon adhatjuk meg: 196 | SAMBA [global] use rhosts = /home/dave/.rhosts Alapértelmezés szerint a beállításhoz semmilyen fájlnév sem tartozik. Akárcsak az előbb említett hosts equiv, az .rhost fájl is
biztonsági kockázatot jelent, ezért ezt a beállítást is csak akkor használjuk, ha tökéletesen megbízunk a hálózatunkban. Windows tartományok Most, hogy már megismerkedtünk a Samba kiszolgálóhoz kapcsolódó felhasználókkal és a kiszolgálón használható jelszavakkal, tekintsük át, miként konfigurálhatjuk úgy a kiszolgálót, hogy elsődleges tartományvezérlő (PDC) lehessen Windows 95/98 és Windows NT gépek számára. Miért van szükség egyáltalán tartományokra? Ahhoz, hogy erre egyértelmű választ adhassunk – főként a Windows 95/98 esetében –, be kell pillantanunk a kuliszszák mögé Emlékezzünk arra, hogy egy hagyományos munkacsoportban a Windows 95/98 egyszerűen elfogadja a rendszerbe bejelentkezők nevét és jelszavát. A Windows 95/98 rendszerben egyszerűen nem léteznek jogosulatlan felhasználók: ha bejelentkezik egy új felhasználó, az operációs rendszer megkérdezi a jelszavát, és ettől kezdve ezzel a jelszóval
tartja nyilván. A Windows 95/98 csak akkor igényli a jelszó használatát, ha a felhasználó másik megosztáshoz akar kapcsolódni. Ezzel szemben a tartományi bejelentkezések a Unix rendszerekben szokásos bejelentkezésekhez hasonlóak. Ahhoz, hogy valaki bejelentkezhessen egy tartományba, eleve rendelkeznie kell érvényes felhasználónévvel és jelszóval, amit a rendszer az elsődleges tartományvezérlőn tárolt jelszóadatbázis alapján hitelesít. Ha a jelszó érvénytelen, a rendszer tájékoztatja erről a felhasználót, és nem engedi belépni a tartományba Ha viszont érvényes a jelszó, a felhasználó beléphet a tartományba, és azon belül bármely olyan megosztáshoz hozzáférhet, amihez joga van anélkül, hogy újra hitelesíttetnie kellene magát. Pontosabban fogalmazva az elsődleges tartományvezérlő visszaküld a sikeres bejelentkezőnek egy tokent, amellyel bármely megosztást elérheti anélkül, hogy engedélyt kellene kérnie az
elsődleges tartományvezérlőtől. Lehet ugyan, hogy ez első hallásra nem tűnik fontosnak, mégis komoly jelentősége van a hálózati forgalom csökkentésében. (A revalidate beállítás segítségével kikapcsolható ez a képesség) A Samba konfigurálása Windows rendszerű tartományi bejelentkezéshez Ha engedélyezni szeretnénk, hogy a Samba tartományvezérlő legyen, akkor a fejezet most következő részeiben leírtak szerint konfiguráljuk a Sambát és az ügyfeleit. Tartományok létrehozásával kapcsolatos további tudnivalók a Samba disztribúció részét képező DOMAINS.TXT fájlban találhatók 6. FEJEZET FELHASZNÁLÓK, BIZTONSÁG ÉS TARTOMÁNYOK | 197 Windows 95/98 ügyfelek Meglehetősen egyszerűen konfigurálhatjuk a Sambát elsődleges tartományvezérlőként Windows 95/98 ügyfelek számára. A kiszolgálón csak a következőket kell biztosítani: • Az aktuális munkacsoportban csak a Samba legyen az elsődleges tartományvezérlő.
• Legyen a hálózatban egy WINS kiszolgáló, ami akár egy Samba, akár egy Windows NT kiszolgáló is lehet (a WINS kiszolgálóval kapcsolatban a ,,Nyomtatás és névfeloldás” című 7. fejezetben olvasható további információ) • A Samba felhasználói szintű biztonságot használjon (vagyis ne bízza senki másra a jelszóhitelesítést). Nincs szükség tartomány szintű biztonságra, ha maga a Samba az elsődleges tartományvezérlő. Ezt követően vegyük fel az alábbi beállításokat a Samba konfigurációs fájljába: [global] workgroup = SIMPLE domain logons = yes # Legyen felhasználói szintű a biztonság! security = user # A Samba legyen az elsődleges tartományvezérlő! os level = 34 local master = yes preferred master = yes domain master = yes A domain logons beállítás engedélyezi, hogy a Samba tartományi hitelesítést végezzen el a bejelentkező ügyfeleken. A tartománynak ugyanaz lesz a neve, mint amit a Samba konfigurációs fájljában a
munkacsoport nevének választottunk, vagyis az esetünkben a SIMPLE Ezt követően létre kell hoznunk egy nem írható, nem közzétehető és nem tallózható megosztást, aminek a [netlogon] nevet adjuk (mindaddig, amíg minden Windows ügyfél hozzáférhet ehhez a megosztáshoz, nincs jelentősége, hogy hová mutat a megosztás): [netlogon] comment = The domain logon service path = /export/samba/logon public = no writeable = no browsable = no Windows NT ügyfelek Ha Windows NT ügyfelek is kapcsolódnak a hálózathoz, akkor valamivel több lépést kell megtennünk ahhoz, hogy a Samba elsődleges tartományvezérlőként jelenhessen meg számukra. 198 | SAMBA Csak a Samba 2.1-es és későbbi verziói teszik lehetővé, hogy a Samba teljes mértékben elsődleges tartományvezérlőként működhessen Windows NT ügyfelekkel szemben. A korábbi verziókban csak korlátozott módon lehetett hitelesíteni a Windows NT ügyfeleket. A könyv nyomdába adásának idején a
Samba 2.05 volt a legfrissebb verzió, de már a 21-est is le lehetett tölteni a CVS segítségével. A Samba alfa verzióinak letöltéséről az E függelékben olvashatók további tudnivalók. Mint korábban, most is biztosítanunk kell, hogy az aktuális munkacsoportban a Samba legyen az elsődleges tartományvezérlő, és hogy felhasználói szintű legyen a biztonság. Most azonban arról is gondoskodnunk kell. hogy a Samba titkosított jelszavakat kezeljen Ezért a korábbi példa [global] beállításai közé vegyük fel az encrypted passwords = yes beállítást az alábbiak szerint: [global] workgroup = SIMPLE encrypted passwords = yes domain logons = yes security = user Megbízható fiókok létrehozása NT ügyfelek számára Ezt a lépést kizárólag Windows NT ügyfelek esetében kell elvégezni. A megbízható fiókokat (trust accounts) az elsődleges tartományvezérlőhöz kapcsolódó NT ügyfelek használják. Az ilyen fiók lehetővé teszi, hogy egy gép
magára az elsődleges tartományvezérlőre, és ne valamelyik megosztására jelentkezzen be. Ebben az esetben a tartományvezérlő megbízhatónak tekinti az illető ügyfél felhasználóival létesítendő kapcsolatokat Mindent egybevéve azonban a megbízható fiók lényegében azonos egy felhasználói fiókkal. A példáinkban mi is standard unixos felhasználói fiókokkal utánozzuk a Samba kiszolgáló megbízható fiókjait. A megbízható fiókhoz tartozó számítógép bejelentkezési neve magának a számítógépnek a neve, a végén egy $ jellel kiegészítve. Ha például a Windows NT gépünknek chimaera a neve, akkor a bejelentkezési fióknév chimaera$. A fiókhoz kezdetben tartozó jelszó a számítógép neve kisbetűs alakban A megbízható fiók elkészítéséhez a Samba kiszolgálón létre kell hoznunk egy unixos fiókot a számítógép nevével, valamint az smbpasswd fájlba fel kell venni a titkosított jelszó bejegyzését. Lássuk a feladat első
részét. Itt csak a /etc/passwd fájlt kell úgy módosítanunk, hogy támogassa a megbízható fiókot; nincs szükség home könyvtárra, és héjprogramot sem kell rendelnünk a ,,felhasználóhoz”, mert csak az érdekes, hogy engedélyezett-e a bejelentkezés. Ezért egy ,,ál” fiókot hozunk létre az alábbi bejegyzéssel: chimaera$:*:1000:900:Trust Account:/dev/null:/dev/null Figyeljük meg, hogy a csillag (*) karakter beírásával letiltottuk a jelszó használatát. Azt akarjuk ugyanis, hogy a Samba az smbpasswd fájlban tárolt jelszót használja, és nem szeret- 6. FEJEZET FELHASZNÁLÓK, BIZTONSÁG ÉS TARTOMÁNYOK | 199 nénk, hogy valaki telnet eléréssel használja a fiókot. A fiók neve mellett ezért csak a fiók UID azonosítóját adjuk meg (1000) a titkosított jelszóadatbázis számára. Ehhez a számhoz az NT kiszolgálón egy egyedi erőforrás-azonosítót kell megfeleltetni, ami semmilyen más erőforrás-azonosítóval nem kerülhet
összeütközésbe. Ezért egyetlen más NT felhasználó vagy csoport sem feleltethető meg ennek a számnak – ellenkező esetben hibaüzenetet küld a hálózat. Következő lépésként az smbpasswd parancs kiadásával vegyük fel a titkosított jelszót: # smbpasswd -a -m chimaera Added user chimaera$ Password changed for user chimaera$ Az -m kapcsoló azt a gépet adja meg, amelyikhez a megbízható fiókot létrehozzuk. Az smbpasswd program automatikus létrehozza az induló titkosított jelszót a gép NetBIOS nevének kisbetűs alakja alapján – nekünk nem kell beírnunk a nevet. A parancssorba beírt név után ne írjuk be a $ jelet – ezt a program elvégzi helyettünk. Miután ilyen módon felvettük a titkosított jelszót, a Samba kész fogadni az illető NT gép tartományi bejelentkezéseit. Windows ügyfelek konfigurálása tartomány bejelentkezéshez Miután a Sambán elvégeztük a tartományi bejelentkezésekhez szükséges konfigurációs lépéseket, a
Windows ügyfeleket is úgy kell konfigurálnunk, hogy induláskor bejelentkezhessenek a tartományba. Windows 95/98 Windows 95/98-ban ezt úgy tehetjük meg, hogy a Vezérlőpulton megnyitjuk a Hálózat párbeszédablakot, kijelöljük benne a ,,Microsoft Network ügyfél” tételt, és a Tulajdonságok gombra kattintunk. Ekkor a 64 ábrán láthatóhoz hasonló párbeszédablaknak kell megnyílnia. Jelöljük be az ablak felső részén lévő ,,Belépés a Windows NT tartományba” feliratú négyzetet, és a Windows NT tartomány neveként írjuk be a Samba konfigurációs fájljában megadott csoportnevet. Kattintsunk az OK gombra, és indítsuk újra a számítógépet, ha felszólítást kapunk erre Ha a Windows azt közölné, hogy már bejelentkeztünk egy tartományba, akkor valószínűleg van egy élő kapcsolatunk a munkacsoport valamelyik megosztásával (például a leképzett hálózati meghajtóval). Ebben az esetben egyszerűen szakítsuk meg átmenetileg a
kapcsolatot úgy, hogy az egér jobb oldali gombjával az ikonjára kattintunk, és a megnyíló helyi menüben a Szétkapcsolás parancsot választjuk. Miután betöltődött a Windows, a szokásos bejelentkezési párbeszédablak jelenik meg, kiegészülve a tartományra vonatkozó mezővel. A mezőnek már tartalmaznia kell a tartomány nevét, ezért csak annyi a teendőnk, hogy beírjuk a jelszavunkat, és az OK gombra 200 | SAMBA 6.4 ábra Windows 95/98 ügyfél konfigurálása tartományi bejelentkezéshez 6.5 ábra Windows NT ügyfél konfigurálása tartományi bejelentkezéshez 6. FEJEZET FELHASZNÁLÓK, BIZTONSÁG ÉS TARTOMÁNYOK | 201 kattintunk. Ekkor a Windows felveszi a kapcsolatot az elsődleges tartományvezérlővel (ami a Samba), és megtörténik a jelszó vizsgálata. (A naplófájlokban utánanézhetünk ennek a műveletnek.) Ha túljutottunk az ellenőrzésen, gratulálhatunk magunknak Úgy konfiguráltuk a Sambát, hogy elsődleges
tartományvezérlőként szerepeljen a hálózatban Windows 95/98 gépekkel szemben, és az ügyfél is sikeresen kapcsolódott hozzá. Windows NT 4.0 Windows NT gép tartományi bejelentkezésének konfigurálásához nyissuk meg a Vezérlőpulton a Hálózat párbeszédablakát. Az elsőként megjelenő párbeszédlap a számítógép azonosítóit tartalmazza. A Change (Módosítás) gombra kattintva nyissuk meg a 6.5 ábrán látható párbeszédablakot Az ablak ,,Member of” (Tagság) csoportjában jelöljük be a Domain (Tartomány) választógombot, majd írjuk be annak a tartománynak a nevét, amelybe ügyfélként be akarunk jelentkezni. Ez ugyanaz a név legyen, mint amit a Samba konfigurációs fájljában a munkacsoport neveként használtunk. Ne jelöljük be a ,,Create a Computer Account in the Domain” négyzetet – a Samba jelenleg nem támogatja ezt a képességet. A Windows 95/98-hoz hasonlóan az NT is közölheti, hogy már bejelentkeztünk egy tartományba.
Ekkor valószínűleg van egy élő kapcsolatunk a munkacsoport valamelyik megosztásával (például a leképzett hálózati meghajtóval) Ebben az esetben egyszerűen szakítsuk meg átmenetileg a kapcsolatot úgy, hogy az egér jobb oldali gombjával az ikonjára kattintunk, és a megnyíló helyi menüben a Szétkapcsolás parancsot választjuk. Miután az OK gombra kattintottunk, a Windows egy párbeszédablakot jelenít meg, amelyben a tartomány üdvözletét olvashatjuk. Ekkor újra kell indítanunk a Windows NT számítógépet Miután betöltődött az operációs rendszer, a Windows 95/98 ügyfelekéhez hasonló bejelentkezési párbeszédablak nyílik meg Bármely olyan fiókra bejelentkezhetünk, amelyet úgy konfiguráltunk a Samba kiszolgálón, hogy fogadja a bejelentkezéseket Győződjünk meg arról, hogy a Windows NT bejelentkezési párbeszédablakában a megfelelő tartományt választottuk. Miután kiválasztottuk a tartományt, eltarthat egy ideig, amíg a
Windows NT elkészíti a rendelkezésre álló tartományok listáját. Miután beírtuk a jelszavunkat, a Windows NT felveszi a kapcsolatot az elsődleges tartományvezérlővel (ami a Samba), és megtörténik a jelszó vizsgálata. (A naplófájlokban most is utánanézhetünk ennek a műveletnek.) Ha túljutottunk az ellenőrzésen, gratulálhatunk magunknak. Úgy konfiguráltuk a Sambát, hogy elsődleges tartományvezérlőként szerepeljen a hálózatban Windows NT gépekkel szemben, és az ügyfél is sikeresen kapcsolódott hozzá 202 | SAMBA Tartományi beállítások A 6.9 táblázat a tartományi bejelentkezésekkel kapcsolatos leggyakrabban használt beállításokat sorolja fel 6.9 táblázat Windows 95/98 tartományi bejelentkezési beállítások Beállítás Paraméterek Funkció Alapértelmezett érték Hatókör domain logons Boolean érték Azt jelzi, hogy Windows tartományi bejelentkezéseket kell-e használni. A Unixot Windows NT
tartománycsoportokra leképző fájl neve. A Unixot Windows NT tartományi felhasználókra leképző fájl neve. A Unixot Windows NT helyi csoportokra leképző fájl neve. Ha yes az értéke, a Samba megköveteli, hogy a felhasználók minden megosztáshoz való kapcsolódáskor hitelesíttessék magukat. no Globális Nincs Globális Nincs Globális Nincs Globális no Megosztás domain Karakterlánc group map (teljes elérési út) domain Karakterlánc user map (teljes elérési út) local Karakterlánc group map (teljes elérési út) revaliBoolean érték date domain logons Ez a beállítás úgy konfigurálja a Sambát, hogy elsődleges tartományvezérlőként fogadhasson tartományi bejelentkezéseket. Miután az ügyfél sikeresen bejelentkezett egy tartományba, a Samba egy különleges ,,zsetont” küld vissza, amelynek birtokában az ügyfél hozzáférhet a tartományi megosztásokhoz anélkül, hogy újból hitelesíttetnie kellene magát a
tartományvezérlőnél. Jegyezzük meg, hogy ehhez a Sambának felhasználói szintű biztonságot kell használnia (security = user), és elsődleges tartományvezérlőnek kell lennie. Emellett a Windows gépek még azt is elvárják, hogy legyen a Samba kiszolgálón egy [netlogon] megosztás (lásd ,,A Samba konfigurálása Windows rendszerű tartományi bejelentkezéshez” szakaszt a fejezet előző részében). domain group map Ezzel a beállítással annak a fájlnak a helyét és nevét adhatjuk meg, amely a Windows NT tartománycsoportok nevét Unix csoportok nevére képezi le. A fájlnak a Samba kiszolgálón kell lennie Például: /usr/local/samba/private/groups.mapping 6. FEJEZET FELHASZNÁLÓK, BIZTONSÁG ÉS TARTOMÁNYOK | 203 A fájlnak egyszerű a formátuma: UnixGroup = NTGroup Egy példa a leképzésre: admin = Administrative A megadott Unix csoportnak érvényes csoportnak kell lennie az /etc/group fájlban. Az NT csoportnak azt a nevet kell adnunk,
amilyen névre a Unix csoportot az NT ügyfélnél le akarjuk képezni. Ez a beállítás csak Windows NT ügyfeleknél használható domain user map Ezzel a beállítással annak a fájlnak a helyét és nevét adhatjuk meg, amely a unixos felhasználóneveket Windows NT tartományi felhasználónevekre alakítja át. A fájlnak a Samba kiszolgálón kell lennie. Például: /usr/local/samba/private/domainuser.mapping A fájlnak egyszerű a formátuma: UnixUsername = [\Domain\]NTUserName Így nézhet ki egy bejegyzés: joe = Joseph Miller A megadott unixos névnek érvényes felhasználónévnek kell lennie az /etc/passwd fájlban. Az NT névnek annak a felhasználónévnek kell lennie, amelyet az NT ügyfél részére unixos felhasználónévként meg akarunk jeleníteni. Ez a beállítás csak Windows NT ügyfeleknél használható. Aki többet szeretne tudni arról, hogy miként kezeli a Windows NT a tartományi felhasználóneveket és a helyi csoportokat, olvassa el Eric
Pearce Windows NT in a Nutshell című könyvét (kiadó: O’Reilly). local group map Ezzel a beállítással annak a fájlnak a helyét és nevét adhatjuk meg, amely a Windows NT helyi csoportok nevét Unix csoportnevekre képezi le. Helyi csoportnevek az olyan nevek is, mint az Administrator vagy a Users. A fájlnak a Samba kiszolgálón kell lennie Például: /usr/local/samba/private/localgroup.mapping 204 | SAMBA A fájlnak egyszerű a formátuma: UnixGroup = [BUILTIN]NTGroup Így nézhet ki egy bejegyzés: root = BUILTINAdministrators A beállítás csak Windows NT ügyfeleknél használható. revalidate Ez a megosztás szintű beállítás azt közli a Sambával, hogy kényszerítse ki a felhasználóktól a jelszavas hitelesítésüket minden olyan esetben, amikor egy gépen másik megosztáshoz akarnak kapcsolódni, függetlenül attól, hogy milyen szintű biztonság van beállítva a Samba kiszolgálón. A beállításhoz alapértelmezés szerint a no érték
tartozik – ilyen esetben az egyszer már sikeresen hitelesített felhasználónak nem kell újból hitelesíttetnie magát. A beállítást az alábbi módon bírálhatjuk felül: revalidate = yes Ezzel ugyan növelhetjük a rendszerünk biztonságát, ugyanakkor kényelmetlenséget okozunk a felhasználóknak azzal, hogy bármely más megosztáshoz való kapcsolódáskor újból hitelesíttetni kell magukat. Bejelentkezési szkriptek A Samba támogatja a Windows olyan bejelentkezési szkriptjeit (ezeknek .BAT vagy CMD a kiterjesztésük), amelyek akkor futnak le az ügyfélgépen, amikor egy felhasználó bejelentkezik egy Windows tartományba. Jegyezzük meg, hogy ezeket a szkripteket a Unix oldal tárolja, és a hálózaton keresztül akkor kerülnek át a felhasználó gépére, és futnak le ott, amikor a felhasználó bejelentkezik a hálózatra. Az ilyen szkripteknek óriási szerepük van a hálózat dinamikus konfigurálásában. A hátrányuk az, hogy mivel Windows
rendszer alatt futnak, a Windows hálózati konfigurációs parancsait kell használniuk. Ha valaki többet szeretne tudni a NET parancsokról, olvassa el az O’Reilly kiadónál megjelent Windows NT in a Nutshell és a Windows 98 in a Nutshell című kézikönyveket. A Sambát a logon script beállítás segítségével utasíthatjuk egy bejelentkezési szkript lefuttatására: [global] domain logons = yes 6. FEJEZET FELHASZNÁLÓK, BIZTONSÁG ÉS TARTOMÁNYOK | 205 security = user workgroup = SIMPLE os level = 34 local master = yes preferred master = yes domain master = yes logon script = %U.bat [netlogon] comment = The domain logon service path = /export/samba/logon public = no writeable = no browsable = no Figyeljük meg, hogy a fenti példában a %U változót használva a bejelentkező felhasználó testére szabhatjuk a szkriptet. Általában szokás, hogy a tartományba bejelentkező felhasználótól vagy számítógéptől függjön, hogy melyik szkript fusson le
Ezekben a szkriptekben figyelembe vehetjük az egyes felhasználók vagy ügyfelek egyéni konfigurációs igényeit. A bejelentkezési szkripteket a [netlogon] megosztás helyén kell tárolni. Ha ez az /export/ samba/logon könyvtár, és a bejelentkezési szkriptnek jeff.bat a neve, akkor a szkriptet a következő módon kell elhelyezni: /export/samba/logon/jeffbat Amikor a felhasználó egy induló szkriptet tartalmazó tartományba jelentkezik be, egy kis párbeszédablakot lát, amely tájékoztatja a szkript futásáról, és a szkript kimeneteit kiírja egy MS-DOS ablakba. Figyelem: mivel ezeket a szkripteket a Windows tölti be, és a Windows oldalon futnak le, a Unix kocsivissza karakterei helyett a DOS kocsivissza/sorelemelés karaktereit kell tartalmazniuk. Ezért ajánlatos, hogy az ilyen szkripteket DOS vagy Windows alapú szövegszerkesztőben készítsük el Az alábbiakban olyan bejelentkezési szkriptre mutatunk példát, ami az aktuális időt a Samba kiszolgálón
lévő időre állítja be, továbbá a h és az i hálózati meghajtókat két megosztásra képezi le a kiszolgálón: # # # Az aktuális idő beállítása a kiszolgálón lévő időre. Ehhez az smb.conf fájlba fel kell venni a "time server = yes" beállítást. echo Az aktuális idő beállítása . net time \hydra /set /yes # # Két hálózati meghajtót leképezünk a Samba kiszolgáló megosztásaira echo Hálózati meghajtók leképezése a Hydra Samba kiszolgálóra. net use h: \hydradata net use i: \hydra etwork 206 | SAMBA Mozgó profilok Windows 95/98 és NT rendszerekben minden felhasználónak saját profilja lehet. A profilok olyan információkat tartalmaznak, mint a rendszer Asztalának a megjelenítése, a Start menüben elhelyezett alkalmazások, a háttér színe és más, ezekhez hasonló jellemzők. Ha a profilt helyi lemez tárolja, akkor ezt helyi profilnak nevezzük, mert a helyi felhasználóval kapcsolatos információkat tartalmazza.
Ha viszont a profilt a kiszolgáló tárolja, akkor a felhasználó ugyanazt a profilt töltheti le, bármelyik ügyfélgépről is kapcsolódik a kiszolgálóhoz. Ez utóbbit mozgó profilnak nevezik, mert a felhasználó gépről gépre vándorolhat, és miközben ,,mozog”, mindig ugyanazt a profilt használhatja. Ennek különösen akkor vehetjük hasznát, ha valaki egyik nap az irodai gépéről, másik nap pedig a hordozható számítógépéről jelentkezik be. A mozgó profilokat a 66 ábra szemlélteti 6.6 ábra Helyi és mozgó profilok A Sambában létrehozhatunk mozgó profilokat, ha a kiszolgálót tartományi bejelentkezésekhez konfiguráltuk, és ha a logon path beállítással megadtunk egy könyvtárfát. A beállításban általában változókkal helyettesítik a felhasználókat az alábbi példa szerint: [global] domain logons = yes security = user workgroup = SIMPLE os level = 34 local master = yes preferred master = yes domain master = yes logon path =
\hydraprofile\%U 6. FEJEZET FELHASZNÁLÓK, BIZTONSÁG ÉS TARTOMÁNYOK | 207 A profilok támogatásához új megosztást kell létrehozni – ez olyan alap lemezmegosztás, amelyhez csak a Samba processzeinek használója (root) férhet hozzá. A megosztásnak írhatónak kell lennie, de nem lehet tallózható Ezen túlmenően minden olyan felhasználóhoz, aki be akar jelentkezni, létre kell hoznunk egy könyvtárat (attól függően, hogy miként adtuk meg logon path beállításban a könyvtárat), amelyhez csak az illető felhasználó férhet hozzá. A biztonság növelése érdekében a megosztásba a directory mode és a create mode beállításokat is felvettük, hogy a megosztáshoz kapcsolódó személyek előtt ne jelenjenek meg az ezekben a könyvtárakban létrehozásra kerülő fájlok, és ne is módosíthassák ezeket. [profile] comment = Felhasználói profilok path = /export/samba/profile create mode = 0600 directory mode = 0700 writable = yes browsable = no
Miután először bejelentkezett egy felhasználó, a Windows ügyfél – attól függően, hogy milyen operációs rendszer fut a gépén – elkészít egy user.dat vagy egy ntuserdat nevű fájlt. Ezt követően az ügyfél feltölti az Asztalának, a Start menüjének, a Hálózatának (Network Neighborhood) és a programmappáinak tartalmát az adott könyvtár különböző mappáiba. Amikor az ügyfél ismét bejelentkezik, ezek a tartalmak letöltődnek a kiszolgálóról, és aktivizálódnak azon az ügyfélgépen, amelyről a felhasználó bejelentkezett Amikor a felhasználó kijelentkezik, a tartalmak ismét feltöltődnek a kiszolgálóra. Ha megnézzük egy profilmappa könyvtárlistáját, akkor például az alábbiakat látnánk: # ls -al total 321 drwxrwxr-x drwxrwxr-x drwxrwx--drwxrwx--drwxrwx--drwxrwx--drwxrwx--drwxrwx--drwxrwx---rw------- 9 4 3 3 2 2 7 2 2 1 root root fred fred fred fred fred fred fred fred simple simple develope develope develope develope
develope develope develope develope Jul Jul Jul Jul Jul Jul Jul Jul Jul Jul 21 22 12 12 12 12 12 12 19 21 20:44 14:32 07:15 07:15 07:15 07:15 07:15 07:15 21:05 21:59 . . Application Data Start Menu cookies desktop history nethood recent user.dat A user.dat fájlok bináris konfigurációs fájlok, amelyeket automatikusan hoz létre a Windows. A Windows ügyfélnél a Profile Editor programmal szerkeszthetők, de ez nem túl egyszerű feladat. A Samba egészen az NT 50 béta verzióig támogatja ebben az ügyfeleket 208 | SAMBA A bejelentkezési szkriptek kezelésével kapcsolatban a Samba dokumentációs könyvtáraiban található fájlokban olvashatunk további részleteket (docs/textdocs/DOMAIN.txt és docs/textdocs/PROFILEStxt) Kötelező profilok A felhasználókhoz kötelező profilok is tartozhatnak – ezek olyan mozgó profilok, amelyek nem módosíthatók. Ha például egy kötelező profillal rendelkező felhasználó kedden felvesz a Start menüjébe egy
parancsot, majd szerdán ismét bejelentkezik, nem fogja látni az előző napon felvett parancsot. A kötelező profil nem más, mint egy userdat fájl userman névre átnevezett változata, ami csak olvashatóvá lett átminősítve a Unix kiszolgálón. Általában azokat a beállításokat tartalmazza, amelyeket a felhasználónak a rendszergazda kívánsága szerint mindig végre kell hajtania. Ha például egy rendszergazda állandó felhasználói konfigurációt akar létrehozni, akkor a következőket teheti: 1. Létrehozza a Samba kiszolgálón az írható és olvasható könyvtárt 2. Az smbconf fájlban a logon path beállításhoz ezt a könyvtárt rendeli 3. Felhasználóként bejelentkezik a Windows 95/98 rendszerből, hogy az ügyfél bekerüljön a könyvtárba 4. A létrejövő userdat fájlt userman névre nevezi át 5. A könyvtárat és a tartalmát csak olvashatóvá minősíti át Az ilyen kötelező profilokat általában nem használják. Ezzel szemben a mozgó
profilok a Windows és a Samba legnépszerűbb szolgáltatásai közé tartoznak. A bejelentkezési szkript beállításai A 6.10 táblázat a Windows tartományi bejelentkezési szkriptjeivel kapcsolatos leggyakoribb beállításokat sorolja fel 6.10 táblázat Bejelentkezési szkriptek beállításai Beállítás Paraméterek Funkció Alapértelmezett érték Hatókör logon script logon path Karakterlánc (DOS elérési út) Karakterlánc (a kiszolgáló és a megosztás UNC neve) Karakterlánc (meghajtó azonosítója) Karakterlánc (a kiszolgáló és a megosztás UNC neve) A DOS/NT parancsfájl neve. Nincs Globális A felhasználó profiljának helye. \%N\%Uprofile Globális logon drive logon home mozgó A bejelentkezési meghajtót adja meg a home könyvtárhoz (csak NT). A tartományba bejelentkezett ügyfelek home könyvtárainak helyét adja meg. Z: Globális \%N\%U Globális 6. FEJEZET FELHASZNÁLÓK, BIZTONSÁG ÉS TARTOMÁNYOK | 209 logon script
Ez a beállítás egy Windows rendszerben futtatható .BAT vagy CMD kiterjesztésű parancsfájlt ad meg, amelyben az egyes parancssorokat a kocsivissza/soremelés karakterpár zárja le. A fájl végrehajtására azt követően kerül sor, hogy a felhasználó bejelentkezett a tartományba A bejelentkezési szkripteket egy [netlogin] nevű megosztásban kell tárolni (a részletekről ,,A Samba konfigurálása Windows rendszerű tartományi bejelentkezéshez” című előző fejezetrészben volt szó). A beállításban gyakran használják a %U vagy a %m változót (a felhasználó vagy a számítógép NetBIOS neve). Példa: logon script = %U.bat A fenti beállítás hatására végrehajtásra kerül a felhasználó nevével meghatározott, a [netlogin] nevű megosztásban található szkript. Ha bejelentkező felhasználónak fred a neve, és a [netlogin] megosztásban elérési útként az /export/samba/netlogin könyvtár van megadva, akkor a szkript az
/export/samba/netlogin/fred.bat lesz Mivel ezeket a szkripteket a Windows tölti be, és a Windows oldalon futnak le, a Unix kocsivissza karakterei helyett a DOS kocsivissza/sorelemelés karaktereit kell tartalmazniuk. logon path Ezzel a beállítással a mozgó profilok helyét adhatjuk meg. Amikor bejelentkezik egy felhasználó, a kiszolgálóról letöltődik a mozgó profilja arra a gépre, amelyről bejelentkezett, és így a megszokott környezetében dolgozhat. Amikor kijelentkezik a felhasználó, a profilja visszatöltődik a kiszolgálóra, és ott tárolódik, amíg legközelebb ismét bejelentkezik Gyakran biztonságosabb külön megosztást készíteni kizárólag a felhasználói profilok tárolására: logon path = \hydraprofile\%U A beállításról részletesebben a fejezet korábbi, ,,Bejelentkezési szkriptek” című részében volt szó. logon drive Ezzel a beállítással annak a lemezmeghajtónak az azonosító betűjét adhatjuk meg, amelyre a logon home
beállításban meghatározott home könyvtárt képezzük le egy NT ügyfélnél. Ez a beállítás csak Windows NT ügyfeleknél használható Példa: logon drive = I: Olyan betűt kell használnunk, amelyik nem ütközik az ügyfél gépében lévő merevlemezes meghajtók azonosítójával. A beállításhoz alapértelmezés szerint a Z betű tartozik, amit meg is hagyhatunk, mert a lehető legtávolabb van az A, a C és a D betűktől. logon home Ez a beállítás egy felhasználó home könyvtárának a helyét adja meg a DOS NET parancsai számára. A Samba kiszolgálón lévő valamely megosztást például az alábbi módon adhatjuk meg home könyvtárként: 210 | SAMBA logon home = \hydra\%U Megjegyezzük, hogy a home könyvtár a [homes] szakaszon keresztül is megtalálható, de bármely más könyvtár is megadható. A bejelentkezési szkripteket tartalmazó home könyvtárak az alábbi paranccsal képezhetők le: NET USE I: /HOME A Windows NT
felhasználó-kezelőjében (User Manager) a felhasználó tulajdonságai alatt, a környezeti profil segítségével ellenőrizhetjük is, hogy valóban létrejött-e a home könyvtár. Egyéb kapcsolódási szkriptek Miután egy felhasználó bejelentette azt a szándékát, hogy hozzá szeretne férni a Samba valamelyik megosztásához, a Samba a maga oldalán egy program végrehajtásával előkészítheti a megosztás használatát. A Samba lehetővé teszi, hogy akár a megosztáshoz való kapcsolódás előtt, akár utána lefusson egy szkript. Ehhez Windows tartományok használatára sincs szükség A 611 táblázat néhány ilyen előkészítő beállítást sorol fel 6.11 táblázat Kapcsolódási szkriptek beállításai Beállítás Paraméterek root preexec Karakterlánc Megadja azt a parancsot, (Unix parancs) amelynek rootként kell lefutnia a megosztáshoz való kapcsolódás előtt. Karakterlánc Megadja azt a Unix paran(Unix parancs) csot, amelynek
felhasználóként kell lefutnia a megosztáshoz való kapcsolódás előtt. Karakterlánc Megadja azt a Unix paran(Unix parancs) csot, amelynek felhasználóként kell lefutnia a megosztásról való lekapcsolódás után. Karakterlánc Megadja azt a Unix paran(Unix parancs) csot, amelynek rootként kell lefutnia a megosztásról való lekapcsolódás után. preexec (exec) postexec root postexec Funkció Alapértelmezett érték Hatókör Nincs Megosztás Nincs Megosztás Nincs Megosztás Nincs Megosztás root preexec Ehhez a beállításhoz egy Unix parancs tartozik, ami rootfelhasználóként kerül végrehajtásra, mielőtt még megtörténne a megosztáshoz való kapcsolódás. A beállítás segítségével olyan műveleteket végezhetünk el, amelyek rootprivilégiumot igényelnek. A root pre- 6. FEJEZET FELHASZNÁLÓK, BIZTONSÁG ÉS TARTOMÁNYOK | 211 exec beállítást használva például CD-ROM-ot csatlakoztathatunk egy megosztáshoz, hogy
elérhetővé tegyük őket az ügyfelek számára, vagy könyvtárakat hozhatunk létre. Az alábbi részlet arra mutat példát, miként használhatunk egy parancsot CD-ROM csatlakoztatására: [homes] browseable = no writeable = yes root preexec = /etc/mount /dev/cdrom2 Ne feledjük, hogy ezek a parancsok rootfelhasználóként futnak. Ezért a biztonság érdekében sohase engedélyezzük, hogy a felhasználók módosítsák a root preexec beállításhoz tartozó parancsot. preexec A preexec beállításhoz – amit esetenként exec alakban is használnak – tartozó parancs szintén a kapcsolódás előtt fut le. Ez normál, nem privilegizált parancs, amelyet a Samba a %u változóval megadott felhasználóként futtat le. A parancsot általában a bejelentkezés elvégzéséhez használják az alábbi módon: [homes] preexec = echo "%u connected to %S from %m (%I)" >/tmp/.log Legyünk tisztában azzal, hogy a parancs által a standard kimenetre küldött
parancsok nem jelennek meg a felhasználó előtt, hanem megsemmisülnek. Ha preexec szkriptet akarunk használni, akkor teszteljük, mielőtt még engednénk, hogy meghívja a Samba postexec Miután egy felhasználó lekapcsolódik egy megosztásról, felhasználóként végrehajtásra kerül a Samba kiszolgálón a postexec beállításban megadott parancs. Ez általában az utólagos tisztogatási műveleteket végzi el. Erre a parancsra is vonatkozik, hogy a %u változóval megadott felhasználóként fut le, és a standard kimenetre küldött üzenetei nem jelennek meg. root postexec A postexec beállítással megadott parancsot követően a root postexec beállításban megadott parancs végrehajtására kerül sor (amennyiben van ilyen). A beállításhoz megadott parancs rootfelhasználóként fut le, miután a felhasználó lekapcsolódott a megosztásról Ebben a beállításban olyan parancsokat adhatunk meg, amelyek végrehajtásához rootprivilégium tartozik.
Együttműködés NIS és NFS rendszerrel Végül megemlítjük, hogy a Samba NIS és NIS+ rendszerekkel is képes együttműködni. Ha a hálózatban egynél több fájlkiszolgáló van, és mindegyiken fut a Samba, akkor célszerű, hogy az SMB ügyfél ahhoz a kiszolgálóhoz kapcsolódjon, amelyiknek a merevlemezei a home könyvtárát tartalmazzák. Általában nem jó megoldás, hogy a fájlokat először NFS 212 | SAMBA rendszerrel elküldjük egy Samba kiszolgálóra, hogy onnan SMB rendszerrel újra az ügyfélhez kerüljenek. (A Samba sebessége mintegy a harmadára esne vissza) Ezért léteznek olyan beállítások, amelyek segítségével tájékoztathatjuk a Sambát arról, hogy a NIS ismeri a megfelelő kiszolgáló nevét, és jelezhetjük, hogy melyik NIS képezi le az információkat. A 6.12 táblázat két ilyen, a felhasználókat segítő beállítást sorol fel 6.12 táblázat NIS beállítások Beállítás Paraméterek Funkció Alapértelmezett érték
Hatókör nis homedir Boolean érték no Globális homedir map Karakterlánc (NIS leképzés neve) Ha yes az értéke, akkor a felhasználó home könyvtárát nem az /etc/passwd fájlban, hanem a NIS-ben kell keresni. A NIS leképzést kell használni a felhasználó home könyvtárának kereséséhez. Nincs Globális nis homedir és homedir map A nis homedir és a homedir map beállítást azokon a hálózatokon használják a Samba kiszolgálók, amelyeken a Unix home könyvtárakat az NFS (automounter) és a NIS (Yellow Pages) szolgáltatja. A nis homedir beállítással az jelezhető, hogy a felhasználó home könyvtárát tartalmazó kiszolgálót a NIS-ben kell keresni. A homedir map beállítás viszont arról tájékoztatja a Sambát, hogy melyik NIS leképezésben keresse ezt a kiszolgálót. A NIS kiszolgálónak Samba kiszolgálónak kell lennie, hogy az ügyfél SMB kéréssel kapcsolódhasson hozzá, a többi Samba kiszolgálóra pedig rá kell telepíteni a
NIS rendszert, hogy elvégezhető legyen a keresés. Ha például egy joe nevű felhasználó egy [joe] nevű megosztáshoz akar kapcsolódni, és a nis homedir beállításhoz a yes érték tartozik, akkor a Samba a homedir map beállításban megadott fájlban fogja keresni joe home könyvtárát. Ha megtalálja, akkor az ezt tartalmazó gép nevét visszaküldi az ügyfélnek. Az ügyfél ekkor megpróbál ehhez a géphez kapcsolódni, és azon kísérli meg a megosztások elérését A NIS-ben való kereséseket az alábbi módon engedélyezhetjük: [global] nis homedir = yes homedir map = amd.map Nyomtatás és névfeloldás Ebben a fejezetben két témakörrel foglalkozunk: egyrészt megvizsgáljuk, miként állíthatjuk be a nyomtatókat úgy, hogy Samba kiszolgálóról legyenek használhatók, másrészt megnézzük, hogyan konfigurálhatjuk úgy a Sambát, hogy WINS (Windows Internet Name Service) kiszolgálóként működhessen. A Samba lehetővé teszi az ügyfelei
számára, hogy kinyomtassák a dokumentumaikat a hozzá csatlakoztatott nyomtatókon. Emellett arra is lehetőséget ad, hogy unixos dokumentumokat nyomtassunk ki egy Windows géphez kapcsolódó nyomtatón. A fejezet első részében arról lesz szó, hogy miként kell konfigurálnunk a nyomtatókat mind az ügyfél, mind a kiszolgáló oldalán A fejezet második részében a NetBIOS névkiszolgáló (NBNS) Microsoft által megvalósított eljárásával, a WINS kiszolgálóval ismerkedünk meg. Amint az első fejezetben említettük, az NBNS lehetővé teszi, hogy a számítógépek broadcast üzenetek nélkül is elvégezhessék egy NetBIOS hálózatban a névfeloldást Ebben az elrendezésben mindegyik gép pontosan tudja, hogy hol található a WINS kiszolgáló, és elkérheti tőle a hálózathoz kapcsolódó többi gép IP címét. Nyomtatási feladatok küldése a Sambára A Samba kiszolgálóhoz csatlakozó nyomtató a Network Neighborhood (hálózatok) ablakában, a
felsorolt megosztások között látható. Ha az ügyfél gépén regisztrálva van a nyomtató, és a megfelelő illesztőprogram is telepítve van, akkor az ügyfél minden további nélkül elküldheti a nyomtatási feladatait a Samba kiszolgálóhoz csatlakoztatott nyomtatóra A 7.1 ábra azt szemlélteti, hogy miként jelenik egy Samba nyomtató a Windows ügyfél Network Neighborhood ablakában A nyomtatók Sambán történő kezeléséhez tudnunk kell, milyen alapvető folyamatok zajlanak le a nyomtatás során. A nyomtatási feladat Sambára történő küldése a következő négy lépésből áll: 1. A nyomtatómegosztási kapcsolat megnyitása és hitelesítés 2. Fájlok átmásolása a hálózaton keresztül 3. A kapcsolat bezárása 4. Az átküldött fájl kinyomtatása és a másolat törlése Amikor a nyomtatási feladat megérkezik a Samba kiszolgálóra, a nyomtatandó adatok átmenetileg lemezre íródnak, mégpedig a nyomtatómegosztás path beállításában
megadott könyvtárba. Ezt követően a Samba végrehajtja a Unix nyomtatási parancsát, ami a 214 | SAMBA 7.1 ábra Samba nyomtató a Network Neighborhood ablakban nyomtatóra küldi a fájlban lévő adatokat. A feladat a megosztáshoz kapcsolódó hitelesített felhasználóként nyomtatódik ki. Jegyezzük meg, hogy a felhasználó a megosztás konfigurálásától függően vendégfelhasználó is lehet Nyomtatási parancsok A dokumentum kinyomtatásához közölnünk kell a Sambával, hogy milyen parancsot használjon a fájl kinyomtatásához és törléséhez. Linuxban a következő parancs használható: lpr -r -Pprinter file A parancs lpr része azt mondja, hogy a dokumentumot be kell másolni egy várakozó területre (ez rendszerint a /var/spool), elő kell keresni a nyomtató nevét a rendszer konfigurációs fájljából (/etc/printcap), az ott található szabályok értelmezésével el kell dönteni, miként kell feldolgozni a fájlban lévő adatokat, és
melyik fizikai eszközre kell küldeni azokat. Az -r kapcsoló azt közli, hogy a parancssorban megadott fájlt a kinyomtatását követően törölni kell Természetesen a fájlnak csak a Samba kiszolgálón tárolt másolata törlődik, az eredeti fájl változtatás nélkül megmarad az ügyfélnél A Linux Berkeley (BSD) stílusú nyomtatást használ, de a Unix System V verziója is hasonlóképpen nyomtat. Ez utóbbinál némileg összetettebb a nyomtatási és törlési parancs: lp -dprinter -s file; rm file A System V verzióban az /etc/printcap fájlt az /usr/spool/lp könyvtárban elrejtett különböző konfigurációs fájlok helyettesítik, és a parancshoz nem tartozik olyan kapcsoló, ami törölné a nyomtatás után a fájlt. Ezért ezt magunknak kell elvégezni – ezért adtuk meg másodikként az rm parancsot. Nyomtatási változók A Sambában négy változót használhatunk a nyomtatási beállításokhoz. A változókat a 71 táblázat sorolja fel. 7.
FEJEZET NYOMTATÁS ÉS NÉVFELOLDÁS | 215 7.1 táblázat Nyomtatási változók Változó Meghatározás %s %f %p %j A kinyomtatandó fájl Samba kiszolgálón lévő teljes elérési útja. A kinyomtatandó fájl neve a Samba kiszolgálón (az elérési út nélkül). A használandó unixos nyomtató neve. A nyomtatási feladat száma (az lprm, lppause és lpresume parancsokhoz). A minimális nyomtatási beállítás Indulásként tekintsünk egy egyszerű, de szemléletes nyomtatómegosztást. Tegyük fel, hogy Linux rendszerben dolgozunk, és az /ltc/printcap fájlban fel van sorolva az lp nevű nyomtató. Ekkor az alábbi megosztást kell felvennünk az smbconf fájlba, hogy a hálózaton keresztül elérhető legyen a nyomtató: [printer1] printable = yes print command = /usr/bin/lpr -r printer = lp printing = BSD read only = yes guest ok = yes %s Ez a megosztás bárki számára lehetővé teszi, hogy adatokat küldjön a nyomtatóra (később ezen azért majd
változtatunk). Pillanatnyilag azt kell megértenünk, hogy a print command beállításban a %s változó annak a fájlnak a neve helyén áll, amely majd kinyomtatódik, amikor a Samba végrehajtja a parancsot Különböző stílusú Unix gépek különböző nyomtatási parancsokat használnak, de ehhez csak a print command és a printing beállítások értékét kell módosítanunk. Lássuk, milyen parancsot kell használni a System V Unixos rendszerben. Változók használatával a következő alakú lehet a parancs: print command = lp -d%p -s %s; rm %s Amint korábban említettük, a %p változó a nyomtató nevét helyettesíti, míg a %s a fájl neve helyett áll. Ezt követően a nyomtatási beállításban a következő módon adhatjuk meg, hogy System V rendszerben dolgozunk: printing = SYSV Ha megosztás szintű biztonságot alkalmazunk, akkor szenteljünk külön figyelmet a Samba által használt vendégfióknak. Az ehhez tartozó tipikus nobody érték letilthatja az
operációs rendszer számára a nyomtatást. Ha ez történne a rendszerünkben, akkor a nyomtatómegosztásba (vagy akár a globális megosztásba) vegyünk fel egy guest account beállítást, és olyan fiókot rendeljünk hozzá, amelyik engedélyezi a nyomtatást. 216 | SAMBA A Samba szerzői az ftp fiókot javasolják, ami általában eleve úgy van konfigurálva, hogy védett a jogosulatlan vendégekkel szemben. A beállítás alakja: guest account = ftp Ugyancsak a nyomtatáshoz tartozik, hogy az ügyfelek lekérdezhessék a Samba kiszolgálóra küldött nyomtatási feladatuk állapotát. A Samba akkor sem tiltja meg egy nyomtatási feladat elküldését, amikor éppen nyomtat egy dokumentumot. Ebből következően a Sambának nem csak az éppen nyomtatás alatt álló feladat állapotáról kell tudnia tájékoztatni a feladat tulajdonosát, hanem arról is, hogy mely dokumentumok várakoznak az adott nyomtatón a kinyomtatásukra. A Sambának azt is lehetővé kell
tennie, hogy az ügyfél szüneteltesse, újból aktivizálja vagy törölje a feladatot a várakozói sorból A Samba különböző beállításokat tartalmaz ezen feladatok végrehajtásához Amint gondolhatjuk, e beállítások funkciója a létező Unix parancsokéval azonos: • lpq command • lprm command • lppause command • lpresume command Ezekre a beállításokra rövidesen részletesebben is kitérünk. Annyit azonban már most megjegyzünk, hogy a nyomtatási beállításokhoz rendelt érték határozza meg a viselkedésüket, és többnyire nincs szükség az alapértelmezett értékek módosítására. Néhány fontos megjegyzés a nyomtatómegosztásokkal kapcsolatban: • Mindegyik nyomtatómegosztásba (még a [printers] megosztásba is) fel kell venni a printable = yes beállítást. Ha megfeledkeznénk erről, akkor a megosztást nem lehetne nyomtatáshoz használni, hanem lemezmegosztásnak tekintené a Samba. • Ha a nyomtató szakaszába felvesszük a path
beállítást, akkor a nyomtató(k)ra küldött fájlok nem az alapértelmezés szerint /tmp könyvtárba, hanem a beállításban megadott könyvtárba másolódnak. Mivel egyes Unix operációs rendszerekben a /tmp könyvtár számára lefoglalt lemezterület viszonylag kicsi lehet, sok rendszergazda ehelyett a var/spool vagy valamilyen más könyvtárt állít be. • A nyomtatómegosztásokban figyelmen kívül marad a read only beállítás. • Ha egy nyomtatómegosztásba felvesszük a guest ok = yes beállítást, és a Samba megosztás szintű biztonságra van konfigurálva, akkor a guest account használójaként bárki küldhet adatokat a nyomtatóra. Azzal, hogy egy vagy több Samba kiszolgálót nyomtatókiszolgálóként használhatunk, nagyon rugalmassá tehetjük a helyi hálózatunkat. Szabadon megoszthatjuk a nyomtatókat a felhasználók között, vagy éppenséggel csak bizonyos személyekre korlátozhatjuk az elérhetőségüket. Ez utóbbit például úgy
tehetjük meg, hogy az illető nyomtató megosztásába felvesszük a valid users beállítást, és a kedvezményezett személyeket rendeljük hozzá: [deskjet] printable = yes path = /var/spool/samba/print valid users = gail sam 7. FEJEZET NYOMTATÁS ÉS NÉVFELOLDÁS | 217 A megosztás elérését engedélyező, az előző fejezetben ismertetett összes beállítás a nyomtatómegosztásokban is használható. Mivel a Samba a nyomtatókhoz a nevükön keresztül fér hozzá, a nyomtatási szolgáltatásokat egyszerűen megoszthatjuk különböző kiszolgálók között – az olyan feladatokhoz, mint a terheléselosztás vagy a karbantartás, a Unix ismert parancsait használhatjuk. A [printers] megosztás A ,,Lemezmegosztások” című 4. fejezetben röviden már találkoztunk a [printers] szakasszal, ami automatikusan létrehozza a nyomtatási szolgáltatásokat Tekintsük át most ennek a működését: ha a konfigurációs fájlba felveszünk egy [printers] nevű
megosztást. akkor a Samba automatikusan beolvassa a /ltc/printcap fájlt, és a fájlban felsorolt mindegyik nyomtatóhoz létrehoz egy-egy nyomtatómegosztást. Ha például a Samba kiszolgálónak ebben a fájljában az lp, a pcl, és a ps nyomtató van felsorolva, akkor a Samba három nyomtatómegosztást hoz létre az ilyen nevű nyomtatókhoz, melyek mindegyikét a [printers] megosztásba felvett beállításokkal konfigurálja. Emlékezzünk vissza arra, hogy a Samba az alábbi szabályokat követi, amikor egy ügyfél olyan megosztáshoz akar kapcsolódni, amelyet nem tartalmaz az smb.conf fájl: • Ha a kért megosztás neve megegyezik a rendszer jelszófájljában tárolt valamelyik felhasználónévvel, és létezik a [homes] megosztás, akkor a felhasználó nevét használva új megosztást készít, amelyet a [homes] és a [global] szakaszokban lévő értékekkel inicializál. • Ellenkező esetben, ha a kért megosztás neve a rendszer konfigurációs fájljában
felsorolt valamelyik nyomtató nevével egyezik meg, akkor a nyomtató nevét használva új megosztást készít, amelyet a [printers] szakaszban lévő értékekkel inicializál. (A [global] szakasz változói itt nem használhatók.) • Ha a fenti kapcsolódások egyike sem sikerült, akkor a Samba az alapértelmezés szerinti megosztást keresi. Ha ilyent sem talál, hibaüzenetet küld A fentiek egy lényeges dologra világítanak rá: vigyázzunk arra, hogy ne adjuk ugyanazt a nevet egy nyomtatónak, mint ami egy felhasználó neve. Ha így tennénk, lemezmegosztáshoz kapcsolhatnánk azt a felhasználót, aki egy nyomtatómegosztáshoz akart volna hozzáférni. Az alábbiakban arra látunk példát, hogy Linux (BSD) rendszerben hogyan vehetünk fel egy [printers] megosztást. Bár a beállítások között alapértelmezettek is vannak, szemléltetés céljából ezeket is beírtuk: [global] printing = BSD print command = /usr/bin/lpr -P%p -r %s printcap file = /etc/printcap min
print space = 2000 [printers] path = /usr/spool/public printable = true guest ok = true guest account = pcguest 218 | SAMBA Globális hatókörrel megadtuk a nyomtatási stílust (BSD), bevettük a nyomtatási parancsot (print command), ami a nyomtatóra küldi az adatokat, előírtuk, hogy törlődjön az átmeneti fájl, tájékoztatást adtunk a nyomtatási képességekről (printcap), és 2 megabájtban határoztuk meg a nyomtatáshoz lefoglalandó lemezterületet. Ezt követően elkészítettük a [printers] megosztást a rendszernyomtatókhoz. A path beállításban az átmeneti fájlok tárolási helyéül a /usr/spool/public könytárat írtuk elő. Ezekbe a megosztásokba a printable = true beállítást is fel kell venni A két guest beállítás akkor hasznos, ha megosztás szintű biztonsággal működik a Samba: engedélyeztük a vendéghozzáférést, és megadtuk azt a felhasználót, aki végrehajthatja a nyomtatási parancsokat. Tesztnyomtatás Nézzük most,
miként végezhetünk el egy tesztnyomtatást a Samba kiszolgálóról. Tételezzük fel a legbonyolultabb esetet, és használjunk egy vendégfiókot Először futtassuk le a nyomtatómegosztásokat tartalmazó konfigurációs fájlon a Samba testparm parancsát, amint ezt a 2. fejezetben is tettük Ebből megtudhatjuk, vannak-e szintaktikai hibák a konfigurációs fájlban Ha például az előző példából kihagytuk volna a path beállítást, a következőt látnánk: # testparm Load smb config files from /usr/local/samba/lib/smb.conf Processing configuration file "/usr/local/samba/lib/smb.conf" Processing section "[global]" Processing section "[homes]" Processing section "[data]" Processing section "[printers]" No path in service printers - using /tmp Loaded services file OK. Press enter to see a dump of your service definitions Global parameters: load printers: Yes printcap name: /etc/printcap Default service parameters: guest
account: ftp min print space: 0 print command: lpr -r -P%p %s lpq command: lpq -P%p lprm command: lprm -P%p %j lppause command: lpresume command: Service parameters [printers]: path: /tmp print ok: Yes read only: true public: true 7. FEJEZET NYOMTATÁS ÉS NÉVFELOLDÁS | 219 Következő lépésként adjuk ki a testprns nyomtatónév parancsot. Ez az egyszerű program azt ellenőrzi, hogy szerepel-e a megnevezett nyomtató a printcap fájlban Ha ez a fájl nem a szokásos helyén lenne, akkor a testprns parancs második argumentumaként megadhatjuk az elérési útját: # testprns lp /etc/printcap Looking for printer lp in printcap file /etc/printcap Printer name lp is valid. Ezt követően jelentkezzünk be vendégfelhasználóként, keressük meg a várakozási sort tartalmazó könyvtárt, és győződjünk meg arról, hogy ugyanazt a parancsot használhatjuk a nyomtatáshoz, amit a Samba is használ a testparm parancs kimenetében. Amint korábban említettük, ebből
megtudhatjuk, hogy meg kell-e változtatnunk a vendégfiókot, mert lehetséges, hogy az alapértelmezés szerint fiókról nem engedélyezett a nyomtatás. Végül küldjünk az smbclient programmal valamilyen nyomtatási feladatot a Samba kiszolgálóra, és lássuk, ezek történnek-e: • A nyomtatási feladat (kis időre) megjelenik a Samba path beállításban megadott könyvtárának várakozási sorában. • A nyomtatási feladat megjelenik a nyomtatórendszer könyvtárának várakozási sorában. • A nyomtatási feladat eltűnik a várakozási sorból. Ha az smbclient parancs nem tud nyomtatni, akkor átirányíthatjuk a print command kimenetét, hogy összegyűjtsük a hibakereséshez szükséges információkat: print command = /bin/cat %s >/tmp/printlog; rm %s vagy: print command = echo "printed %s on %p" >/tmp/printlog A Samba nyomtatóbeállításaival kapcsolatos gyakori hiba, hogy elfelejtjük megadni a parancsokhoz a teljes elérési utat: a
parancsok egyszerű megadása gyakran nem elég, mert a vendégfiók path beállítása nem tartalmazza ezeket. Másik gyakori hiba, hogy nincs engedélyünk a várakozó sor könyvtárának eléréséhez. Nyomtatással kapcsolatos további tudnivalók a Samba dokumentációjában (Printing.txt) olvashatók Ezen túlmenően részletes információkat tartalmaz a Unix nyomtatási rendszereiről AEleen Frisch Essential Systems Administration című könyve (kiadó: O’Reilly). 220 | SAMBA Windows ügyfél beállítása és tesztelése Miután a Samba kiszolgáló már készen áll a nyomtatásra, a Windows ügyfelet is fel kell készítenünk erre. Nézzük meg a Samba kiszolgálót a Network Neighborhood ablakban A listában szerepelniük kell a rendelkezésre álló nyomtatóknak. A 72 ábrán az lp nevű nyomtató látható. 7.2 ábra Nyomtató a Network Neighborhood ablakban Következő lépésként fel kell ismertetnünk a Windows ügyféllel a nyomtatót. Kattintsunk
kettőt a nyomtató ikonjára. Ha egy még nem telepített nyomtató ikonjára kattintunk (amint most éppen tettük), a Windows felajánlja a segítségét. Fogadjuk el ezt, hogy elinduljon a Printer Wizard (Nyomtató varázsló) A varázsló elsőként azt kérdezi, akarunk-e DOS-ból nyomtatni. Tételezzük fel, hogy nem akarunk, ezért válaszoljunk nemmel, majd kattintsunk a Next (Tovább) gombra. A varázsló ekkor megnyitja a 7.3 ábrán látható ablakot, amelyben a nyomtató gyártóját és típusát választhatjuk ki. 7.3 ábra Nyomtatók gyártója és típusa 7. FEJEZET NYOMTATÁS ÉS NÉVFELOLDÁS | 221 A párbeszédablak két listában számos gyártót és típust sorol fel. Ha nem találnánk meg pontosan az általunk használt típust, de tudjuk, hogy PostScript nyomtató, akkor gyártóként válasszuk az Apple céget, típusként pedig az Apple LaserWriter nyomtatót. Ez a legtöbb alapvető PostScript képességet tartalmazza, és az egyik legmegbízhatóbb
típusnak bizonyult. Ha előzőleg már voltak telepítve PostScript nyomtatók a gépünkre, akkor kérdést kapunk arra vonatkozóan, hogy a már meglévő illesztőprogramot akarjuk-e használni, vagy le akarjuk azt cserélni. Legyünk tisztában azzal, hogy ha újabbra cseréljük az illesztőprogramot, hibásan nyomtathatnak a többi nyomtatók Ezért az javasolható, hogy addig, amíg megfelelően működnek a nyomtatóink, ne cseréljük le a régi illesztőprogramokat. Következő lépésként a Nyomtató varázsló megkérdezi a nyomtató nevét. Meghagyhatjuk az eredeti nevét, de bármely más nevet is adhatunk neki Ha például a ,,PS a Samba kiszolgálón” nevet adjuk neki, akkor tudni fogjuk, hogy melyik nyomtatón keressük a kinyomtatott dokumentumokat. Befejezésül a Nyomtató varázsló megkérdezi, hogy nyomtasson-e tesztoldalt. Ha igennel válaszolunk, akkor a varázsló a 74 ábrán látható párbeszédablakot jeleníti meg 7.4 ábra Tesztoldal nyomtatása Ha
nem sikerült kinyomtatni a tesztoldalt, akkor kattintsunk a 7.4 ábrán látható No gombra Ekkor a varázsló az ügyfél oldalán keresi a hibát Ha viszont sikerült a tesztoldal kinyomtatása, akkor gratulálhatunk magunknak. A távoli nyomtatót minden olyan alkalmazásból használhatjuk, amelyben van Fájl és Nyomtatás menü vagy parancs Nyomtató-illesztőprogramok automatikus telepítése Az előző fejezetrészben arról olvashattunk, miként konfigurálhatunk kézzel nyomtatóillesztőprogramot Windows rendszerben. Rendszergazdaként azonban nem garantálhatjuk, hogy az összes felhasználó hiba nélkül el tudja végezni ezt a műveletet. Szerencsére a Samba lehetővé teszi, hogy automatikusan telepítsük egy nyomtatóhoz az illesztőprogramját. A Sambában három olyan beállítás van, amelynek segítségével automatikusan telepíthetők nyomtató-illesztőprogramok az első alkalommal kapcsolódó ügyfeleknél. E beállí- 222 | SAMBA tások neve
printer driver, printer driver file és printer driver location. A most következő részben ezek használatáról lesz szó. Ezzel kapcsolatban további tudnivalók a Samba disztribúciós dokumentációjában, a PRINTER DRIVER.TXT fájlban olvashatók Az automatikus telepítéshez a következő négy lépést kell végrehajtani: 1. Telepítsük a nyomtató illesztőprogramjait egy Windows ügyfélnél (ehhez nem szükséges, hogy az illető nyomtató kapcsolódjon a számítógéphez) 2. A Windows gép adatai alapján készítsünk el egy nyomtatódefiníciós fájlt 3. Hozzunk létre egy PRINTER$ megosztást, ahová az illesztőprogramokat majd el fogjuk helyezni. 4. Ennek megfelelően módosítsuk a Samba konfigurációs fájlját Lássuk részleteiben a fenti lépéseket. Illesztőprogramok telepítése Windows ügyfélnél Ehhez a lépéshez Windows 95/98 rendszert kell használnunk. Az ügyfelek közül bármelyiket választhatjuk, a lényeg az, hogy be lehessen tölteni rajta
a megfelelő illesztőprogramokat Még arra sincs szükség, hogy csatlakozzon a géphez a nyomtató A My Computer (Sajátgép) ablakból nyissuk meg a nyomtatók ablakát, és kattintsunk kettőt az Add Printer (Nyomtató hozzáadása) ikonra, amint ezt a 7.5 ábra mutatja 7.5 ábra A nyomtatók ablaka Ekkor elindul az Add Printer Wizard (Nyomtató hozzáadása varázsló), amely segíti a nyomtató gyártójának és típusának kiválasztását. Arra a kérdésére, hogy akarunk-e DOSból nyomtatni, nemmel válaszoljunk A varázsló az operációs rendszert telepítő CD-ROMról betölti a szükséges illesztőprogramokat, és felajánlja tesztoldal nyomtatását Erre is nemmel válaszoljunk, és fejezzük be a varázsló futását. 7. FEJEZET NYOMTATÁS ÉS NÉVFELOLDÁS | 223 Nyomtatódefiníciós fájl készítése A nyomtatódefiníciós fájlt a /usr/local/samba/bin könyvtárban lévő make printerdef szkript segítségével készíthetjük el. A szkript
használatához a Windows ügyféltől át kell másolnunk a következő négy fájlt:* C:WINDOWSINFMSPRINT.INF C:WINDOWSINFMSPRINT2.INF C:WINDOWSINFMSPRINT3.INF C:WINDOWSINFMSPRINT4.INF Miután átmásoltuk a négy fájlt, a megfelelő illesztőprogram és a hozzá tartozó .INF fájl alapján elkészíthetjük a nyomtatóinformációs fájlt. Ha az illesztőprogram neve az A–K betűk valamelyikével kezdődik, akkor az MSPRINT.INF vagy az MSPRINT3INF fájlt válasszuk. Ha az illesztőprogram neve az L–Z betűk valamelyikével kezdődik, akkor az MSPRINT2.INF vagy az MSPRINT4INF fájlt válasszuk Lehet, hogy a grep paranccsal végig kell pörgetnünk ezeket a fájlokat, hogy lássuk, hol található egy adott illesztőprogram. Az alábbi példában az illesztőprogramot az MSPRINT3.INF fájl tartalmazza, és egy HP DeskJet 560C típusú nyomtatóhoz készítjük el a nyomtatódefiníciós parancsot: $grep "HP DeskJet 560C Printer" MSPRINT.INF MSPRINT3INF MSPRINT3.INF:
"HP DeskJet 560C Printer"=DESKJETCDRV,HP DeskJet $make printerdef MSPRINT3.INF "HP DeskJet 560C Printer" >printersdef FOUND:DESKJETC.DRV End of section found CopyFiles: DESKJETC,COLOR DESKJETC Datasection: (null) Datafile: DESKJETC.DRV Driverfile: DESKJETC.DRV Helpfile: HPVDJC.HLP LanguageMonitor: (null) Copy the following files to your printer$ share location: DESKJETC.DRV HPVCM.HPM HPVIOL.DLL HPVMON.DLL HPVRES.DLL HPCOLOR.DLL HPVUI.DLL HPVDJCC.HLP colorHPDESK.ICM Figyeljük meg, hogy a szkript kéri néhány fájl átmásolását. Ezekre a következő lépésben lesz szükség. * A Windows 95 régebbi verziói csak az első két fájlt tartalmazzák. 224 | SAMBA PRINTER$ megosztás készítése A feladatnak ez a része eléggé egyszerű. Készítsünk el az smbconf fájlban egy [PRINTER$] nevű megosztást, ami a Samba kiszolgáló egyik üres könyvtárára mutat Miután ez megtörtént, másoljuk be a make printerdef szkript által kért fájlokat
a [PRINTER$] megosztás path beállításában megadott könyvtárba. A konfigurációs fájlba például az alábbi sorokat vehetjük fel: [PRINTER$] path = /usr/local/samba/print read only = yes browsable = no guest ok = yes A szkript által kért fájlok tipikusan a C:WINDOWSSYSTEM könyvtárban vannak, bár az alábbi parancsokkal is kereshetjük ezeket: cd C:WINDOWS dir fájlnév /s Esetünkben a fájlokat a Samba kiszolgáló /usr/local/samba/print könyvtárába kell átmásolnunk. Ezen túlmenően még a korábban elkészített printersdef fájlt is másoljuk át ebbe a megosztásba. Még néhány lépés, és máris készen vagyunk A Samba konfigurációs fájljának módosítása Utolsó feladatként az alábbi három beállítás felvételével módosítsuk a Samba konfigurációs fájlját: • printer driver • printer driver file • printer driver location A printer driver file a printers.def fájlra hivatkozó globális hatókörű beállítás, ezért a [global]
szakaszba vegyük fel. A másik két beállítást abba a nyomtatómegosztásba kell felvennünk, amelyet az illesztőprogramok automatikus konfigurálásához akarunk használni. A printer driver beállításhoz azt a karakterláncot (nyomtatónevet) kell rendelnünk, amely a Windows Nyomtató varázslójában olvasható A printer driver location beállítás értékeként a PRINTER$ megosztásban megadott elérési utat kell megadnunk, és nem a kiszolgálón lévő unixos elérési utat. Ezeket a következőképpen tehetjük meg: [global] printer driver file = /usr/local/samba/print/printers.def [hpdeskjet] path = /var/spool/samba/printers printable = yes printer driver = HP DeskJet 560C Printer printer driver location = \%LPRINTER$ 7. FEJEZET NYOMTATÁS ÉS NÉVFELOLDÁS | 225 Most már készen állunk a tesztelésre. A Sajátgép Nyomtatók ablakában töröljük az első lépésben ,,telepített” nyomtatót. Ha a Samba megkérdezi, hogy törölje-e a fölösleges
fájlokat, akkor engedélyezzük ezt A fájlok rövidesen újra rákerülnek az ügyfélgépre A konfiguráció tesztelése Indítsuk újra a Samba démonjait, és a Network Neighborhood ablakban a számítógép neve alatt keressük meg a [hpdeskjet] megosztást. Kattintsunk kettőt a nyomtató ikonjára, hogy elinduljon a 76 ábrán látható telepítési művelet 7.6 ábra A nyomtató-illesztőprogram automatikus konfigurálása Ez most nem ugyanaz a művelet, mint amit korábban a nyomtató telepítésekor láttunk. A párbeszédablak lényegében azt kérdezi, hogy elfogadjuk-e a ,,már telepített” illesztőprogramot, vagyis azt, amit a Samba felkínál. Tartsuk meg a meglévő illesztőprogramot, és kattintsunk a Next (Tovább) gombra Most átnevezhetjük a nyomtatót, és tesztoldalt is nyomtathatunk Ha minden rendben megy, elvégeztük a nyomtató telepítését Ugyanez a művelet az összes többi Windows ügyfélnél is elvégezhető. Nyomtatás Windows ügyfél
nyomtatóján A Sambából azok a nyomtatók is elérhetők, amelyek Windows 95/98 vagy NT 4.0 rendszert használó ügyfelekhez csatlakoznak A Sambában van egy smbprint nevű eszköz, amelynek segítségével Windows alapú nyomtatókon is sorba állíthatók a nyomtatási feladatok. Ahhoz azonban, hogy ezt megtehessük, a nyomtatót megosztott erőforrásként kell beállítanunk az ügyfél gépén. Ehhez nyissuk meg a Windows Start menüjét, majd válasszuk a Beállítások és a Nyomtatók parancsot. A képernyőn megnyílik a 77 ábrán látható párbeszédablak. 226 | SAMBA 7.7 ábra A Nyomtatók párbeszédablak Jelöljünk ki egy helyileg csatlakoztatott nyomtatót (ez a példánkban a Canon nyomtató), az egér jobb oldali gombjával kattintsunk az ikonjára, és a megnyíló helyi menüben válasszuk a Share (Megosztás) parancsot. Ekkor megnyílik a nyomtató tulajdonságain belül a 7.8 ábrán látható Sharing (Megosztás) párbeszédlap Ha azt szeretnénk,
hogy a Windows vendégfelhasználója szerint a hálózatban bárki hozzáférhessen ehhez a nyomtatóhoz, akkor hagyjuk üresen a jelszó mezőjét. 7.8 ábra A nyomtató Megosztás párbeszédablaka 7. FEJEZET NYOMTATÁS ÉS NÉVFELOLDÁS | 227 Miután ezzel végeztünk, felvehetjük a nyomtatót a standard nyomtatók listájába, hogy a Samba a munkacsoport összes többi PC-je számára is elérhetővé tegye. A Unix gépen történő telepítést megkönnyítik a Samba smbprint és smbprintsysv nevű szkriptjei Az első BSD stílusú nyomtatókhoz, míg a második System V nyomtatókhoz használható. BSD nyomtatók Két lépést kell elvégeznünk ahhoz, hogy egy BSD Unix felismerjen egy távoli nyomtatót: 1. Vegyünk fel az /etc/printcap fájlba egy bejegyzést a nyomtatóhoz 2. Vegyünk fel a /var/spool könyvtárba egy konfigurációs fájlt a nyomtatóhoz Első lépésként szerkesszük az /etc/printcap fájlt, és helyezzünk el benne egy bejegyzést a távoli
nyomtatóhoz. Figyeljük meg, hogy a bemeneti szűrőnek (if) az smbprint programra kell mutatnia, ha a nyomtató Windows 95/98 rendszerhez kapcsolódik Ezeket a műveleteket az alábbi sorok végzik el egy Linux gépen: laserjet: :sd=/var/spool/lpd/laser: :mx#0: :sh: :if=/usr/local/samba/bin/smbprint: # # # # spool directory maximum file size (none) surpress burst header (no) text filter Ezt követően létre kell hoznunk egy konfigurációs fájlt abban a várakozási sort tartalmazó könyvtárban, amelyet az előbb az sd beállításban adtunk meg (lehetséges, hogy el kell készítenünk ezt a könyvtárt). A fájlnak a config nevet kell adnunk, és a következő információkat kell tartalmaznia: • A nyomtatóval összekapcsolt Windows gép NetBIOS neve. • A nyomtatót jelentő szolgáltatás neve. • A szolgáltatás eléréséhez szükséges jelszó. A két utolsó adatot a Windows gépen a Megosztás párbeszédlapon adtuk meg. Esetünkben a config fájl az alábbi
három sort tartalmazza: server = phoenix service = CANON password = "" Miután ezzel is végeztünk, indítsuk újra a Samba kiszolgálót, és bármely normál unixos programból nyomtassunk ki valamit. System V nyomtatók System V Unixos rendszerből valamivel egyszerűbben küldhetünk nyomtatási feladatokat. Ehhez meg kell nyitunk a /usr/local/samba/examples/printing könyvtárban található smbprint.sysv szkriptet, és a következő módosításokat kell elvégeznünk benne: 1. Úgy módosítsuk a szkriptben a server, a service és a password beállításokat, hogy rendre a számítógép NetBIOS nevét, a megosztott nyomtatószolgáltatását és ennek a 228 | SAMBA jelszavát tartalmazzák. Az előbbi példánk adataival például így kell módosítani a beállításokat: server = phoenix service = CANON password = "" 2. Futassuk az alábbi parancsokat, amelyek az illető nyomtatóra mutató hivatkozást hoznak létre a nyomtató konfigurációs
fájljában # lpadmin -p canon printer -v /dev/null -i./smbprintsysv # enable canon printer # accept canon printer Miután ezzel elkészültünk, indítsuk újra a Samba démonjait, és bármely normál unixos programból nyomtassunk ki valamit. A hálózaton keresztül most már adatokat küldhetünk egy Windows ügyfél nyomtatójára A Samba nyomtatási beállításai A Samba nyomtatási beállításait a 7.2 táblázat foglalja össze 7.2 táblázat A nyomtatás beállítási lehetőségei Beállítás printing Paraméterek bsd, sysv, hpux, aix, qnx, plp, softq, vagy lprng printable Boolean érték (print ok) printer Karakterlánc (printer (a nyomtató name) unixos neve) printer Karakterlánc driver (a nyomtató illesztőprogramjának neve) printer Karakterlánc driver (teljes file elérési út) printer Karakterlánc driver (hálózati location elérési út) Funkció Alapértelmezett érték Hatókör A nyomtatási rendszer típusát adja meg Unix rendszerhez.
Rendszerfüggő Megosztás Nyomtatásmegosztásként jelöl meg egy megosztást. no Megosztás Megadja az ügyfelek számára megjelenítendő nyomtató nevét. Megadja annak az illesztőprogramnak a nevét, amelyet az ügyfélnek az adatok nyomtatóra küldéséhez használnia kell. Megadja a nyomtatódefiníciós fájl helyét. Rendszerfüggő Megosztás Nincs Megosztás Nincs Globális Megadja az illesztőprogramot tartalmazó megosztás elérési útját. Nincs Megosztás 7. FEJEZET NYOMTATÁS ÉS NÉVFELOLDÁS | 229 7.2 táblázat folytatása Beállítás Paraméterek lpq cache Numerikus time (másodpercekben mért idő) post Boolean érték script load printers Boolean érték print command Karakterlánc (shell parancs) lpq command Karakterlánc (shell parancs) lprm command Karakterlánc (shell parancs) lppause command Karakterlánc (shell parancs) lpresume command Karakterlánc (shell parancs) printcap name (printcap) min print space
Karakterlánc (teljes elérési út) queuepause command queueresume command Funkció Alapértelmezett érték Hatókör Megadja másodpercekben azt az időt, ameddig a Samba megjegyzi magának az lpq állapotát. Az összes átküldött nyomtatási feladatot PostScript feladatnak tekinti azzal, hogy a %! karaktereket illeszti a fájlok elejére. A printcap fájlban felsorolt összes nyomtatót nyomtatómegosztásként tölti be. Megadja azt a Unix parancsot, amely elvégzi a nyomtatást. Megadja azt a Unix parancsot, amely visszaküldi a nyomtatási sor állapotát. Megadja azt a Unix parancsot, amely töröl egy feladatot a nyomtatási sorból. Megadja azt a Unix parancsot, amely szüneteltet egy nyomtatási sorban álló feladatot. Megadja azt a Unix parancsot, amely megszünteti a nyomtatási sorban álló feladat szüneteltetését. Megadja a nyomtatókonfigurációt tartalmazó fájl helyét és nevét. 10 Global no Megosztás no Globális Lásd lejjebb Megosztás
Lásd lejjebb Megosztás Lásd lejjebb Megosztás Lásd lejjebb Megosztás Lásd lejjebb Megosztás Rendszerfüggő Globális 0 Megosztás Lásd lejjebb Megosztás Lásd lejjebb Megosztás Megadja annak minimális Numerikus lemezterületnek a méretét, (méret kilobájtokban) amelynek szabadnak kell lennie a nyomtatás elvégzéséhez. Karakterlánc Megadja azt a Unix paran(shell parancs) csot, amely szüneteltet egy nyomtatási sort. Karakterlánc Megadja azt a Unix paran(shell parancs) csot, amely megszünteti egy nyomtatási sor szüneteltetését. 230 | SAMBA printing A printing beállítás a Unix nyomtatórendszeréről tájékoztatja a Sambát, jelen esetben arról, hogy nyomtatási elemzőprogramot kell használnia. A Unixban számos különböző paranccsal vezérelhető a nyomtatás. Közülük a Samba a 73 táblázatban felsorolt nyomtatási típusokat támogatja 7.3 táblázat Nyomtatási típusok Változó Meghatározás BSD SYSV AIX HPUX QNX
LPRNG SOFTQ PLP Berkeley Unix rendszer System V AIX operációs rendszer (IBM) Hewlett-Packard Unix QNX Realtime Operating System (QNX) LPR Next Generation (Powell) SOFTQ rendszer Portable Line Printer (Powell) A beállításhoz a fenti nyolc változó valamelyikét kell rendelni, mint például: printing = SYSV A beállításhoz tartozó alapértelmezés szerinti érték rendszerfüggő, és a Samba első lefordításakor kell megadni. A konfigurációs szkript a legtöbb rendszerben automatikusan észleli a rendszer által használt nyomtatórendszert, és ennek megfelelően konfigurálja a Samba make-fájlját. Ha viszont a rendszerünk PLP, LPRNG vagy QNX nyomtatórendszert használ, akkor ezt külön meg kell adnunk a make-fájlban vagy a nyomtatómegosztásban. A leggyakoribb nyomtatórendszerek a BSD és a SYSV. Egy BSD Unix kiszolgálón a nyomtatókat a nyomtatókonfigurációt tartalmazó fájl írja le, ami alapesetben az /etc/printcap fájl. A printing beállítás
megadásakor automatikusan értéket kap legalább három másik nyomtatási beállítás is: a print command, az lpq command és az lprm. Ha olyan rendszeren fut a Samba, amely a felsorolt nyomtatási stílusok egyikét sem támogatja, akkor ezekhez a beállításokhoz kézzel kell értéket rendelnünk. printable A printable beállításhoz a yes értéket kell rendelni, hogy jelezzük, a megosztás nyomtatóhoz tartozik. Ha nem így tennénk, akkor a Samba lemezmegosztásnak tekintené a megosztást A beállítást így használhatjuk: [printer1] printable = yes 7. FEJEZET NYOMTATÁS ÉS NÉVFELOLDÁS | 231 printer Ez a beállítás, amit néha printer name alakban is használnak, azt a kiszolgálóhoz csatlakozó nyomtatót adja meg, amelyikre a megosztás mutat. A beállításhoz alapértelmezés szerint nem tartozik érték, ezért külön meg kell adnunk a konfigurációs fájlban, annak ellenére, hogy a Unix rendszerek gyakran maguk is felismernek alapbeállítás
szerinti neveket, mint amilyen például egy nyomtató lp neve. Például: [deskjet] printer = hpdkjet1 printer driver A printer driver beállítás azt a karakterláncot tartalmazza, amelyikkel a Samba azonosítja a nyomtatót a Windows ügyfél felé. Ha a megfelelő karakterláncot rendeljük ehhez a beállításhoz, akkor a Windows Nyomtató varázslója már tudni fogja, hogy melyik nyomtatóról van szó. Ezzel a felhasználó számára megkönnyíti a telepítését, mert eggyel kevesebb párbeszédablakon kell áthaladnia A karakterláncnak pontosan meg kell egyeznie azzal a karakterlánccal, amit a Nyomtató varázsló az ablakában megjelenít (lásd a 7.9 ábrát) Így például az Apple LaserWriter nyomtatóhoz az Apple LaserWriter; a Hewlett Packard Deskjet 560C nyomtatóhoz pedig a HP DeskJet 560C Printer karakterlánc tartozik. 7.9 ábra A Nyomtató hozzáadása varázsló párbeszédablaka Windows 98 rendszerben A fejezet korábbi, ,,Nyomtató-illesztőprogramok
automatikus telepítése” című részében olvashattunk részletesebben az illesztőprogramok automatikus telepítéséről. 232 | SAMBA printer driver file Ez a globális hatókörű beállítás a Windows 95/98 nyomtató-illesztőprogramjait tároló definíciós fájl helyét adja meg. Erre a Samba nyomtatóját használó ügyfeleknek van szükségük A beállításhoz alapértelmezés szerint a /usr/local/samba/lib/printersdef fájl tartozik Ezt az alábbi módon felülbírálhatjuk: [deskjet] printer driver file = /var/printers/printers.def Erről a beállításról részletesebben a fejezet korábbi, ,,Nyomtató-illesztőprogramok automatikus telepítése” című részében olvashattunk. printer driver location Ez a beállítás a Windows 95 és 98 nyomtató-illesztőprogramjait és definíciós fájljait tartalmazó megosztást adja meg. A beállításhoz alapértelmezés szerint nem tartozik semmilyen érték. A fájlok helyének megadásához hálózati elérési
utat kell specifikálni Általános gyakorlat, hogy egy saját gépen lévő megosztást adnak meg az alábbiak szerint: [deskjet] printer driver location = \%LPRINTER$ Erről a beállításról részletesebben a fejezet korábbi, ,,Nyomtató-illesztőprogramok automatikus telepítése” című részében olvashattunk. lpq cache time A globális hatókörű lpq cache time beállítással azt a másodpercekben mért időtartamot adhatjuk meg, amennyi ideig a Samba emlékezik a nyomtató aktuális állapotára. A megadott időtartam eltelte után a Samba egy lpq parancsot ad ki (vagy azt a parancsot, amit az lpq command beállításhoz rendeltünk), hogy bekérje a friss állapotot. Az időtartam alapértelmezés szerinti hossza 10 másodperc, de ez megnövelhető, ha az lpq parancs végrehajtásához túlságosan hosszú időre lenne szükség, vagy ha sok ügyféllel van dolgunk Az alábbi példában 30 másodpercet rendeltünk ehhez a beállításhoz: [deskjet] lpq cache time = 30
postscript A postscript beállítás segítségével arra utasíthatjuk a nyomtatót, hogy a rá küldött adatokat PostScript adatoknak tekintse. Ezt azzal éri el, hogy az egyes nyomtatási feladatok első sora elé beszúr egy %! karakterpárt. Ezt általában PC-s dokumentumoknál kell használni, amelyek egy ^D (control-D vagy EOF) karaktert helyeznek el egy PostScript fájl első sora elé Ettől egy nem PostScript nyomtatóból természetesen még nem lesz PostScript nyomtató. A beállításhoz alapértelmezés szerint a no érték tartozik, amit azonban felülbírálhatunk: [deskjet] postscript = yes 7. FEJEZET NYOMTATÁS ÉS NÉVFELOLDÁS | 233 print command, lpq command, lprm command, lppause command, lpresume command Ezekben a beállításokban azt közölhetjük a Sambával, hogy milyen Unix parancsokat használjon a nyomtatandó adatok vezérléséhez és nyomtatóra küldéséhez. A vonatkozó Unix parancsok: lpr (send to Liner PRinter = küldés a
sornyomtatóra), lpq (list Printer Queue = nyomtatási sor listázása), lprm (Line printer ReMove = törlés a sornyomtatóról), valamint a nem kötelező lppause (nyomtatás szüneteltetése) és az lpresume (nyomtatás újbóli felvétele). A Samba lehetővé teszi, hogy felülbíráljuk a rendszer alapértelmezett értékeit, például a következő módon: lpq command = /usr/ucb/lpq %p A fenti bejegyzés megadásával az lpq command beállítás a /usr/ucb/lpq parancsot fogja használni. Ehhez hasonlóan az lprm command = /usr/local/lprm -P%p %j bejegyzést felvéve a Samba a /usr/local/lprm parancsot fogja használni a nyomtatási feladat törléséhez. A nyomtatási feladat számát a %j változó tárolja A fenti beállításokhoz tartozó alapértelmezés szerinti parancsok a printing option beállításban megadott értéktől függnek. A 74 táblázat a printing option különböző beállításaihoz tartozó alapértelmezett parancsokat foglalja össze Legszélesebb
körben a BSD nyomtatórendszert használják. 7.4 táblázat Különböző nyomtatórendszerekhez tartozó alapértelmezett parancsok Beállítás BSD, AIX, PLP, LPRNG SYSV, HPUX QNX SOFTQ print command lpr -r -P%p %s lpq -P%p lprm -P%p %j lp -i %p-%j -H hold (csak SYSV) lp -i %p-%j -H resume (csak SYSV) lp -c -d%p %s; rm %s lpstat -o%p cancel %p-%j Nincs lp -r -P%p %s lpq -P%p cancel %p-%j Nincs lp -d%p -s %s; rm %s lpstat -o%p cancel %p-%j Nincs Nincs Nincs qstat -s -j%j -r lpq command lprm command lppause command lpresume command A Sambában általában nem kell átállítani ezeket a beállításokat, kivéve esetleg a print command beállítást. Ezt a beállítást kifejezetten meg kell adni, ha a nyomtatórendszer a nyomtatási parancsban nem fogadja el az -r (törlés nyomtatás után) parancsot. Például: /usr/local/lpr -P%p %s; /bin/rm %s 234 | SAMBA Némi programozási ismeret birtokában az smb.conf fájl e beállításait hibakereséshez is
használhatjuk: print command = cat %s >/tmp/printlog; lpr -r -P%p %s Ezzel a beállítással például megvizsgálhatjuk, hogy a fájlok egyáltalán átkerültek-e a Samba kiszolgálóra. Amennyiben igen, akkor a tartalmuk megtekinthető a /tmp/printlog fájlban A BSD után a második legelterjedtebb nyomtatási rendszer a SYSV (vagy System V), valamint ezek változatai az IBM AIX és a Hewlett-Packard HP-UX rendszeréhez. Ezekben a rendszerekben nincs /etc/printcap fájl. Itt a printcap file beállításhoz hozzárendelhetünk egy alkalmas lpstat parancsot, és a Samba ebből a parancsból olvassa el a nyomtatók listáját Ehelyett azt is megtehetjük, hogy a globális hatókörű printcap name beállításhoz egy ,,hamis” printcap fájlt rendelünk Utóbbi esetben azonban ennek a fájlnak az alábbiakhoz hasonló sorokat kell tartalmaznia: lp|print1|My Printer 1 print2|My Printer 2 print3|My Printer 3 Mindegyik sor megnevez egy nyomtatót, és álneveket is megad hozzá. Az
első nyomtatónak lp a neve, az álnevei pedig print1 és My Printer 1 A felhasználó tetszése szerint választhat közülük. A Samba az ezzel a nyomtatóval kapcsolatos parancsokban a %p változó helyén mindig az első nevet fogja használni A Samba még a következő két nyomtatási típust is támogatja: LPRNG (LPR New Generation) és PLP (Public Line Printer) Ezek nyilvános és nyitott kódú nyomtatórendszerek, és sok helyen arra használják, hogy kijavítsák a kereskedelemben kapható szoftverek hibáit. Ezek mellett a Samba még az SOFTQ és a QNX valós idejű operációs rendszereket is támogatja. load printers A load printers beállítással azt írhatjuk elő, hogy a Samba az összes ismert nyomtatónévhez hozzon létre megosztásokat, és töltse be ezeket a tallózólistába. A Samba az /etc/printcap (vagy amit a rendszer használ) fájlban felsorolt nyomtatónevekhez hozza létre a megosztásokat. Ha a printcap fájl például az alábbiakat tartalmazza:*
lp: :sd=/var/spool/lpd/lp: :mx#0: :sh: :lp=/dev/lp1: :if=/var/spool/lpd/lp/filter: # # # # # * A megjegyzéseket a könnyebb érthetőség céljából írtuk be. várakozási sor könyvtára maximális fájlméret (nulla) burst header elnyomása (nem) kiviteli eszköz neve szöveg szűrője 7. FEJEZET NYOMTATÁS ÉS NÉVFELOLDÁS laser: :sd=/var/spool/lpd/laser: :mx#0: :sh: :lp=/dev/laser: :if=/var/spool/lpd/lp/filter: # # # # # | 235 várakozási sor könyvtára maximális fájlméret (nulla) burst header elnyomása (nem) kiviteli eszköz neve szöveg szűrője és előírtuk, hogy load printers = yes akkor automatikusan létrejön és érvényes lesz az [lp] és a [laser] megosztás, amikor elindítjuk a Sambát. Mindkét megosztás a [printers] szakaszban megadott beállításoknak megfelelően konfigurálja magát, és megjelenik a Samba kiszolgáló tallózólistájában printcap name Ha tartalmazza egy nyomtatómegosztás a printcap name beállítást (amit
esetenként printcap alakban is írnak), akkor a Samba az ebben a beállításban megadott fájlt használja a nyomtatóbeállítások fájljaként. Ez a fájl általában az /etc/printcap fájl, de másik fájlt is megadhatunk, ami például csak azokat a nyomtatókat tartalmazza, amelyekre engedélyezzük a hálózaton keresztüli hozzáférést. A fájlt a teljes elérési útjával kell megadni: [deskjet] printcap name = /usr/local/printcap min print space Ezzel a beállítással a nyomtatáshoz szükséges minimális lemezterület méretét adhatjuk meg. A 0 érték hozzárendelésével kikapcsoljuk a lemezterület vizsgálatát, ha pedig valamilyen más számot adunk meg, akkor a rendszer ennek megfelelő lemezterületet foglal le (kilobájtokban). A beállítás felvételével megakadályozhatjuk, hogy nyomtatási feladatok tömege foglalja le a merevlemez még üres területét, mert ez akadályozná más folyamatok futását. [deskjet] min print space = 4000 queuepause
command Ebben a beállításban azt a parancsot írhatjuk elő, amelyet a Sambának a teljes várakozási sor szüneteltetéséhez kell kiadnia. Az alapértelmezett érték a választott nyomtatási típustól függ Általában nincs szükség a módosítására queueresume command Ebben a beállításban azt a parancsot írhatjuk elő, amelyet a Sambának a teljes várakozási sor szüneteltetésének megszüntetéséhez kell kiadnia. Az alapértelmezett érték a választott nyomtatási típustól függ. Általában nincs szükség a módosítására 236 | SAMBA Névfeloldás a Sambában Mielőtt megszületett a NetBIOS névkiszolgáló (NBNS), a névfeloldás teljes mértékben üzenetszórásos (broadcast) eljárással történt. Ha szükségünk volt egy gép nevére, akkor egyszerűen ,,szétkürtöltük” a nevét a hálózatban, és – elméletileg – válaszolt a gép. Ez az eljárás ma is használható, és ha bárki keresne például egy fred nevű gépet,
továbbra is küldhet ilyen üzenetet, és megtudhatja, létezik-e ilyen nevű gép, és mi az IP címe. (Az eljárást a 9. fejezetben, a Samba névszolgáltatásának nmblookup paranccsal elvégezhető hibakereséséhez fogjuk használni.) Amint az első fejezetben láttuk, az ilyen üzenetszórás – legyen szó akár tallózásról, akár névregisztrálásról és feloldásról – nem túlságosan egyszerű, ha több alhálózatból áll a hálózat. Emellett a túl sok üzenetszórás nagyon le is terheli a hálózatokat A probléma megoldásához a Microsoft kifejlesztette a WINS (Windows Internet Naming Service) protokollt, ami alhálózatok között végzi el a névfeloldást, és amit a Samba is támogat. Ezt a protokollt használva a rendszergazda kijelölhet egy számítógépet, ami WINS kiszolgálóként működik, és a névfeloldást kérő ügyfelek számára megadhatja ennek a WINS kiszolgálónak a nevét. Ebből következik, hogy a névregisztrálási és
névfeloldási kérelmek a hálózat bármely pontjáról egyetlen gépre irányíthatók, és nincs szükség a szétküldésükre. A névfeloldáshoz a WINS és a szétszórásos eljárás mellett még más eljárások is léteznek. A Samba jelenleg az alábbi négy eljárást ismeri: • WINS; • üzenetszórás (broadcasting); • Unix /etc/hosts vagy NIS/NIS+ az ezekhez illeszkedők; • LMHOSTS fájl. A Samba a name resolve order beállításban megadott sorrend szerint választja ki a szükséges eljárást. Mielőtt azonban rátérnénk az egyes beállítások jelentésére, nézzük meg, mit is takar az eddigiekben még nem ismeretetett LMHOSTS fájl. A LMHOSTS fájl Az LMHOSTS fájl a LAN Manager hostfájlja, amit IP címekre történő névfeloldáshoz használ, csakúgy, mint a Unix rendszerek /etc/hosts fájlja. Alapértelmezés szerint a Samba ezt a /usr/local/samba/lib/LMHOSTS helyen és néven tárolja. A fájl felépítése hasonlít az /etc/hosts fájl
felépítéséhez. Például: 192.168220100 192.168220101 hydra phoenix Az egyetlen különbség az, hogy a bejegyzések jobb oldalán álló nevek NetBIOS, és nem DNS nevek. Miután ezek NetBIOS nevek, erőforrástípust is megadhatunk hozzájuk: 192.168220100 192.168220100 192.168220101 hydra#20 simple#1b phoenix#20 7. FEJEZET NYOMTATÁS ÉS NÉVFELOLDÁS | 237 A fenti példában azzal, hogy a második sorban a hydra IP címe után beírtuk az <1B> erőforrástípust, a hydra gépet jelöltük ki a SIMPLE tartomány elsődleges tartományvezérlőjévé. A másik gép normál munkaállomás Ha nem az alapértelmezés szerinti helyére akarjuk tenni az LMHOSTS fájlt, akkor erről az nmbd démont az indításakor az alábbi módon értesítenünk kell: nmbd -H /etc/samba/lmhosts -D A Samba beállítása másik WINS kiszolgáló használatához A Sambának egyszerűen megmondhatjuk, hogy a hálózat valamelyik másik WINS kiszolgálóját használja. Ehhez mindössze
annyit kell tennünk, hogy a wins server beállításhoz hozzárendeljük a WINS kiszolgáló IP címét az alábbi módon: [global] wins server = 192.168200122 Ekkor a Samba az összes WINS kérést a 192.168200122 című kiszolgálóra irányítja át Mivel a kérelmeket egyetlen gépre irányítottuk át, nem kell aggódnunk a broadcast típusú üzenetekkel kapcsolatos problémák miatt. Ugyanakkor viszont, bár a konfigurációs fájlban megadtuk egy WINS kiszolgáló IP címét, nem biztos, hogy a Samba ezt az eljárást fogja használni a névfeloldáshoz. Azt, hogy a Samba a lehetséges eljárások közül milyen sorrendiséget válasszon, a name resolve order beállításban megadott sorrend dönti el. A beállításra rövidesen visszatérünk. Ha az egyik alhálózatban olyan Samba kiszolgálónk van, amelyik továbbra is az üzenetszórást használja a névfeloldáshoz, és a kiszolgáló ismeri egy másik alhálózatban levő WINS kiszolgáló helyét, akkor a wins proxy
beállítás felvételével úgy konfigurálhatjuk a Samba kiszolgálót, hogy arra irányítsa át a névfeloldási kéréseket: [global] wins server = 192.16820012 wins proxy = yes Ezt a megoldást azonban csak akkor válasszuk, ha a WINS kiszolgáló másik alhálózatban van. Ellenkező esetben az üzenetszórás amúgy is elérné a WINS kiszolgálót A Samba konfigurálása WINS kiszolgálóként Ahhoz, hogy a Samba WINS kiszolgálóként működhessen, az alábbi két, globális hatókörű beállítást kell felvennünk a konfigurációs fájlba: [global] wins support = yes name resolve order = wins lmhosts hosts bcast 238 | SAMBA Ha felvesszük a konfigurációs fájlba a wins support beállítást, a Samba kiszolgálóból máris WINS kiszolgáló lesz. Akár hisszük, akár nem, mindössze ennyi a teendő! A Samba az összes többi részletmunkát a háttérben végzi, és nem terheli még ezzel is a rendszergazdákat. A wins support = yes és a wins server
beállítások egymást kölcsönösen kizárják, vagyis egyidejűleg nem tehetjük meg, hogy egyrészt WINS kiszolgálóvá léptetjük elő a Sambát, másrészt egy másik kiszolgáló nevét is megadjuk. Ha a Samba WINS kiszolgálóként működik, akkor tisztában kell lennünk az előbb említett name resolve order beállítás jelentésével. Ebben a beállításban azt adhatjuk meg, hogy milyen sorrendben próbálkozzon a Samba a különböző névfeloldási eljárásokkal. A beállítás négy különböző értéket vehet fel: lmhosts A LAN Manager LMHOSTS fájlját használó eljárás. hosts A Unix rendszer standard névfeloldási eljárásait használja: /etc/hosts, DNS, NIS vagy ezek kombinációja (a rendszer konfigurálásától függően). wins WINS kiszolgálót használ. bcast Az üzenetszórásos (broadcast) eljárást használja. A Samba WINS kiszolgálóként a megadott sorrendben próbálkozik a különböző eljárásokkal. Lássuk például az előbbiekben
megadott sorrendet: name resolve order = wins lmhosts hosts bcast Ebben az esetben a Samba először a WINS bejegyzéseit használja a névfeloldáshoz, majd a LAN Manager LMHOSTS fájlját. A sorban következő hosts érték arra utasítja, hogy a Unix névfeloldó eljárásait használja. A hosts szó esetleg félrevezető lehet: nem csak az /etc/hosts fájlt jelenti, hanem a DNS vagy a NIS használatát is (ahogyan a Unix gazdagép konfigurálva van). Utoljára, ha a három eljárás egyike sem vezetne eredményre, a broadcast eljárást használja a megfelelő gép megtalálásához Végül a WINS kiszolgálóként működő Samba kiszolgálót arra is utasíthatjuk, hogy a rendszer DNS kiszolgálójának segítségét kérje, ha egy keresett gazdagép nem található a WINS adatbázisában. Egy tipikus Linux rendszerben például az /etc/resolvconf fájlban találhatjuk meg a DNS kiszolgáló IP címét. A fájlban például az alábbi bejegyzések lehetnek: nameserver 127.001
nameserver 192.168200192 Ezek a sorok arról adnak tájékoztatást, hogy a DNS kiszolgálónak 192.168200192 az IP címe. (A 127001 a localhost cím, ami sohasem lehet DNS kiszolgáló címe) 7. FEJEZET NYOMTATÁS ÉS NÉVFELOLDÁS | 239 A dns proxy beállítás segítségével értesíthetjük arról a Sambát, hogy a konfigurált DNS kiszolgálóhoz forduljon névfeloldási kérésekkel. [global] wins support = yes name resolve order = wins lmhosts hosts bcast dns proxy = yes A névfeloldás beállítási lehetőségei A Samba WINS kiszolgálóval kapcsolatos beállításait a 7.5 táblázat sorolja fel 7.5 táblázat Beállítás Paraméterek Funkció Alapértelmezett érték Hatókör wins support Boolean érték no Globális wins server Karakterlánc (IP cím vagy DNS név) Nincs Globális wins proxy Boolean érték no Globális dns proxy Boolean érték no Globális name resolve order max ttl lmhosts, hosts, wins vagy bcast Numerikus lmhosts hosts
wins bcast Globális 259200 (3 nap) Globális max wins ttl Numerikus 518400 (6 nap) Globális min wins ttl Numerikus Ha yes az értéke, a Samba WINS kiszolgálóként működik. Azonosítja azt a WINS kiszolgálót, amelyet a Samba névregisztráláshoz és névfeloldáshoz használ. Lehetővé teszi, hogy a Samba másik alhálózat WINS kiszolgálójának helyettesítőjeként (proxy) működjön. Ha yes az értéke, a Samba WINS kiszolgáló a DNS kiszolgálóhoz fordul, ha nem talál egy nevet a WINS-ben. Megadja a NetBIOS nevek feloldásához használandó eljárások sorrendjét. Megadja a kért NetBIOS nevek élettartamát (time-tolive) másodpercekben. A Samba mint WINS kiszolgáló által kiadott NetBIOS nevek maximális élettartamát adja meg másodpercekben. A Samba mint WINS kiszolgáló által kiadott NetBIOS nevek minimális élettartamát adja meg másodpercekben. 21600 (6 óra) Globális 240 | SAMBA wins support A Samba a hálózathoz csatlakozó
összes gép számára elvégzi a WINS névfeloldást, ha az smb.conf fájl [global] szakaszába felvesszük az alábbi beállítást: [global] wins support = yes A beállításhoz alapértelmezés szerint a no érték tartozik, lehetővé téve, hogy egy Windows NT gép legyen a WINS kiszolgáló. Mielőtt átírnánk ezt az értéket, ne feledkezzünk meg arról, hogy a Samba WINS kiszolgálóként nem tud adatokat cserélni tartalék WINS kiszolgálókkal. Ez a beállítás és a wins server beállítás kölcsönösen kizárják egymást; ha mindkettőt engedélyeznénk, a Samba hibaüzenetet küldene wins server Ha a konfigurációs fájlba felvesszük ezt a beállítást, akkor a Samba a hálózatban egy létező WINS kiszolgálótól fogja kérni a névfeloldást. A beállításhoz vagy egy IP cím, vagy a WINS kiszolgáló DNS neve (és nem a NetBIOS neve) tartozhat. Például: [global] wins server = 192.168220110 vagy [global] wins server = wins.examplecom Ahhoz, hogy ezt a
beállítást használhassuk, a wins support beállításhoz a no értéket kell rendelnünk (ez az alapértelmezett). Ellenkező esetben a Samba hibát jelez A beállításban csak egyetlen WINS kiszolgáló adható meg. wins proxy Ez a beállítás lehetővé teszi, hogy a Samba másik WINS kiszolgálót helyettesítsen, és a hozzá érkező névfeloldási kéréseket a tényleges WINS kiszolgálóra irányítsa át, amely gyakran egy másik alhálózatban található. A WINS kiszolgáló a wins server beállításban adható meg. A WINS kiszolgáló válaszait a helyettesítő kiszolgáló küldi vissza a kérő félnek Ha engedélyezni szeretnénk ezt a lehetőséget, akkor a [global] szakaszba vegyük fel a az alábbi sort: [global] wins proxy = yes dns proxy Ha igénybe szeretnénk venni a DNS (tartománynév-kiszolgáló) szolgáltatását abban az esetben, ha egy nevet nem sikerült megtalálni a WINS-ben, akkor vegyük fel az alábbi beállítást: [global] dns proxy = yes
7. FEJEZET NYOMTATÁS ÉS NÉVFELOLDÁS | 241 Ezzel azt írjuk elő, hogy az nmdb a kiszolgáló standard tartománynév-szolgáltatójától kérje a gépek nevének keresését. Ha nem vagyunk állandó kapcsolatban egy DNS kiszolgálóval, akkor ne éljünk ezzel a lehetőséggel Ettől eltekintve azonban ajánlható, hogy használjunk WINS kiszolgálót Ha még egyetlen WINS kiszolgáló sem működik a hálózatban, akkor az egyik Samba gépet jelöljük ehhez. Két Samba gépet azonban ne tegyünk WINS kiszolgálóvá (egyet elsődlegessé és egyet tartalékká), mert ezek jelenleg nem képesek a WINS adatbázisok kicserélésére. name resolve order A globális hatókörű name resolve order beálltásban azt írhatjuk elő, hogy a Samba milyen sorrendben próbálkozzon különböző névfeloldási eljárásokkal. Az alapértelmezés szerinti sorrend: LMHOSTS fájl, standard Unix eljárások (/etc/hosts, DNS és NIS vagy ezek kombinációja), WINS kiszolgáló és
üzenetszórás (broadcast). Ezt az alapértelmezés szerinti sorrendet azonban például az alábbiak szerint átírhatjuk: [global] name resolve order = lmhosts wins hosts bcast Ekkor a Samba az itt megadott sorrend szerint próbálkozik a különböző eljárásokkal. Nincs szükség mind a négy eljárás megadására. A beállításról részletesebben a fejezet korábbi, ,,A Samba konfigurálása WINS kiszolgálóként” című fejezetében volt szó. max ttl Ezzel a beállítással azt a maximális élettartamot (time-to-live) írhatjuk elő, ameddig egy Samba kiszolgálón regisztrált NetBIOS névnek aktívnak kell maradnia. A beállítás alapértelmezett értékét sohasem kell megváltoztatnunk max wins ttl Ezzel a beállítással azt a maximális élettartamot (time-to-live) írhatjuk elő, ameddig egy WINS kiszolgálón feloldott NetBIOS névnek aktívnak kell maradnia. A beállítás alapértelmezett értékét sohasem kell megváltoztatnunk min wins ttl Ez a
beállítás azt a minimális élettartamot adja meg, ameddig egy WINS kiszolgálón feloldott NetBIOS névnek aktívnak kell maradnia. A beállítás alapértelmezett értékét sohasem kell megváltoztatnunk. Különleges Samba ismeretek Ebben a fejezetben, amelyben egyúttal lezárjuk az smb.conf fájllal kapcsolatos vizsgálatainkat, néhány érdekes beállítást mutatunk be, amelyekkel nem szokványos feladatokat végezhetünk el. Röviden kitérünk arra, hogyan támogathatjuk a programozók munkáját, miként tehetjük ,,nemzetközivé” a Sambát, hogyan kezelhetünk üzeneteket, és javíthatunk ki néhány windowsbeli hibát. Az esetek többségében ezeket a beállításokat csak különleges körülmények között kell használnunk. A fejezet végén arról szólunk, miként készíthetünk biztonsági másolatokat a Samba smbtar programjával. Ennyit elöljáróban, és most lássuk, hogyan segíthetjük a programozók munkáját. A programozók segítése Ha
programozók is hozzáférhetnek a Samba kiszolgálónkhoz, akkor legyünk tisztában a 8.1 táblázatban felsorolt beállítások szerepével 8.1 táblázat Programozási beállítási lehetőségek Beállítás Paraméterek Funkció Alapértelmezett érték Hatókör time server Boolean érték Ha yes az értéke, az nmbd saját maga jelentkezik be SMB időszolgáltatóként a Windows ügyfelek számára. A megadott számú percet hozzáadja a jelentett időhöz. Nem fájltulajdonosoknak is engedélyezi, hogy módosítsák a fájl idejét, ha van joguk írni a fájlba. A fájlok idejét a legközelebbi páros másodpercre kerekíti fel. Beállítja a könyvtáridőket, hogy elhárítsa az MS nmake hibáját. no Globális 0 Globális no Megosztás no Megosztás no Megosztás time Numerikus offset (percek) dos file- Boolean érték times dos file- Boolean érték time resolution fake Boolean érték directory create times 8. FEJEZET KÜLÖNLEGES SAMBA ISMERETEK
| 243 Időszinkronizálás A programozók számára nagyon fontos lehet az idő szinkronizálása. Gondoljuk végig az alábbi beállításokat: time server = yes dos filetimes = yes fake directory create times = yes dos filetime resolution = yes delete readonly = yes Ha felvesszük ezeket a beállításokat, akkor a Samba megosztásai a Visual C++, az nmake és más Microsoft programozói eszköz által elvárt formátumban szolgáltatják a fájlidőket. Ellenkező esetben a PC-s make programok arra gondolhatnak, hogy egy könyvtár összes fájlját újra le kell fordítaniuk. Nyilvánvaló, hogy nem ez a célunk time server Ha a Samba kiszolgálónknak pontos az órája, vagy ha a kiszolgáló a unixos hálózati időkiszolgálók valamelyikének az ügyfele, akkor a time server beállítás alábbi megadásával arra utasíthatjuk, hogy saját magát jelentse be SMB időkiszolgálóként: [global] time server = yes Az ügyfél az alábbi DOS parancs megadásával is
lekérdezheti a helyes időt, ha a kiszolgáló helyére a Samba kiszolgáló nevét írja be: C:NET TIME \kiszolgáló /YES /SET Ezt a parancsot egy Windows bejelentkezési szkriptbe is bevehetjük (lásd a ,,Felhasználók, biztonság és tartományok” című 6. fejezetet) Alapértelmezés szerint a time server beállításhoz a no érték tartozik. Ha bekapcsoljuk ezt a szolgáltatást, akkor a fenti paranccsal megakadályozhatjuk, hogy más időt mutassanak az ügyfelek Az időszinkronizálás nagyon fontos olyan ügyfeleknél, akik make vagy ehhez hasonló programokat használnak – az ilyen programok ugyanis a fájlok utolsó módosításának idejétől függően végzik el az újrafordításukat. A helytelenül szinkronizált idő miatt az ilyen programok vagy újrafordítják a könyvtárban lévő fájlokat, ami időveszteség, vagy ellenkezőleg, nem fordítják újra az éppen módosított fájlokat, mert egy kicsit késik az órájuk. time offset Azon ügyfelek
számára, akik nem használják helyesen a téli/nyári időszámításra való áttérést, a Samba a time offset beállítást kínálja. Ha bekapcsoljuk ezt a lehetőséget, akkor a Samba a megadott számú percet hozzáadja az aktuális időhöz. Erre akkor lehet szükségünk, ha történetesen Új-Fundlandon lennénk, mert a Windows nem tudja, hogy ott 30 perces az időeltolódás: 244 | SAMBA [global] time offset = 30 dos filetimes Unix rendszerben hagyományosan csak egy rootfelhasználó és a fájl tulajdonosa változtathatja meg a fájl utolsó módosítási idejét. A megosztás szintű dos filetimes beállítás azonban lehetővé teszi, hogy a Samba kiszolgáló lemásolja egy DOS/Windows rendszerű gép jellemzőit: bárki olyan felhasználó megváltoztathatja az adott megosztásban egy fájl utolsó módosítási idejét, akinek írási joga van az adott fájlhoz. A Samba a rootjogosultságait használja ahhoz, hogy módosítani lehessen a fájl időbélyegén
Alapbeállítás szerint ez a lehetőség tiltva van. Gyakran szükség lehet azonban az engedélyezésére, hogy a PC-s make programok megfelelően működhessenek E nélkül ugyanis maguk a programok nem tudnák megváltoztatni az utolsó módosítás dátumát Emiatt viszont gyakran azt hihetnék, hogy akkor is újra kellene fordítaniuk a fájlokat, amikor erre nem lenne szükség. dos filetime resolution Ha ehhez a megosztás szintű beállításhoz a yes értéket rendeljük, a Samba a fájlidőket a legközelebbi két másodpercen belül a páros értékre kerekíti. A beállítás segítségével elkerülhetők az olyan windowsos hibák, amelyek megakadályozzák a Visual C++ programot abban, hogy észleljék, ha nem változott egy fájl. Ezt a lehetőséget az alábbi módon engedélyezhetjük: [data] dos filetime resolution = yes Csak akkor javasolható ennek a beállításnak a használata, ha egy Samba megosztásban Visual C++ programmal dolgozunk, amely támogatja az
opportunista zárolást. fake directory create times A fake directory create times beállításra azért van szükség, hogy biztosítani lehessen a PC-s make programok működését. A VFAT és az NTFS fájlrendszerek feljegyzik egy adott könyvtár létrehozásának idejét, míg a Unix ezt nem teszi meg. Ha nem használnánk ezt a beállítást, akkor a Samba az általa ismert legrégebben feljegyzett dátumot rendelné a könyvtárhoz (ami gyakran egy fájl utolsó módosítási dátuma), és ezt küldené viszsza az ügyfélnek Ha ez nem lenne megfelelő, akkor vegyük fel az alábbi beállítást egy megosztás definíciójába: [data] fake directory create times = yes Ha használjuk ezt a beállítást, akkor a Samba a könyvtár létrehozásának idejeként a hardverbe bekódolt 1980. január 1-jei dátumot adná meg Ezzel elsősorban a Visual C++ nmake programja győzhető meg arról, hogy a build könyvtáraiban lévő object fájlok valóban újabb keletűek, mint a
könyvtár létrehozási dátuma, ezért újra kell fordítani őket. 8. FEJEZET KÜLÖNLEGES SAMBA ISMERETEK | 245 Mágikus szkriptek Az alábbi beállítások a Samba kiszolgáló mágikus szkriptjeivel kapcsolatosak. A mágikus szkriptek programokat futtatnak egy Unix gépen, amelyek kimenetét átirányítják az SMB ügyfélre. Ez az eljárás lényegében véve nem más, mint valamiféle bizonytalan kísérletezés Ennek ellenére egyes programozók mégis így próbálnak meggyőződni a programjuk helyes működéséről. A mágikus szkriptek azonban nem megbízhatók, és a Samba fejlesztői kifejezetten óvnak mindenkit a használatuktól. További információk a 82 táblázatban olvashatók 8.2 táblázat Mágikus szkriptek beállítási lehetőségei Beállítás Paraméterek magic script Karakterlánc Megadja annak a fájlnak a (fájlnév a teljes nevét, amelyet a Sambának elérési úttal) végre kell hajtania, amikor a felhasználó bezárta azt. Megadja
annak a fájlnak a Karakterlánc (fájlnév a teljes nevét, amelybe a mágikus fájl kimenete kerül. elérési úttal) magic output Funkció Alapértelmezett érték Hatókör Nincs Megosztás szkriptnév.out Megosztás magic script Ha a magic script beállításhoz hozzá van rendelve fájlnév, és az ügyfél abban a megosztásban létrehoz egy ilyen nevű fájlt, akkor a Samba azonnal lefuttatja azt, mihelyt megnyitotta és bezárta azt az ügyfél. Tegyük fel, hogy az alábbi bejegyzést tartalmazza az [accounting] megosztás: [accounting] magic script = tally.sh A Samba állandóan figyelemmel kíséri a megosztásban lévő fájlokat. Ha a tallysh nevű fájlt bezárta egy felhasználó (miután előtte megnyitotta), a Samba a fájl tartalmát helyileg végrehajtja. A fájlt végrehajtásra átadja egy héjprogramnak, ezért a fájlnak szabályos Unix shell szkriptnek kell lennie. Ez azt jelenti, hogy a sorait újsor karakterrel kell lezárni, nem pedig a Windowsban
szokásos kocsivissza/soremelés karakterpárral. Emellett még ajánlatos a #! direktívát is beírni a fájl elejére, jelezve, hogy melyik héjprogramnak kell végrehajtania a szkriptet magic output Ezzel a beállítással annak a fájlnak a nevét adhatjuk meg, amelybe a magic script beállításban megadott szkript kimenete kerül. A fájlnévnek írható könyvtárban kell lennie: [accounting] magic script = tally.sh magic output = /var/log/magicoutput 246 | SAMBA Ha nem rendelünk fájlnevet ehhez a beállításhoz, akkor a kiviteli fájl a szkript nevét kapja (amit a magic script beállításban megadtunk), és .out lesz a kiterjesztése Nemzetközi beállítások A Samba bizonyos korlátok között más nyelveken is ,,beszél”. Ha olyan karaktereket kell használnunk, amelyeket nem tartalmaz a szabványos ASCII tábla, akkor ezen a 8.3 táblázatban felsorolt beállítások felvételével segíthetünk 8.3 táblázat Nyelvi beállítások Beállítás Paraméterek
client Lásd lejjebb code page character Lásd lejjebb set coding system Lásd lejjebb valid chars Karakterlánc (karakterkészlet) Funkció Alapértelmezett érték Hatókör Megadja az ügyfelek által elvárt kódlapot. A kódlapokat alternatív Unix karakterkészletekre fordítja le. A 932-es kódlapot valamelyik ázsiai karakterkészletre fordítja le. Elavult: régebben egyedi karaktereket vett fel egy kódlapra, és a kódlap beállítását követően lehetett használni. 850 Globális Nincs Globális Nincs Globális Nincs Globális client code page A Windows platformokon használt karakterkészletek a kódlap eredeti koncepcióján alapulnak. A kódlapokat eredetileg DOS és Windows ügyfelek használták, hogy meghatározzák a kis- és nagybetűk megfeleltetését előíró szabályokat Az ügyfelek a globális hatókörű client code page beállítás segítségével utasíthatják a Sambát a nekik megfelelő kódlap használatára. A beállítás
először betölti a kódlapot definiáló fájlt, majd kiveszi ebből a 84 táblázatban megadott értékeket. 8.4 táblázat A Samba 20-ban használható kódlapok Kódlap Nyelv 437 737 850 852 861 866 932 MS-DOS latin (Egyesült Államok) Windows 95 görög MS-DOS latin 1 (Nyugat-Európa) MS-DOS latin 2 (Kelet-Európa) MS-DOS izlandi MS-DOS cirill (Oroszország) MS-DOS japán (Shift-JIS) 8. FEJEZET KÜLÖNLEGES SAMBA ISMERETEK | 247 8.4 táblázat folytatása Kódlap Nyelv 936 949 950 MS-DOS egyszerűsített kínai MS-DOS koreai (hangul) MS-DOS hagyományos kínai Az ügyfél kódlapját a következőképpen adhatjuk meg: [global] client code page = 852 A beállításhoz alapértelmezés szerint a 850-es kódlap tartozik. A Samba részét alkotó make smbcodepage eszköz segítségével saját SMB kódlapokat is készíthetünk, ha az itt felsoroltak nem lennének elegendők. character set Ennek a globális hatókörű beállításnak a segítségével a DOS kódlapot
használó (lásd a client code page beállítást) fájlnevek úgy alakíthatók át, hogy a nem az Egyesült Államokban használt Unix karakterkészlettel is leképezhetők legyenek. Ha például az ügyfél által használt nyugat-európai MS-DOS karakterkészletet a kiszolgálón egy nyugat-európai Unix karakterkészletre akarunk átalakítani, akkor a következő beállításokat kell felvennünk a konfigurációs fájlba: [global] client code page = 850 character set = ISO8859-1 Figyeljük meg, hogy a client code page beállítást is fel kell vennünk, amelyben a forrás karakterkészletet kell specifikálnunk. A 85 táblázat sorolja fel a Samba 20 verzióban használható karakterkészleteket (és a nekik megfelelő kódlapokat) 8.5 táblázat A Samba 20 verzióban használható karakterkészletek Karakterkészlet Kódtábla Nyelv ISO8859-1 ISO8859-2 ISO8859-5 KOI8-R 850 852 866 866 Nyugat-európai Unix Kelet-európai Unix Cirill Unix Alternatív cirill Unix coding
system A coding system beállításnak, ami hasonlít a character set beállításhoz, az a feladata, hogy meghatározza, miként kerüljön átalakításra egy japán Shift JIS kódlap egy neki meg- | 248 SAMBA felelő Unix karakterkészletté. A beállítás használatához az előzőekben ismertetett client code page beállításhoz a 932-es értéket kell rendelni. A Samba 20 a 86 táblázatban felsorolt kódrendszereket fogadja el 8.6 táblázat A Samba 20 által elfogadható kódrendszerek Karakterkészlet Meghatározás SJIS JIS8 J8BB J8BH J8@B J8@J J8@H JIS7 J7BB J7BH J7@B J7@J J7@H JUNET JUBB JUBH JU@B JU@J JU@H EUC HEX CAP Standard Shift JIS Nyolc bites JIS kódok Nyolc bites JIS kódok Nyolc bites JIS kódok Nyolc bites JIS kódok Nyolc bites JIS kódok Nyolc bites JIS kódok Hét bites JIS kódok Hét bites JIS kódok Hét bites JIS kódok Hét bites JIS kódok Hét bites JIS kódok Hét bites JIS kódok JUNET kódok JUNET kódok JUNET kódok JUNET kódok JUNET
kódok JUNET kódok EUC kódok Három bájtos hexadecimális kód Három bájtos hexadecimális kód (Columbia Appletalk Program) valid chars A valid chars beállítás a Samba egyik régebbi képessége, amelynek segítségével egyedi karaktereket lehetett felvenni egy kódlapba. A korszerűbb kódolási rendszerek azonban kiszorították ezt az eljárást A beállítás a következőképpen használható: valid chars = Î valid chars = 0450:0420 0x0A20:0x0A00 valid chars = A:a A listában felsorolt karaktereket szóközökkel kell egymástól elválasztani. Ha két karakter vagy a numerikus megfelelői között kettőspont áll, akkor a Samba a kettősponttól balra álló adatot nagybetűs karakternek, a tőle jobbra állót pedig kisbetűs karakternek tekinti. A karaktereket literálként (ha be tudjuk írni a billentyűzetről) vagy a Unicode megfelelőjük oktális, hexadecimális vagy decimális alakjában is megadhatjuk. 8. FEJEZET KÜLÖNLEGES SAMBA ISMERETEK | 249
Ennek a beállításnak a használata nem ajánlott. Ehelyett inkább a fejezet előző részében ismertetett kódlapokat vegyük igénybe Ha valamilyen oknál fogva mégis használnunk kellene, akkor először rendeljük a client code page beállításhoz azt a kódlapot, amelyikbe a karaktereket fel akarjuk venni, és csak ezt követően soroljuk fel a felveendő karaktereket. Ellenkező esetben a karakterek nem kerülnek be a kódtáblába WinPopup üzenetek A Windowsban a WinPopup eszköz (WINPOPUP.EXE) segítségével küldhetünk üzeneteket felhasználóknak, számítógépeknek vagy a hálózatba kapcsolt összes munkacsoportnak Ez az eszköz a Windows for Workgroups és a Windows 95/98 rendszerben is megtalálható A Windows 95 és a 98 rendszerben azonban futtatnunk kell a WinPopup programot, ha üzeneteket akarunk küldeni vagy kapni Ezzel szemben a Windows NT-ben az üzenetszolgáltató a program futtatása nélkül is automatikusan megjeleníti egy kis ablakban a kapott
üzeneteket. A WinPopup program működését a 81 ábra szemlélteti 8.1 ábra A WinPopup működése A Samba az ilyen üzenetküldéssel kapcsolatban csak egyetlen, a 8.7 táblázatban leírt beállítást használ 250 | SAMBA 8.7 táblázat WinPopup beállítás Beállítás Paraméterek Funkció Alapértelmezett érték Hatókör message command Karakterlánc (teljes elérési út) Megadja azt a parancsot, amelyet a Unixban futtatni kell WinPopup üzenet vételekor. Nincs Globális message command A message command beállítással annak a programnak az elérési útját adhatjuk meg, amelynek egy WinPopup üzenet beérkezésekor a kiszolgálón le kell futnia. A parancs a guest account beállításban megadott felhasználó nevében hajtódik végre. Ilyenkor azonban kérdéses, hogy mi a teendő, hiszen az üzenet feltehetően a Samba rendszergazdájának szól, aki viszont nem ismeri a parancs végrehajtását kérő személy nevét. A Samba fejlesztői ebben az
esetben a következőket javasolják: [global] message command = /bin/csh -c ’xedit %s; rm %s’ & Figyeljük meg, hogy változókat használunk a beállításban. A %s változó azt a fájlt jelenti, amelyik az üzenetet tartalmazza. A parancs végrehajtását követően ezt a fájlt törölni kell, hogy ne gyűljenek fel az ilyen üzenetek. Emellett a parancsnak saját processzt kell indítania (figyeljük meg a parancs neve után álló & karaktert) Ellenkező esetben ugyanis megakasztaná az ügyfelet, akinek meg kellene várnia a parancs sikeres végrehajtására vonatkozó üzenet beérkezését, mielőtt folytathatná a munkáját A standard változók mellett a 8.8 táblázatban még további három olyan változót is felsorolunk, amelyek a message command beállítással együtt használhatók 8.8 táblázat A message command beállítással együtt használható változók Változó Meghatározás %s %f %t Az üzenetet tartalmazó fájl neve. Az üzenetet
küldő ügyfél neve. Az üzenet címzettjének (a fogadó számítógépnek) neve. Újonnan felvett beállítások A Samba a 2.0 verzió megjelenése körüli időkben olyan beállításokat is tartalmazott, amelyek támogatottsága még nem volt teljes körű Ennek ellenére a most következő fejezetrészben röviden áttekintjük ezek jelentését Ezeket a beállításokat a 89 táblázat sorolja fel 8. FEJEZET KÜLÖNLEGES SAMBA ISMERETEK | 251 8.9 táblázat Újonnan felvett beállítások Beállítás Paraméterek Funkció Alapértelmezett érték Hatókör change notify timeout Numerikus (másodpercek száma) 60 Globális machine password timeout stat cache Numerikus (másodpercek száma) Boolean érték 604,800 (1 hét) Globális yes Globális stat cache size Numerikus Megadja a vizsgálatok közötti időtartamot, amikor egy ügyfél kéri az adott könyvtárban lévő fájlok módosulásának figyelését. Megadja az NT tartományi gépek
jelszavainak megújítási időtartamát. Ha yes az értéke, a Samba elrejti a legutolsó névmegfeleltetéseket. Megadja a stat cache méretét. 50 Globális change notify timeout A change notify timeout globális hatókörű beállítás segítségével a Windows NT módosulásértesítés nevű szolgáltatása utánozható le. Ez lehetővé teszi, hogy a Windows NT kiszolgáló az ügyfél kérésére rendszeres időközönként figyeljen egy megosztott könyvtárat, és értesítse az ügyfelet, ha módosulást észlelt benne. A Samba 2.0 verziója felkínálja ezt a szolgáltatást az ügyfeleinek Az ilyen vizsgálatok elvégzése azonban jelentősen csökkentheti a kiszolgáló sebességét. A beállításban azt adhatjuk meg, hogy milyen időközönként ellenőrizze a Samba a könyvtárat. Az alapértelmezés szerinti időköz 1 perc (60 másodperc), amit azonban az alábbiak szerint meg is változtathatunk: [global] change notify timeout = 30 machine password timeout A
machine password timeout globális hatókörű beállítással azt adhatjuk meg, hogy mennyi ideig emlékezzen egy Windows NT gép a tartományi számítógépek jelszavaira. A beállításhoz alapértelmezés szerint ugyanaz az érték tartozik, amit a Windows NT 4.0 is használ – ez 604 800 másodperc (1 hét). A Samba rendszeres időközönként kísérletet tesz a számítógépjelszó megváltoztására, ami az a jelszó, amelyet kifejezetten egy másik kiszolgáló használ a változás jelentésére. Ezzel a beállítással másodpercekben megadhatjuk azt az időtartamot, ameddig a Sambának várakoznia kell, mielőtt kísérletet tenne ennek a jelszónak a megváltoztatására. Az alábbi beállítással 1 nap várakozási időt állítunk be: [global] machine password timeout = 86400 252 | SAMBA stat cache A globális hatókörű stat cache beállítás bekapcsolja az utolsó kis- és nagybetűket nem megkülönböztető névleképzések elrejtését. A
beállításhoz alapértelmezés szerint a yes érték tartozik. A Samba fejlesztői azt javasolják, hogy sohase változtassunk ezen a beállításon stat cache size A globális hatókörű stat cache size beállítással a stat cache beállításban megadott elrejtett bejegyzések számát határozhatjuk meg. Az alapértelmezés szerinti érték 50 A Samba fejlesztői ebben az esetben is azt javasolják, hogy sohase változtassunk ezen a beállításon. Vegyes beállítások A Samba egyes beállításai a Unix és a Windows operációs rendszerekkel kapcsolatos problémákat kezelik. Az ilyen beállításokat a 810 táblázatban soroltuk fel A könyv szerzői általában nem javasolják az alapértelmezett értékek módosítását 8.10 táblázat Vegyes beállítások Beállítás Paraméterek deadtime Numerikus Megadja, hogy meddig le(percek száma) het inaktív egy kapcsolat, mielőtt megszakadna. Karakterlánc Megadható hozzá egy pa(parancs) rancs, amely a Samba által
észlelt formában küldi viszsza az üres lemezterületet. NTFS, FAT, Beállítja a kiszolgáló által az vagy Samba ügyfélnek jelentett fájlrendszert. Másodpercek Megadja, hogy a Samba milyen időközönként vizsgálja egy ügyfél jelenlétét a hálózatban. Megadja az ügyfeleknek Numerikus visszaküldhető legnagyobb (méret lemezterületet. Nem befoMB-ban) lyásolja a lemezen végzett aktuális műveleteket. Numerikus Megadja az ügyfelek által egyidejűleg végrehajtható SMB műveletek maximális számát. dfree command fstype keep alive max disk size max mux Funkció Alapértelmezett érték Hatókör 0 Globális Nincs Globális NTFS Globális 0 (nincs) Globális 0 (végtelen) Globális 50 Globális 8. FEJEZET KÜLÖNLEGES SAMBA ISMERETEK | 253 8.10 táblázat folytatása Beállítás Paraméterek Funkció Alapértelmezett érték Hatókör max open files Numerikus 10 000 Globális max xmit Numerikus 65 535 Globális nt pipe
support Boolean érték yes Globális nt smb support Boolean érték yes Globális ole locking compatibility Boolean érték yes Globális panic action Parancs Korlátozza az egyidejűleg nyitva tartható fájlok számát, hogy ne haladják meg a Unix korlátjait. Megadja a Samba által küldhető csomagok maximális méretét. Kikapcsolja az NT kísérleti szolgáltatását teljesítményméréshez vagy hiba esetére. Kikapcsolja az NT kísérleti szolgáltatását teljesítményméréshez vagy hiba esetére. Újra leképezi a Windowsban használt, és a korlátokon kívül eső zárolási kérelmeket, hogy elférjenek a Unix korlátjai között. Kikapcsolása zárolási hibákat okoz a Unixban A Samba kiszolgáló kiesése esetén hibakeresés céljából futtatandó parancs. Ha yes az értéke, a VMS ügyfelek kiadhatnak set dir parancsokat. Megadja azt a parancsot, amelyet a Samba shell parancsok becsomagolásához használ. Ha yes az értéke, a Samba engedélyezi a
smbstatus programnak az állapotok figyelését. Ha no az értéke, figyelmen kívül maradnak a Windows alkalmazások lemezszinkronizálási kérései. Ha yes az értéke, a lemezre írást követően mindig megtörténik a lemezszinkronizálás, mielőtt visszakapná a vezérlést a hívó fél. Ha yes az értéke, törlődnek a Unix fájlnevek végén álló pontok. Nincs Globális no Globális Nincs Globális yes Globális no Globális no Globális no Globális set Boolean érték directory smbrun status Karakterlánc (parancsnév teljes elérési úttal) Boolean érték strict sync Boolean érték sync always Boolean érték strip dot Boolean érték 254 | SAMBA deadtime Ezzel a globális hatókörű beállítással annak az időtartamnak a hosszát adhatjuk meg, amennyi ideig a Samba vár, mielőtt bezárná egy inaktív felhasználóval fennálló kapcsolatát. A felhasználó akkor minősül inaktívnak, ha nem nyitott meg fájlokat, és adatokat
sem küld. A beállításhoz alapértelmezés szerint a 0 érték tartozik, ami azt jelenti, hogy a Samba sohasem zárja be a kapcsolatokat, akármeddig legyenek is inaktívak a felhasználók. Ezt az értéket az alábbi módon megváltoztathatjuk: [global] deadtime = 10 Ezzel azt közöljük a Sambával, hogy 10 perc eltelte után zárja be az inaktív felhasználóval fennálló kapcsolatát. A hálózatok többségénél használható ez a beállítás, mert a kapcsolat újrafelvétele a felhasználó számára általában láthatatlan módon történik. dfree command Ezt a beállítást olyan rendszereken használjuk, amelyek nem képesek a lemezen lévő üres terület helyes megállapítására. Ez ideig mindössze csak az Ultrix rendszernél bizonyosodott be ennek a beállításnak a szükségessége A beállításhoz alapértelmezés szerint nem tartozik érték, ami azt jelenti, hogy a Samba már tudja, miként kell helyesen kiszámítani az üres lemezterületet, és a
kapott eredményt megbízhatónak tartja. Az alapbeállítást az alábbi módon változtathatjuk meg: [global] dfree command = /usr/local/bin/dfree A beállításnak olyan szkriptre kell mutatnia, amely képes a lemez blokkokban számított teljes méretének és a szabad blokkok számának visszaküldésére. A Samba dokumentációja az alábbi szkript használatát ajánlja: #!/bin/sh df $1 | tail -1 | awk ’{print $2" "$4}’ System V gépeken az alábbi szkript használható: #!/bin/sh /usr/bin/df $1 | tail -1 | awk ’{print $3" "$5}’ fstype Ezzel a megosztás szintű beállítással annak a fájlrendszernek a típusát adhatjuk meg, amelyet a Samba egy ügyfél kérésére jelent. A beállítás értékeként a 811 táblázatban megadott karakterláncok használhatók. 8. FEJEZET KÜLÖNLEGES SAMBA ISMERETEK | 255 8.11 táblázat Fájlrendszer típusai Karakterlánc Jelentés NTFS FAT Samba Microsoft Windows NT fájlrendszer DOS FAT
fájlrendszer Samba fájlrendszer A beállításhoz alapértelmezés szerint az NTFS karakterlánc tartozik, ami a Windows NT fájlrendszerét jelenti. Valószínűleg nem lesz szükségünk más fájlrendszer megadására Ha mégis, akkor ezt az alábbi módon tehetjük meg: [data] fstype = FAT keep alive Ez a globális hatókörű beállítás azt az időtartamot adja meg másodpercekben, ameddig a Samba a NetBIOS keep-alive csomagok küldése között várakozik. Az ilyen csomagok küldésével azt vizsgálja a kiszolgáló, hogy ,,életben” van-e még egy ügyfél a hálózaton A beállítás alapértelmezett értéke a 0, ami azt jelenti, hogy a Samba sohasem küld ki ilyen csomagokat Ezt az értéket az alábbi módon bírálhatjuk felül: [global] keep alive = 10 max disk size Ennek a globális hatókörű beállításnak a segítségével egy megabájtokban értendő képzeletbeli határt adhatunk meg a Sambán lévő megosztásokhoz. A beállítást általában arra
használjuk, hogy a régebbi operációs rendszerekben dolgozó ügyfeleket megóvjuk a nagy, például 1 GB-ot meghaladó kapacitású lemezterületek helytelen használatától. A beállításhoz alapértelmezés szerint a 0 érték tartozik, ami azt jelenti, hogy semmiféle felső határ sincs. Ezt az értéket a következők szerint módosíthatjuk: [global] max disk size = 1000 max mux Ezzel a globális beállítással a Samba által engedélyezett egyidejű SMB műveletek maximális számát adhatjuk meg. A beállítás alapértelmezés szerinti értéke 50, amit az alábbi módon változtathatunk meg: [global] max mux = 100 256 | SAMBA max open files Ez a beállítás a Samba által az összes processz számára engedélyezett, egyidejűleg megnyitható fájlok maximális számát adja meg. Az érték az operációs rendszer által engedélyezett értéket (ami rendszerről rendszerre változik), nem haladhatja meg A beállításhoz alapértelmezés szerint a 10 000-es
érték tartozik, amit az alábbi módon bírálhatunk felül: [global] max open files = 8000 max xmit Ez a beállítás a Samba és az ügyfele között cserélhető csomagok maximális méretét írja elő. Bizonyos esetekben, különösen a Windows for Workgroups rendszerben kisebb csomagméret megadásával nőhet a teljesítmény A beállítás alapértelmezés szerinti értéke 65 535, ami a következőképpen változtatható meg: [global] max xmit = 4096 A B függelék ,,TCP fogadási ablak” című részében szólunk ennek a beállításnak az alkalmazásáról. nt pipe support Ezt a globális hatókörű beállítást programfejlesztők használják arra, hogy engedélyezzék vagy tiltsák Windows NT ügyfelek számára az NT SMB-specifikus IPC$-pipe-okhoz való kapcsolódást. Felhasználóként sohasem kell megváltoztatnunk az alapértelmezett értékét: [global] nt pipe support = yes nt smb support Ezt a globális hatókörű beállítást szintén programfejlesztők
használják arra, hogy NT-specifikus SMB beállításokat lehessen egyeztetni Windows NT ügyfelekkel. A Samba fejlesztői rájöttek arra, hogy valamivel jobb teljesítmény érhető el, ha ehhez a beállításhoz a no értéket rendelik. Felhasználóként valószínűleg sohasem kell megváltoztatnunk az alábbi, alap-értelmezés szerinti értéket: [global] nt smb support = yes ole locking compatibility Ez a globális hatókörű beállítás kikapcsolja a Samba belső bájttartományú zárolását, hogy kompatibilis legyen azokkal az OLE (objektumok csatolása és beágyazása) alkalmazásokkal, amelyek magas bájttartományú zárolásokat használnak a processzek közötti kommunikációban. A beállításhoz alapértelmezés szerint a yes érték tartozik Ha bízunk a Unix rendszerünk zárolási mechanizmusában, akkor az alábbiak szerint bírálhatjuk felül ezt: 8. FEJEZET KÜLÖNLEGES SAMBA ISMERETEK | 257 [global] ole locking compatibility = no panic action
Ezzel a globális hatókörű beállítással egy parancsot adhatunk meg, amely akkor kerül végrehajtásra, ha a Samba a betöltődésekor vagy a futásakor végzetes hibával találkozik. A beállításhoz nem tartozik alapértelmezett érték. A végrehajtandó parancsot a következőképpen adhatjuk meg: [global] panic action = /bin/csh -c ’xedit <: "A Samba váratlanul leállt!"’ set directory Ezzel a beállítással Digital Pathworks ügyfelek számára tehetjük lehetővé, hogy a setdir paranccsal váltsanak könyvtárt a kiszolgálón. Ha nincs a hálózatban Digital Pathworks ügyfél, akkor sohasem kell megváltoztatnunk ezt a beállítást. A beállításhoz alapértelmezés szerint a no érték tartozik, amit egy adott megosztásban az alábbi módon változtathatunk meg: [data] set directory = yes smbrun Ezzel a beállítással az smbrun végrehajtható fájl helyét adhatjuk meg, amelyet a Samba a shell parancsok becsomagolásához használ. A
beállítás a Samba lefordításakor kapja meg az alapértelmezés szerinti értékét. Ha a Sambát nem a standard könyvtárába telepítettük, akkor az alábbi módon adhatjuk meg ennek a bináris fájlnak a helyét: [global] smbrun = /usr/local/bin/smbrun status Ez a globális hatókörű beállítás azt jelzi a Sambának, hogy kell-e naplóznia az összes aktív kapcsolatot egy állapotfájlba. Ezt a fájlt csak az smbstatus parancs használja Ha nincs szándékunkban ennek a parancsnak a használata, akkor a no értéket rendelhetjük a beállításhoz, amivel némiképp növelhető a kiszolgáló sebessége A beállításhoz alapértelmezés szerint a yes érték tartozik, amit az alábbi módon változtathatunk meg: [global] status = no strict sync Ez a megosztás szintű beállítás azt határozza meg, hogy elfogadja-e a Samba az ügyfél lemezszinkronizálásra vonatkozó kéréseit. Sok ügyfél akkor is kéri a lemezszinkronizálást, amikor csak adatokat kívánnak
behozni a nyitott fájljaikba Ezzel viszont jelentősen 258 | SAMBA lassul a Samba működése. A beállításhoz alapértelmezés szerint a no érték tartozik, amit az alábbi módon változtathatunk meg: [data] strict sync = yes sync always Ez a megosztás szintű beállítás azt határozza meg, hogy követnie kell-e minden egyes lemezre írást lemezszinkronizálásnak, mielőtt az írásra vonatkozó hívás visszaadná a vezérlést az ügyfélnek. Az ügyfelek azonban akkor is kérhetik a lemezszinkronizálást, ha ehhez a beállításhoz a no érték tartozik (lásd a strict sync beállítást). A beállításhoz alapértelmezés szerint a no érték tartozik, amit azonban az alábbi módon megváltoztathatunk: [data] sync always = yes strip dot Ezzel a globális hatókörű beállítással azt határozhatjuk meg, hogy törlődjön-e a ponttal a végükön megformázott Unix fájlnevekből a lezáró pont. A beállításhoz alapértelmezés szerint a no érték
tartozik, amit azonban az adott megosztásban az alábbi módon megváltoztathatunk: [global] strip dot = yes Ez a beállítás már elavultnak tekinthető – inkább a mangled map beállítást használjuk helyette. Biztonsági másolatok készítése az smbtar eszközzel A fejezet utolsó témaköreként az smbtar eszközzel ismerkedünk meg. A korszerű PC-ken gyakori probléma, hogy a hajlékonylemezek és a CD-k mérete túlságosan kicsi biztonsági másolatok tárolására. Minden géphez külön szalagmeghajtó vásárlása azonban nyilván ésszerűtlen. Következésképpen sokan egyáltalán nem készítenek biztonsági másolatokat Ehelyett azt a megoldást választják, hogy egyszerűen újratelepítik a meghibásodott alkalmazásokat. Szerencsére a Samba felkínál egy másik lehetőséget: a PC-ken lévő adatokról az smbtar eszköz segítségével biztonsági másolatot készíthetünk. Ha az ügyfelek adatait a Samba kiszolgálón tartjuk, akkor rendszeres
időközönként elvégezhetjük ezt a feladatot. Az alkalmazásokról és a konfigurációs fájlokról helyben is készíthetők esetenként biztonsági másolatok, amelyek birtokában gyorsabban végezhetők el a helyreállítások. Ahhoz, hogy egy Unix kiszolgálón dolgozva biztonsági másolatokat készíthessünk PC-kről, előzőleg a következő három feladatot kell elvégeznünk: 8. FEJEZET KÜLÖNLEGES SAMBA ISMERETEK | 259 1. Ha még nem lenne telepítve a PC-n a fájl- és a nyomtatómegosztás, akkor telepítsük, és kössük hozzá a TCP/IP protokollhoz. 2. Hozzunk létre egy lemezmegosztást a PC-n, hogy a kiszolgálóról olvasható legyen a lemez. 3. Telepítsük a kiszolgálóra a biztonsági másolatokat készítő szkripteket Ez első két lépést Windows 95/98 rendszerben mutatjuk be. A Vezérlőpultról nyissuk meg a Hálózat (Networking) ablakát, és ellenőrizzük, hogy az ablak felső részében lévő lista tartalmazza-e a Microsoft Networks
fájl- és nyomtatómegosztás tételt (lásd a 8.2 ábrát) 8.2 ábra A Hálózat ablaka Ha nem lenne telepítve a Microsoft Networks fájl- és nyomtatómegosztás, akkor a Hozzáadás gombra kattintva telepítsük azt. Miután rákattintottunk a gombra, meg kell adnunk a felveendő hálózati összetevő típusát. Jelöljük ki a Szolgáltatás tételt, és a megnyíló párbeszédablakban válasszuk a ,,Microsoft Networks fájl- és nyomtatómegosztás” tételt Végül az OK gombra kattintva végezzük el a telepítést. Miután telepítettük a Microsoft Networks fájl- és nyomtatómegosztást, térjünk vissza a Hálózat párbeszédablakába, és jelöljük ki a Samba hálózati kártyájához kötött TCP/IP protokollt. Kattintsunk a Tulajdonságok gombra, és válasszuk a Kötések (Bindings) párbeszédlapot Ekkor a 83 ábrán láthatóhoz hasonló párbeszédablak nyílik meg Ebben csak azt kell ellenőriznünk, hogy a be van-e jelölve a ,,Fájl- és
nyomtatómegosztás” négyzete, hogy TCP/IP kapcsolaton keresztül elérhető legyen ez a megosztás. Ettől a pillanattól kezdve a megosztott lemezeink mások számára is elérhetők a hálózatban. 260 | SAMBA 8.3 ábra TCP/IP kötések Következő lépésként meg kell osztanunk azt a lemezt, amelyről biztonsági másolatot akarunk készíteni a szalagmeghajtón. Nyissuk meg a Windows Intézőjét, és válasszuk például a Dokumentumok (My Documents) könyvtárt. Az egér jobb oldali gombjával kattintsunk a könyvtárra, és a megnyíló helyi menüben válasszuk a Tulajdonságok parancsot. Ekkor a 8.4 ábrán láthatóhoz hasonló párbeszédablak nyílik meg 8.4 ábra A Dokumentumok tulajdonságai párbeszédablak 8. FEJEZET KÜLÖNLEGES SAMBA ISMERETEK | 261 Válasszuk a Megosztás párbeszédlapot. Ebben eldönthetjük, hogy a könyvtárt csak olvasásra, teljes hozzáférésre, vagy jelszófüggően az egyik vagy mindkét típusú hozzáférésre
akarjuk-e megosztani. A Windows 95/98 csak megosztás szintű biztonságot nyújt A példánkban a teljes hozzáférést választottuk, és megadtunk ehhez egy jelszót is a 85 ábrán látható módon. Miután beírtuk a jelszót és az OK gombra kattintottunk, felszólítást kapunk a jelszó ismételt beírására. Ezzel elkészítettünk egy megosztást a lemezünkön 8.5 ábra A megosztott Dokumentumok könyvtár Utolsó lépésként már csak a biztonsági másolatot készítő szkriptet kell elhelyeznünk az smbtar program segítségével a szalagkiszolgálóra. A legegyszerűbb szkript akár egyetlen sorból is állhat, és az alábbiakat tartalmazhatja: smbtar -s client -t /dev/rst0 -x "My Documents" -p password Ez a szkript minden feltétel nélkül létrehozza a //client/My Documents megosztás tartalmát a /dev/rst0 eszközön. Természetesen ez a szkript kivételesen egyszerű, és nem túlságosan biztonságos A szkript tartalmát aszerint bővíthetjük, hogy
milyen sémák szerint akarjuk létrehozni a biztonsági másolatokat. 262 | SAMBA Ízelítőül csak néhány lehetőség az smbtar program használatára: • Növekményes biztonsági másolat létrehozása a DOS archiválandó bitje (az -i kapcsoló) alapján: Ehhez az szükséges, hogy az ügyfél megosztása írásra és olvasásra is elérhető legyen, hogy az smbtar törölhesse a bitet. • Biztonsági másolat készítése azokról a fájlokról, amelyek egy adott idő óta módosultak (az -N fájlnév kapcsolójával). • Biztonsági másolat készítése teljes lemezmeghajtóról, miután a teljes meghajtót megosztottá tettük. Az első példát kivéve a másik két eljárást anélkül is használhatjuk, hogy írási engedélyt is adnánk az illető megosztáshoz. Ezzel csökkenthetjük a biztonsági kockázatot, mert a szkripteknek nem kell tartalmazniuk jelszavakat, és a parancssorban sem kell jelszót átadnunk. Hibakeresés a Sambában A Samba
rendkívül hibatűrő programcsomag. Miután mindent beállítottunk a kívánságunk szerint, talán meg is feledkezünk arról, hogy egyáltalán fut. Hibák többnyire csak a telepítés során vagy akkor fordulnak elő, amikor valamilyen új összetevővel egészítjük ki a kiszolgálót. Szerencsére egész sor eszköz áll a rendelkezésünkre az ilyen problémák diagnosztizálására. Arra semmiképpen sem vállalkozhatunk, hogy minden lehetséges hibára részletes megoldást adjunk, de az e fejezetben leírtak elegendő támpontot adhatnak a megfelelő kiinduláshoz. A fejezet első részében a hibakereséshez rendelkezésünkre álló eszközökkel, a második részében a részletes tudnivalókkal ismerkedünk meg. Végül a harmadik rész azokról az erőforrásokról szól, amelyekre speciális problémák megoldásához lehet szükségünk. Az eszközkészlet A Unixra bizonyos szempontból úgy is tekinthetünk, mint egy sor alkalmazás és eszköz gyűjteményére.
Az utóbbiak egy részét kifejezetten hibakereséshez használhatjuk Mint sok más esetben, itt is igaz, hogy ugyanazt a feladatot többféleképpen is megoldhatjuk. Amikor a Sambával kapcsolatos hibákat keressük, először a következőkből induljunk ki: 1. Samba naplófájlok 2. Hibafa 3. Unix segédprogramok 4. Samba tesztprogramok 5. Dokumentáció és a FAQ (gyakran ismételt kérdések) 6. Kutatható archívumok 7. Samba hírcsoportok Lássuk külön-külön, miként használhatjuk ezeket. Samba naplófájlok Hiba esetén elsőként mindig a naplófájlokat nézzük át. A Samba naplófájljai jelentősen segítik az olyan problémák diagnosztizálását, amellyel a kezdő és a középhaladó Samba rendszergazdák találkozhatnak. A naplóvezetést illetően a Samba nagyon rugalmas A kiszolgáló konfigurálásától függően a naplófájlok nagyon kevés és nagyos sok információt is megörökíthetnek. Változókat használva gépenként, megosztásokként vagy ezek
kombinációjaként szét is választhatjuk a naplófájlokat. 264 | SAMBA Alapbeállítás szerint a Samba naplóbejegyzéseit a samba könyvtár/var/smbd.log és a samba könyvtár/var/nmbd.log fájlok tartalmazzák, ahol a samba könyvtár azt a könyvtárat jelenti, ahová a Sambát telepítettük (ez rendszerint a /usr/local/samba). Amint a 4. fejezetben említettük, az smbconf konfigurációs fájl log file beállításában a fájlok helyét és nevét is megváltoztathatjuk. A beállításban a 2 fejezetben ismertetett bármelyik változót használhatjuk, így külön-külön naplófájlokat hozhatunk létre minden egyes kapcsolódó felhasználó számára, ha az smb.conf fájl [global] szakaszába felvesszük az alábbi sort: log file = %m.log Másik megoldásként a parancssorban az -l kapcsoló megadásával is specifikálhatjuk a naplófájl könyvtárát, például a következő módon: smbd -l /usr/local/var/samba Azt is megtehetjük, hogy megosztásonként
választjuk szét a naplófájlokat; ennek különösen akkor vehetjük hasznát, ha a hiba okozójaként egy adott megosztásra gyanakszunk. A konfigurációs fájl [global] szakaszába ekkor az %S változót használva a következő bejegyzést vegyük fel: log file = %S.log Naplózási szintek A Samba naplózási szintjeit az smb.conf fájl globális hatókörű log level vagy az ezzel egyenértékű debug level beállításában írhatjuk elő. A naplózási szint értéke egy 0 (nincs naplózás) és 10 (legrészletesebb napló) közötti értéket vehet fel. Az esetek többségében a 3-as szint már kielégítő adatokat szolgáltat. Tegyük fel például, hogy egy Windows ügyfél tallóz egy könyvtárat a Samba kiszolgálón. Ha csak kevés adatot akarunk összegyűjteni, akkor a log level = 1 beállítást használhatjuk, ami arra utasítja a Sambát, hogy csak felületes információkat naplózzon. Az alábbi bejegyzés például csak a kapcsolat létrejöttéről ad
tájékoztatást: 105/25/98 22:02:11 server (192.168220100) connect to service public as user pcguest (uid=503,gid=100) (pid 3377) A magasabb naplózási szintek részletesebb információkkal szolgálnak. A 3-as szint által szolgáltatott információk általában elegendőek, és még a Samba rendszergazdáknak sincs többre szükségük. A magasabb szinteknek megfelelő információkat többnyire csak a fejlesztők használják, akik értik is ezeknek a hosszasan sorjázó rejtélyes üzeneteknek a jelentését Az alábbiak arra mutatnak példát, hogy ugyanazon művelet elvégzésekor mi kerül be a naplófájlba a 2-es, és mi a 3-as naplózási szint választásakor. Ne aggódjunk amiatt, ha netán nem értenénk egy SMB kapcsolat minden részletét, a célunk mindössze az, hogy bemutassuk, milyen típusú információk kerülnek naplózásra különböző szintek használatakor: 9. FEJEZET HIBAKERESÉS A SAMBÁBAN /* Level 2 / Got SIGHUP Processing section Processing
section Processing section Allowed connection Allowed connection | 265 "[homes]" "[public]" "[temp]" from 192.168220100 (192168220100) to IPC$ from 192.168220100 (192168220100) to IPC/ /* Level 3 / 05/25/98 22:15:09 Transaction 63 of length 67 switch message SMBtconX (pid 3377) Allowed connection from 192.168220100 (192168220100) to IPC$ ACCEPTED: guest account and guest ok found free connection number 105 Connect path is /tmp chdir to /tmp chdir to / 05/25/98 22:15:09 server (192.168220100) connect to service IPC$ as user pcguest (uid=503,gid=100) (pid 3377) 05/25/98 22:15:09 tconX service=ipc$ user=pcguest cnum=105 05/25/98 22:15:09 Transaction 64 of length 99 switch message SMBtrans (pid 3377) chdir to /tmp trans <PIPELANMAN> data=0 params=19 setup=0 Got API command 0 of form <WrLeh> <B13BWz> (tdscnt=0,tpscnt=19,mdrcnt=4096,mprcnt=8) Doing RNetShareEnum RNetShareEnum gave 4 entries of 4 (1 4096 126 4096) 05/25/98 22:15:11
Transaction 65 of length 99 switch message SMBtrans (pid 3377) chdir to / chdir to /tmp trans <PIPELANMAN> data=0 params=19 setup=0 Got API command 0 of form <WrLeh> <B13BWz> (tdscnt=0,tpscnt=19,mdrcnt=4096,mprcnt=8) Doing RNetShareEnum RNetShareEnum gave 4 entries of 4 (1 4096 126 4096) 05/25/98 22:15:11 Transaction 66 of length 95 switch message SMBtrans2 (pid 3377) chdir to / chdir to /pcdisk/public call trans2findfirst: dirtype = 0, maxentries = 6, close after first=0, close if end = 0 requires resume key = 0 level = 260, max data bytes = 2432 unix clean name [./DESKTOPINI] unix clean name [desktop.ini] 266 | SAMBA unix clean name [./] creating new dirptr 1 for path ./, expect close = 1 05/25/98 22:15:11 Transaction 67 of length 53 switch message SMBgetatr (pid 3377) chdir to / [.] Az első csomag beérkezését követően elvágtuk a listát, mert a további része még több oldalt is elfoglalna a könyvben. Arra azonban már ennyiből is
következtethetünk, hogy a 3-as szint fölötti szinteket beállítva megabájtok sokaságával zsúfolhatunk tele értékes lemezterületeket. A 3-as naplózási szint információi alapján már pontosan nyomon követhetjük, hogy mi történik a kiszolgálón, és az esetek többségében ezekből egyértelműen kideríthető a hiba oka. Még egy figyelmeztetés: a magasabb naplózási szintek (3-as vagy e felettiek) jelentős mértékben lelassíthatják a kiszolgáló működését. Ne feledjük, hogy minden egyes naplóbejegyzés egy írási műveletet jelent (ami már önmagában is lassú művelet), és a 2-esnél magasabb szintek rengeteg bejegyzést generálnak. Ezért azt javasoljuk, hogy a 3-as szintet is csak akkor használjuk, ha ténylegesen ki akarjuk deríteni egy hiba okát. A naplózás be- és kikapcsolása A naplózás be- és kikapcsolásához adjuk meg a megfelelő naplózási szintet az smb.conf fájl [global] szakaszában. Ezt követően vagy újraindítjuk a
Sambát, vagy arra kényszerítjük az aktuális démont, hogy dolgozza fel újra a konfigurációs fájl Azt is megtehetjük, hogy az smbd processzt a futása közben utasítjuk a naplózási szint módosítására: a SIGUSR1 jel kiküldésével eggyel növelhetjük, a SIGUSR2 jel kiküldésével pedig eggyel csökkenthetjük a naplózás szintjét. # Naplózási szint növelése 1 szinttel kill -SIGUSR1 1234 # Naplózási szint csökkentése 1 szinttel kill -SIGUSR2 1234 Naplózás ügyfélgépenként vagy felhasználónként A hibakeresés egyik hatékony – és más felhasználókat nem zavaró – módja az, hogy az smb.conf fájl [global] szakaszában különböző naplózási szinteket rendelünk a különböző gépekhez Ezt a korábban már bemutatott stratégia alapján tehetjük meg: [global] log level = 0 log file = /usr/local/samba/lib/log.%m include = /usr/local/samba/lib/smb.conf%m Ezekkel a beállításokkal arra utasítjuk a Sambát, hogy minden egyes kapcsolódó
ügyfélhez egyedi konfigurációt és naplófájlokat használjon. Ekkor csak az a teendőnk, hogy elkészítünk egy adott ügyfél gépéhez egy olyan smb.conf fájlt, amely a log level = 3 9. FEJEZET HIBAKERESÉS A SAMBÁBAN | 267 beállítást tartalmazza (a többi ügyfélre az alapértelmezés szerinti naplózási szint [0] lesz érvényes), és az így létrejövő naplófájlt tanulmányozva keressük a hiba okát. Az is előfordulhat, hogy csak egy adott felhasználóval kapcsolatos hibára gyanakszunk, és ez a hiba gépről-gépre követi a felhasználót. Ekkor megtehetjük, hogy csak az ehhez a felhasználóhoz kapcsolódó naplófájlokat készítjük el, ha az smb.conf fájlba felvesszük az alábbi sorokat: [global] log level = 0 log file = /usr/local/samba/lib/log.%u include = /usr/local/samba/lib/smb.conf%u Ezt követően készítsünk az illető felhasználó számára egy egyedi smb.conf fájlt (ami például a /usr/local/samba/lib/smbconftim lehet), és
vegyük fel bele a log level = 3 beállítást Ekkor csak az ehhez a felhasználóhoz kapcsolódó részletes naplóbejegyzéseket kell tanulmányoznunk. A Samba tesztprogramjai A Samba tesztprogramjait, amelyek segítségével a kiszolgáló jelentős része vizsgálható, a disztribúciós csomag /docs/textdocs könyvtárában található különböző fájlok írják le, kezdve a DIAGNOSIS.TXT fájllal Az ebben a fejezetben bemutatásra kerülő hibafa a Samba fejlesztőcsoportja által javasolt alaptesztek valamivel részletesebb változata, de csak a telepítéssel és az újrakonfigurálással kapcsolatos diagnosztikai műveleteket tartalmazza, akárcsak a DIAGNOSIS.TXT fájl A /docs könyvtárban és az alkönyvtáraiban lévő többi fájl speciális problémákkal foglalkozik (például Windows NT ügyfelekkel), és olyan hibákkal kapcsolatban adnak útmutatásokat, amelyekre ebben a könyvben nem térünk ki. Ha a hibafa nem lenne elegendő, akkor olvassuk el a DIAGNOSISTXT
és a többi ehhez hasonló fájl szövegét. Unix segédprogramok Esetenként az is eredményre vezethet, ha nem a Samba csomag valamelyik eszközével vizsgáljuk, mi is történik a kiszolgáló belsejében. A Unixban két olyan diagnosztikai eszköz is van, amelyekkel hibákat kereshetünk a Samba kiszolgálóban: a trace és a tcpdump A trace eszköz A trace eszköz a különböző operációs rendszerekben különböző neveken bukkan fel. A Linuxban strace, a Solarisban truss, míg az SGI rendszerben padc és par a neve. Lényegében mindegyiküknek azonos a feladata: bemutatja, hogyan zajlik le az operációs rendszerben egy függvényhívás Ezzel nyomon követhetjük egy program, így például a Samba kiszolgáló végrehajtásának menetét, és gyakran már ebből is kiszúrhatjuk azt a függvényhívást, amelyik a problémát okozza. A trace eszköz segítségével az olyan hibák okát is kideríthetjük, amelyek abból származnak, hogy rossz helyen vannak a
dinamikusan csatolt függvénytárak. Ilyen hibák akkor fordulhatnak elő, ha a Samba előre lefordított összetevőit töltjük le valahonnan. 268 | SAMBA A hibát okozó függvényhívás általában a kimenet végén látható, közvetlenül a program befejeződése előtt. Az alábbiakban a Linux operációs rendszeren végrehajtott strace program kimenete látható. Ez a kimenet egy nagyobb fájlnak a részlete, amely a Samba kiszolgáló egyik könyvtárának megnyitásakor generálódott. A fájl mindegyik sora egy-egy rendszerfüggvény neve, ami után a paraméterek és a visszatérési érték áll Ha hiba keletkezett egy függvény meghívásakor, akkor a sor végén a hibaérték (például ENOENT) és egy magyarázat olvasható. A paraméterek típusáról és a hibaértékek jelentéséről az illető operációs rendszer megfelelő trace programjának kézikönyvében olvashatunk chdir("/pcdisk/public") = 0 stat("mini/desktop.ini",
0xbffff7ec) = -1 ENOENT (No such file or directory) stat("mini", {st mode=S IFDIR|0755, st size=1024, .}) = 0 stat("mini/desktop.ini", 0xbffff7ec) = -1 ENOENT (No such file or directory) open("mini", O RDONLY) = 5 fcntl(5, F SETFD, FD CLOEXEC) = 0 fstat(5, {st mode=S IFDIR|0755, st size=1024, .}) = 0 lseek(5, 0, SEEK CUR) = 0 SYS 141(0x5, 0xbfffdbbc, 0xedc, 0xbfffdbbc, 0x80ba708) = 196 lseek(5, 0, SEEK CUR) = 1024 SYS 141(0x5, 0xbfffdbbc, 0xedc, 0xbfffdbbc, 0x80ba708) = 0 close(5) = 0 stat("mini/desktop.ini", 0xbffff86c) = -1 ENOENT (No such file or directory) write(3, "