i
i “rendszergazda-I” — 2005/3/23 — 11:39 — page 178 — #178
i
178
i
Be- és kijelentkezés
8.2.5. A saját könyvtár automatikus létrehozása Néhány esetben szükséges lehet a felhasználó saját könyvtárának létrehozása a belépéskor. Dönthetünk például úgy, hogy a felhasználók nyilvántartását egy központi NIS kiszolgálón tartjuk, a saját könyvtárakat azonban nem. Ez esetben minden felhasználónak a belépéskor létrehozhatjuk a saját könyvtárát, így az adott számítógépen azoknak lesz saját könyvtáruk, akik már használták a gépet. u PAM modullal ellen˝ orizhetjük és hozBelépéskor a * ) nev˝ hatjuk létre a felhasználó saját könyvtárát. Használhatjuk például a következ˝ o bejegyzést a megfelel˝ o helyen:
! "
)+) ) * ) F ; ; 88
A modul els˝ o paramétere azt fogja eredményezni, hogy a saját könyvtár létrehozásakor a alkönyvtár tartalma is bemásolódik a saját könyvtárba (ez az alapértelmezés is). A második paraméter azt eredményezi, hogy a saját könyvtár és a benne található könyvtárbejegyzések létrehozásához a 88 maszk kivonódik a jogokból. Ez azt eredményezi, hogy a csoporttulajdonosnak és a többi felhasználónak semmilyen joga nem lesz az adott könyvtárbejegyzésekre.
8.3.
A lemezkorlát
A lemezkorlát (quota, kvóta) nem tartozik a Linux-PAM felügyelete alá, azaz a lemezkorlátot nem a Linux-PAM segítségével kezeljük, mégis szerencsés itt, a biztonsági házirend témakörében tárgyalnunk. A lemezkorlát az állományrendszer része, felhasználók által foglalható er˝ oforrások korlátozására használható[26]. A felhasználók által felhasználható háttértárterületet korlátoznunk kell, hiszen a háttértáraink kapacitása véges. Ha nem korlátoznánk a felhasználható területet, egyes felhasználók a háttérterület egészét feltöltve elvehetnék a többiek el˝ ol a háttértárak használatának lehet˝ oségét. A lemezkorlát kezelése egyszer˝ u. A rendszermag minden írási m˝ uvelet el˝ ott ellen˝ orzi, hogy a felhasználó számára elegend˝ o hely áll-e rendelkezésre a háttértáron, és az írást csak akkor hajtja végre, ha a felhasználó még nem használta fel a rendelkezésre álló helyet. Ahhoz azonban, hogy a rendszermag minden írási m˝ uveletnél ellen˝ orizni tudja, hogy elegend˝ o hely áll-e a felhasználó rendelkezésére, folyamatosan nyilván kell tartania a felhasználó által használt lemezterület nagyságát. Nyilvánvaló, hogy nem olvashatja végig a rendszermag minden írás el˝ ott a teljes lemezterületet, hogy megtudja, mekkora területet foglalnak a felhasználó tulajdonában lév˝ o állományok összesen.
i
i i
i
i
i “rendszergazda-I” — 2005/3/23 — 11:39 — page 179 — #179
i
A lemezkorlát
i
179
A lemezkorlát tehát a következ˝ o lépések alapján m˝ uködik: 1. A rendszermag minden írási m˝ uvelet el˝ ott ellen˝ orzi a lemezkorlátnyilvántartásából, hogy a felhasználó számára mekkora lemezterület áll rendelkezésre, és ebb˝ ol a területb˝ ol mennyit használt a felhasználó. 2. Ha az alkalmazás által kért új lemezterület nem áll rendelkezésre, a rendszermag a megfelel˝ o hibakóddal visszautasítja az alkalmazás kérését. 3. Ha a kért lemezterület rendelkezésre áll, a rendszermag az írási m˝ uveletet elvégzi. 4. A rendszermag ezután a felhasználó által elfoglalt lemezterület nagyságát frissíti a lemezkorlát-nyilvántartásban. Ez jelenthet csökkentést és növelést is annak megfelel˝ oen, hogy az írási m˝ uvelet növelte vagy csökkentette a foglalt lemezterület nagyságát. Amint látjuk, a lemezkorlát kett˝ os nyilvántartás alapján m˝ uködik. A felhasználók állományai által valójában elfoglalt lemezterület nagysága mellett a lemezkorlát-nyilvántartás is tartalmazza ezt az értéket. Szerencsés esetben persze a nyilvántartott és a valós lemezfelhasználás megegyezik, bizonyos esetekben azonban el˝ ofordulhatnak problémák. A lemezkorlát bevezetésekor – amikor a felhasználók már rendelkeznek állományokkal, de a nyilvántartás még nincs használatban – a lemezkorlát-nyilvántartást létre kell hozni, és a használat során is érdemes néha ellen˝ orizni az összhangot. Mind a kezdeti nyilvántartás, mind pedig az ellen˝ orzés id˝ oigényes folyamat, hiszen ilyenkor a foglalt lemezterületet végig kell olvasni, és a felhasználók által elfoglalt területösszeget ki kell gy˝ ujteni. Az XFS állományrendszer a lemezkorlátot különleges módon kezeli, ezért az XFS állományrendszert a kés˝ obbiekben külön tárgyaljuk.
8.3.1. A lemezkorlát kezdeti beállítása A lemezkorlát m˝ uködéséhez el kell végeznünk a lemezkorlát kezdeti beállítását. A kezdeti beállítás során a szükséges állományokat létrehozzuk, a szükséges beállításokat elvégezzük, és a felhasználók lemezhasználatának nyilvántartását elkészítjük. Vegyük sorra, hogy mi szükséges a lemezkorlát m˝ uködéséhez: 1. A lemezhasználat nyilvántartása szabályos állományokban történik, amelyek a védett lemezrész gyökérkönyvtárában helyezkednek el. A szabályos állományok neve:
+ ) Lemezhasználat-nyilvántartás felhasználónként régebbi lemezkorlátrendszer esetében. Ma már általában nem használjuk.
+ ) Lemezhasználat-nyilvántartás felhasználói csoportonként régebbi lemezkorlátrendszer esetében. Ma már általában nem használjuk.
i
i i
i
i
i “rendszergazda-I” — 2005/3/23 — 11:39 — page 180 — #180
i
180
i
Be- és kijelentkezés
+ ) Lemezhasználat-nyilvántartás felhasználónként újabb lemezkorlátrendszer esetében.
+ ) Lemezhasználat-nyilvántartás felhasználói csoportonként újabb lemezkorlátrendszer esetében. Akkor van szükségünk erre az állományra, ha a lemezhasználatot nem csak felhasználónként, hanem felhasználói csoportonként is korlátozni kívánjuk, de ha már elkészítjük a lemezkorlát-nyilvántartást, érdemes a felhasználói csoportonkénti nyilvántartást is elkészíteni. Az állományok jogosultságait úgy kell beállítanunk, hogy azokat csak ˝ viszont írásra és olvasásra is. Legyen a tua rendszergazda érhesse el, o lajdonos a rendszergazda, a jogokat pedig állítsuk 0600-ra. Ha a lemezkorlátot nyilvántartó szabályos állományokat más felhasználók is elérhetik, a lemezkorlát esetleg nem fog m˝ uködni, azaz a túlságosan megenged˝ o jogok is problémát jelenthetnek. 2. A lemezkorlát használatát a lemezrész beillesztésekor jeleznünk kell. A legegyszer˝ ubb, ha az adott lemezrészhez tartozó állományrendszer-táblázat ( ) bejegyzésnél szerepelnek az alábbi állományrendszerkapcsolók:
)+ A felhasználónkénti lemezkorlát bekapcsolása. )+ A felhasználói csoportonkénti lemezkorlát bekapcsolása. Valójában ezeket a kapcsolókat a program figyelmen kívül hagyja, és átadja a rendszermagnak, amely gondoskodik a lemezkorlát kezelésér˝ ol. Ha azonban hibásan gépeljük be a kulcsszavak valamelyikét, akkor a nem hagyja figyelmen kívül a kulcsszót, megpróbálja értelmezni (ami valószín˝ uleg nem fog sikerülni), és nem illeszti be az állományrendszert. Ha tehát egyetlen bet˝ ut is elrontunk a kulcsszavak begépelésekor és újraindítjuk a számítógépet, azt valószín˝ uleg csak szervizüzembe kapcsolással tudjuk helyreállítani (lásd a 5.4. példát). 3. A lemezkorlát-nyilvántartás kezdeti elkészítése a + program segítségével történhet. Gondoskodnunk kell arról, hogy a lemezkorlát-nyilvántartás kezdeti kitöltése közben a felhasználók és az id˝ ozített feladatok ne írjanak a lemezrészre, hiszen ha a nyilvántartás elkészítése során megváltozik a lemezrész tartalma, a nyilvántartás nem a valós adatokat fogja tartani. (Valójában a nyilvántartás elkészítésének kezdete és a lemezkorlát kezelésének bekapcsolása között eltelt id˝ oben kell megvédenünk a lemezrészt az írástól.) Természetesen túl nagy katasztrófa nem történik akkor sem, ha a nyilvántartás elkészítése közben történik némi írás a lemezrészre, csak nem o futtatásáig. lesz pontos a nyilvántartás, legalábbis a + következ˝
i
i i
i
i
i “rendszergazda-I” — 2005/3/23 — 11:39 — page 181 — #181
i
A lemezkorlát
i
181
8.5. tábla: quotacheck Lemezkorlát-nyilvántartás ellen˝ orzését, javítását és elkészítését végz˝ o program.
+ % 5& ' * A program az állományrendszer gyökérkönyvtárában található + ), + ) vagy + ), + ) lemezkorlát-nyilvántartás kezelésére használható. Kapcsoló Jelentés Folyamatosan kiírja, hol tart a munkában. Csak a felhasználói lemezkorlátok kezelése (alapértelmezett). Csak a felhasználói csoportok lemezkorlátainak kezelése. Ne foglalkozzon a meglév˝ o nyilvántartással. . Írásra beillesztett állományrendszer kezelése.
(A rendszerindító héjprogramok valószín˝ uleg gondoskodnak arról, hogy a + néha lefusson, például akkor, ha az állományrendszert ellen˝orizni kell.) 4. A lemezhasználat folyamatos nyilvántartását és a lemezkorlát érvényesítését a + program segítségével be kell kapcsolnunk. A számítógép bekapcsolásakor ezt a rendszerindító héjprogramok valószín˝ uleg elvégzik, ha nem, akkor magunknak kell err˝ ol gondoskodnunk. Ha valamilyen oknál fogva úgy döntünk, hogy a lemezkorlát kezelését ki szeretnénk kapcsolni, használhatjuk a + programot, vagy a + kapcsolóját, ami valójában ugyanazzal a hatással jár, hiszen a + és a + ugyanaz a program. A lemezkorlát kezdeti beállítása után az m˝ uködni kezd, de az írást egyetlen felhasználó számára sem fogja megtiltani, mert alapértelmezés szerint a felhasználók számára nincsenek korlátok beállítva. Ha tehát elvégeztük a kezdeti beállítást, az egyes felhasználók és felhasználói csoportok által foglalt lemezterület lekérdezhet˝ o, de a háttértárat csak akkor tudjuk megvédeni, ha minden felhasználó számára korlátot állítunk be. A következ˝ o példa bemutatja, hogyan végezhetjük el a lemezkorlát kezdeti beállítását a gyakorlatban. 74. példa Szeretnénk az általunk üzemeltetett számítógépen bevezetni a lemezkorlátot. A lemezrészek kialakításánál az egyszer˝ uség kedvéért a és a könyvtárnak készítettünk külön lemezrészt. Mivel az elektronikus levelek a )
könyvtárba érkeznek, mindkét lemezrészt szeretnénk lemezkorláttal védeni.
i
i i
i
i
i “rendszergazda-I” — 2005/3/23 — 11:39 — page 182 — #182
i
182
i
Be- és kijelentkezés
Els˝ o lépésként hozzuk létre az + ) és az + ) állományokat mindkét lemezrész gyökérkönyvtárában, és állítsuk be a jogokat, hogy csak ˝ket: a rendszergazda érhesse el o - & - &
1-G- ) 1-G$)-* 1-G- ) 1-G$)-* &1-G- ) &1-G$)-* &1-G- ) &1-G$)-*
Következ˝ o lépésként gondoskodjunk róla, hogy a lemezrészek beillesztésénél az )+ és a )+ állományrendszer kapcsolók be legyenek kapcsolva. Módosítsuk a állományrendszer-táblázatot, és helyezzük el a megfelel˝ o sorok negyedik oszlopában a kapcsolókat:
O !O O !O
Most újrailleszthetjük a lemezrészeket, hogy az újonan elhelyezett kapcsolók érvénybe lépjenek: &- :)&- &- :)&- & &- * (),:- )1-:$)*1-+ & * (),:- )1-:$)*1-+
A következ˝ o lépés a lemezkorlát-nyilvántartás frissítése lesz. Miel˝ ott ezt elvégeznénk, gondoskodnunk kell arról, hogy a frissítés során ne módosuljon a lemezrész tartalma. Ezt elérhetjük például úgy, hogy egyfelhasználós módba kapcsolunk az ! parancs kiadásával. Miután gondoskodtunk róla, hogy a lemezrészek tartalma ne módosuljon a munka során, végezzük el a lemezkorlát-nyilvántartás frissítését. Ez mindkét lemezrészen mind a felhasználókra, mind pedig a csoportokra vonatkozó nyilvántartás frissítését jelenti egy-egy parancs kiadásával. 1-" 1-" 1-" 1-"
8
$
8
$
8 &
8 &
A lemezkorlát-nyilvántartás frissítése hosszú folyamat lehet, hiszen ilyenkor ujtse a felhasza + a teljes állományrendszert végigolvassa, hogy kigy˝ nálók és a csoportok által használt területek nagyságát. A következ˝ o lépés során be kell kapcsolnunk a lemezkorlát figyelését és frissítését a + program segítségével, de lehet, hogy megtakaríthatunk némi
i
i i
i
i
i “rendszergazda-I” — 2005/3/23 — 11:39 — page 183 — #183
i
A lemezkorlát
i
183
8.6. tábla: quotaon A lemezkorlát figyelésének és nyilvántartásának bekapcsolása.
+ % 5& ' * A program az el˝ oz˝ oleg létrehozott lemezkorlát-nyilvántartás használatát kapcsolja be. A használat a lemezkorlát-nyilvántartás folyamatos frissítését és betartatását vonja maga után. Kapcsoló Jelentés Felhasználókra vonatkozó korlát bekapcsolása (alapértelmezett). Felhasználói csoportokra vonatkozó korlát bekapcsolása. Nem kapcsolja be a lemezkorlátot, és kiírja az állapotát. A lemezkorlát kikapcsolása.
munkát azzal, ha egyszer˝ uen újraindítjuk a számítógépet. Az újraindítással ellen˝ orizhetjük azt is, hogy a rendszerindító héjprogramok a lemezkorlát figyelését megfelel˝ oen bekapcsolják-e a számítógép bekapcsolása után. A rendszerindítás után bejelentkezve a + program segítségével ellen˝ orizhetjük, hogy a lemezkorlát figyelése és frissítése mindkét lemezrészen bekapcsolódott-e. 1- * $)-* 1- (+ - ) 1- (+ 1- * & $)-* 1- & (+ - ) 1- & (+
Ha a bemutatott módon sikerült elindítanunk a lemezkorlátot, már csak arról kell gondoskodnunk, hogy az egyes felhasználóknak (és esetleg az egyes csoportoknak) a megfelel˝ o korlátok be legyenek állítva. A bekapcsolt lemezkorlát önmagában még nem akadályoz meg senkit a lemez írásában, ahhoz a megfelel˝ o korlátokat be kell állítanunk minden felhasználó számára.
8.3.2. Lemezkorlát rendelése felhasználóhoz A következ˝ o feladatunk a felhasználók és felhasználói csoportok lemezhasználatának korlátozása. Minden felhasználónak és ha kívánjuk minden csoportnak egyenként kell beállítanunk a lemezkorlátot. (Egy ügyes BASH program természetesen mérhetetlenül meggyorsíthatja a folyamatot.)
i
i i
i
i
i
“rendszergazda-I” — 2005/3/23 — 11:39 — page 184 — #184
i
184
i
Be- és kijelentkezés
A lemezkorlátok beállítására az + szolgál. Ez a program meglehet˝ osen érdekesen m˝ uködik. El˝ oször létrehoz egy ideiglenes állományt, amelyben elhelyezi az aktuális beállításokat, majd elindít egy szövegszerkeszt˝ ot, amellyel szerkeszthetjük az állományt. Amikor kilépünk a szövegszerkeszt˝ ob˝ ol, az + megvizsgálja, hogy módosítottunk-e az állományon, és ha igen, érvényesíti a módosításokat. A szövegszerkeszt˝ ob˝ ol való kilépés után tehát nem kell tennünk semmit, ovel mentett állományt. az + automatikusan kezeli a szövegszerkeszt˝ Az + miel˝ ott elindítaná a szövegszerkeszt˝ ot, megvizsgálja az B?>ATL9 és a B@AOVJ környezeti változót. Ha valamelyik változó létezik, az + feltételezi, hogy a kedvenc szövegszerkeszt˝ onk indítását végz˝ o parancsot helyeztük el a változóban.
Léteznek más programok is, amelyek hasonlóképpen viselkednek, azaz feltételezik, hogy az B?>ATL9 vagy a B@AOVJ környezeti változók valamelyike a felhasználó kedvenc szövegszerkeszt˝ ojének nevét tartalmazza. A lemezkorlát-rendszer segítségével a felhasználók (és felhasználói csoportok) lemezterület-felhasználását korlátozhatjuk, beállíthatjuk, hogy mekkora lemezterületet és hány mutatópontot használhatnak fel az egyes felhasználók. A programok a lemezterületet a következ˝ o két kulcsszóval jelölik:
A felhasználható lemezblokkok száma. A felhasználható blokkok száma meghatározza, hogy a felhasználók által birtokolt állományok és könyvtárak mekkora adatterületet használhatnak fel. A blokkok valós méretét a használt háttértár típusa befolyásolhatja.
A felhasználható mutatópontok száma. Mint azt már láttuk, minden könyvtárbejegyzéshez egy mutatópont tartozik. A mutatópontok számát is korlátozhatjuk a lemezkorlát-rendszerrel, hogy a felhasználók ne tölthessék fel a mutatópont területeket üres állományok létrehozásával. Az adatblokkok számát és a mutatópontok számát er˝ os és gyenge korláttal láthatjuk el:
A gyenge korlátokat a felhasználók átléphetik, de csak id˝olegesen. Amikor a felhasználó átlépi valamelyik gyenge korlátot, a méltányossági id˝ o (grace period) figyelése bekapcsolódik. A felhasználók nem használhatnak újabb lemezterületet a méltányossági id˝ o letelte után, csak akkor, ha az er˝ oforrás-felhasználásukat újra a lágy korlát alá csökkentik.
) Az er˝os korlátot senki sem lépheti át. Az alkalmazás, amely újabb lemezterületet próbál meg foglalni az er˝ os korlát felett, kudarcra van ítélve.
i
i i
i
i
i
i
! * # *
A lemezkorlát
i
185
A következ˝ o példa bemutatja, hogyan állíthatjuk be egy felhasználó számára a lemezkorlátot. 75. példa A lemezkorlát kezdeti beállítása után szeretnénk a lemezfelhasználást korlátozni egy felhasználó számára. Szeretnénk, ha ezt a szövegszerkeszt˝ ovel tehetnénk meg, mert az a kedvenc szövegszerkeszt˝ o programunk. Állítsuk be a szövegszerkeszt˝ ot jelöl˝ o környezeti változót és indítsuk el az + programot a következ˝ o parancsokkal: *) >.4E/V<& 1- I
Ekkor a szövegszerkeszt˝ o elindul és a következ˝ ohöz hasonló sorokat tartalmazza:
(
7&2 O 3 & 4 B&+ $2 & " *
Könnyedén megérthet˝ o az állomány tartalma, láthatjuk az egyes állományrendszereket, a gyenge és er˝ os korlátokat, amelyek a felhasználható adatblokkokra és a mutatópontokra vonatkoznak. Láthatjuk azt is, hogy a felhasználó az adott pillanatban mennyi er˝ oforrást használ az egyes lemezrészeken belül. Az állomány szerkesztése után mentenünk kell azt és egyszer˝ uen ki kell lépnünk a szövegszerkeszt˝ ob˝ ol. A lemezkorlát beállításának bemutatott módja kissé nehézkes, semmiképpen nem használható, ha sok felhasználó számára szeretnénk a lemezkorlátot beállíové teszi a tani. Ilyen esetben a + kapcsolóját használhatjuk, ami lehet˝ lemezkorlát beállításainak másolását egyik felhasználótól a másikig. Ezt mutatja be a következ˝ o példa. 76. példa Szeretnénk több felhasználó számára is ugyanazokat a lemezkorlátbeállításokat érvényesíteni. Nyilvántartásba vettünk egy felhasználót, és beállítottuk számára a lemezkorlátokat, amelyeket szeretnénk a többi felhasználó számára is érvényesíteni. A következ˝ o egyszer˝ u példaprogram átmásolja a lemezkorlát-beállításokat az összes felhasználó számára, akiknek a nevét paraméterként megkapja:
(
#, $&$ B18GaGN8;G%W W N8;\15N8%
i
i i
i
i
i “rendszergazda-I” — 2005/3/23 — 11:39 — page 186 — #186
i
186
i
Be- és kijelentkezés
8.7. tábla: setquota A felhasználók számára érvényes lemezkorlát beállítását végz˝ o program.
+ % 5& '5 + '5 ' * A program elindítja az B?>ATL9 vagy B@AOVJ környezeti változóban jelölt szövegszerkeszt˝ ot a felhasználó vagy felhasználói csoport lemezkorlátbeállításainak módosítására. Kapcsoló Jelentés Felhasználó lemezkorlátjának beállítása (alapértelmezett). Felhasználói csoport lemezkorlátjának beállítása. felh A felhasználó lemezkorlátjainak mintaként való felhasználása.
" ) *
IG8
A program 3. sorában egy változóban elhelyezzük a beillesztési pontok listáját, amelyeken a lemezkorlátot érvényesíteni akarjuk, a 4. sorban pedig elhelyezzük egy változóban a mintaként használt felhasználó felhasználói nevét. A program további soraiban egy ciklussal végigjárjuk az összes paraméterként kapott felhasználói nevet, és egy bels˝ o ciklussal az összes állományrendszert. A példaprogrammal kapcsolatban meg kell jegyeznünk, hogy bizonyos + -változatokkal ezt a feladatot sokkal egyszer˝ ubben is meg lehet oldani.
8.3.3. Jelentések készítése Fontos, hogy a lemezkorlátokat és a felhasználók által felhasznált lemezterület nagyságát folyamatosan figyeljük. Erre a célra több eszköz is a rendelkezésünkre áll. A + program segítségével a felhasználók megjeleníthetik a saját lemezfelhasználásukat és a rájuk vonatkozó lemezkorlátot, a rendszergazda pedig bármely felhasználó felhasználói nevét megadhatja paraméterként, hogy a felhasználók lemezkorlátait lekérdezze. A következ˝ o egyszer˝ u példa bemutatja, hogyan használhatja a rendszergazda a + programot.
i
i i
i
i
i “rendszergazda-I” — 2005/3/23 — 11:39 — page 187 — #187
i
i
187
A lemezkorlát
8.8. tábla: quota A lemezkorlát és a lemezhasználat lekérdezése.
+ % 5& % '5*& A felhasználók a program segítségével lekérdezhetik a lemezkorlátjukat, a rendszergazda pedig lekérdezheti bármelyik felhasználó lemezkorlátját. Kapcsoló Jelentés Felhasználói csoportok lemezkorlátjának lekérdezése. + Csak azokról a lemezrészekr˝ ol ad információkat, ahol a felhasználó átlépte a gyenge korlátot.
77. példa Szeretnénk tudni, hogy egy bizonyos felhasználó lemezkorlátja milyen értékeket tartalmaz és mekkora területeket használ ez a felhasználó. Használjuk a + programot! 1- I . " 1- ) - ) I (- + A & " 1- & $)
1- & $)
A )+ programmal a rendszergazda egy-egy lemezrészr˝ ol készíthet összefoglaló jelentést, amelyben szerepel az összes felhasználó, aki az adott lemezrészen adatokat tárol. Ezt a programot mutatja be a következ˝ o példa. 78. példa Szeretnénk részletes jelentést kapni az egyik lemezrészr˝ ol. Használjuk a )+ programot a megfelel˝ o beillesztési pont megadásával! )*1-
& === V*) ) - ) 1- 9" $) & R 4 $) & 9" & A & ; ) - ) $) - ) $)
)
8 **
8 " I
)
i
i i
i
i
i “rendszergazda-I” — 2005/3/23 — 11:39 — page 188 — #188
i
188
i
Be- és kijelentkezés
8.9. tábla: repquota A program segítségével jelentést készíthetünk a lemezkorlát állásáról.
)+ % 5& ' * A program segítségével az adott lemezrészen érvényes lemezkorlátokról és a felhasználók által elfoglalt lemezterületek nagyságáról kaphatunk jelentést szöveges táblázat formájában. Kapcsoló Jelentés Azokról a felhasználókról is jelenjen meg információ, akik nem használnak területet. Az értékek kerekítve, mértékegységgel jelenjenek meg.
8.4.
A karakteres munkafelület beállításai
A karakteres munkafelületen a legfontosabb a karakterek alakjának és a billenty˝ ukiosztásnak a beállítása. Különösen fontosak ezek a kérdések akkor, ha magyar nyelv˝ u szövegeket akarunk kezelni, hiszen a magyar nyelv különleges ékezetes karakterek használatát is szükségessé teszi. A következ˝ o oldalakon arról olvashatunk, miképpen állíthatjuk be a GNU/Linux rendszert úgy, hogy magyar nyelv˝ u szövegeket is kezelhessünk.
8.4.1. Karakterkódolási szabványok A UNIX rendszereken használt karakterkódolási szabványok az ASCII (American Standard Code for Information Interchange, amerikai szabványos kód információátvitelre) szabványra épülnek. Az ASCII szabvány eredetileg 7 bites karakterkódolást használt, amely 128 féle karakter kódolására tette képessé a szabványt. Ez elegend˝ o volt a szabvány eredeti céljainak megvalósítására, de kevés a többnyelv˝ u Európa számára. A szabványt a nyugat-európai nyelvek számára 8 bites kódolássá b˝ ovítették, így az alkalmassá vált 256 féle karakter kódolására. A 8 bites ASCII kódolást – megkülönböztetend˝ o az eredeti ASCII szabványtól – kiterjesztett ASCII kódolásként emlegették. A kiterjesztett ASCII szabvány alkalmas volt például a francia, német szövegek kódolására, de hiányoztak bel˝ ole például a lengyel, magyar, orosz nyelvek karakterei. Érdekes módon a magyar nyelv˝ u szövegek kódolására majdnem alkalmas a kiterjesztett ASCII, hiszen a francia és német nyelvekb˝ ol majdnem az összes ékezetes karakter összegy˝ ujthet˝ o, amelyet a magyar nyelv használ. Az öÖüüéÉáÁúÚóÓ bet˝ uk a kiterjesztett ASCII kódolással kódolhatók. Hiányoznak azonban ˝ és u ˝ bet˝ ˝O ˝U a kiterjesztett ASCII kódolásból az o uk, így a magyar nyelv˝ u szövegek kódolása lehetetlen a kiterjesztett ASCII kódolás felhasználásával.
i
i i
i
i
i “rendszergazda-I” — 2005/3/23 — 11:39 — page 189 — #189
i
A karakteres munkafelület beállításai
i
189
˜ A kiterjesztett ASCII kódolás tartalmazza a ô Ô és õ Õ, valamint ûÛ˜ uU ˝ uU ˝ bet˝ ˝O˝ karaktereket, amelyekkel az o uket szokás helyettesíteni, annak ellenére, hogy ez a legnagyobb otrombaság a könyvégetés után. A számítástechnika terjedésével szükségessé vált a kiterjesztett ASCII továbbfejlesztése a kelet európai országok nyelveinek irányába is. Erre a célra az els˝ o elterjedt szabvány az ISO-9958 kódnevet visel˝ o nemzetközi szabvány volt, amely a kiterjesztett ASCII továbbfejlesztésének tekinthet˝ o. Az ISO-8859 az ASCII szabványú kódolást magába foglalja, a kiterjesztett ASCII kódokat azonban továbbfejleszti. A szabvány alváltozatainak megfelel˝ oen többféle bet˝ ualak rendelhet˝ o a kiterjesztett ASCII kódú karakterekhez, azaz a 128-255 kódú karakterek alakja attól függ, hogy az ISO-8859 melyik alváltozata szerint értelmezzük a szöveget. Az ISO-8859-1 alváltozat a nyugat európai nyelvek kódolására használható, az ISO-8859-2 pedig többek közt alkalmas a magyar és a lengyel nyelv˝ u szövegek kódolására. Az ISO-8859-2 hivatalos elnevezése szerint kelet-európai kódolási szabvány, így Magyarország a szabvány készít˝ oi szerint Kelet-Európában van. A GNU/Linux régebbi változatai is támogatták az ISO-8859 szabványt, és – köszönhet˝ oen többek közt a lengyel GNU/Linux mozgalomnak – teljes mértékben alkalmasak voltak magyar nyelv˝ u szövegek készítésére. Az írott szövegek számítógépes kálváriája azonban ezzel nem ért véget. Az ISO8859 szabvány sok nyelvet támogat ugyan, de nem minden nyelvet! A szabvány egyes alváltozatai közti különbségek ráadásul sok problémát okoztak, a szöveg bet˝ uinek alakjai, a szöveg jelentése ugyanis attól függ, hogy a szabvány melyik alváltozatát használjuk a megjelenítésre. Nyilvánvaló, hogy el˝ obb-utóbb meg kellett jelennie egy egyesített szabványnak, amely bolygónk minden nyelvét támogatja, a szövegek értelmezését egyértelm˝ uen el˝ oírja. A nagy egyesített szabvány Unicode néven vált híressé. A Unicode mára jobbára elterjedtnek tekinthet˝ o, a könyv írásakor az alkalmazások, rendszerprogramok egyre népesebb családja támogatja. A számítógépes szakemberek bizakodva tekintenek a Unicode szabványra, amely a több évtizedes huzavona után a végs˝ o megoldást jelentheti a bet˝ ukódolás kérdéskörében. Ugyanakkor persze sokan ellenségesen fogadják, hiszen amíg nem terjed el, minden szabvánnyal csak a gond van. A Unicode szabvány több kódolási módszert fogad el, amelyeket az UTF (unicode transformation format, Unicode átalakítási formátum) rövidítéssel és a legkisebb használt kódszavak hosszával jelölünk: UTF-32 A kódolás minden egyes karakter kódolására 32 bitet használ. Egy angol nyelv˝ u szöveg – amelynek karakterei alacsony érték˝ u kódot kaptak – például éppen négyszer annyi helyet foglal UTF-32 kódolás esetén,
i
i i
i
i
i “rendszergazda-I” — 2005/3/23 — 11:39 — page 190 — #190
i
190
i
Be- és kijelentkezés
8.10. tábla: loadkeys A rendszermag által használt billenty˝ ukiosztási táblázat betöltése.
% 5& % & Kapcsoló Jelentés Az alapértelmezett állomány betöltése.
mint egy ASCII kódolású állományban. Talán nem véletlen, hogy ez az ábrázolási forma nem terjedt el. UTF-16 A kódolás az alacsonyabb kódú karakterek tárolására 16 bitet, a magasabb kódú karakterek kódolására 32 bitet használ. Ez az módszer sikeresebb, mint az UTF-32, de nem ez a Unicode szabványú kódok legelterjedtebb ábrázolása. UTF-8 A kódolás az alacsony kódú karakterek kódolására 8 bitet használ, a magasabb kódú karakterek kódolására pedig többet. A leghosszabb egy karaktert jelz˝ o kód 6 bájtos. A Unicode által használt 8 bites kódok megegyeznek az ASCII kódolású karakterek kódjaival, így egy angol nyelv˝ u ASCII kódolású szöveg egyben UTF-8 kódolású is. Minden bizonnyal ez az oka annak, hogy a Unicode ábrázolások közül az UTF-8 a legelterjedtebb. A GNU/Linux terjesztések mai modern változatainak sok rendszerprogramja és alkalmazása támogatja az UTF-8 kódolást, de még nem mondhatjuk, hogy a rendszer minden összetev˝ oje Unicode-támogatású volna. Mindenesetre úgy t˝ unik, a jöv˝ o az UTF-8 kódolásé.
8.4.2. A billenty˝ uzet beállítása A karakteres munkafelületen használt billenty˝ ukiosztást, amely meghatározza, hogy a lenyomott billenty˝ u hatására milyen karaktert kapjon a futó alkalmazás, a Linux rendszermag kezeli. A rendszermagból a billenty˝ ukiosztás táblázatát kiolvashatjuk és oda betölthetjük, így megváltoztatva a billenty˝ uzet viselkedését. A karakteres felületen érvényes billenty˝ ukiosztást a program kiolvassa a rendszermagból, és szöveges formában kiírja a szabványos kimenetére. ukiosztást A program a paraméterként kapott állományból a billenty˝ beolvassa, és betölti a rendszermagba. A és a ugyanazt a formátumot használja, így a segítségével kiolvasott billenty˝ ukiosztást a programmal beolvashatjuk.
i
i i
i
i
i “rendszergazda-I” — 2005/3/23 — 11:39 — page 191 — #191
i
A karakteres munkafelület beállításai
i
191
Az egyes GNU/Linux terjesztések el˝ ore elkészített billenty˝ ukiosztással vannak felszerelve a legtöbb nyelvhez és a legtöbb billenty˝ uzettípushoz. A program a telepített billenty˝ ukiosztások helyét ismeri, így ha a paraméterként megadott állomány nem található, a telepített billenty˝ ukiosztások között keresi a betöltend˝ o állományt.
ukiosztást a program segítsé79. példa Töltsük be a ! ! billenty˝ gével! " - ?$ "" &* 1,) -G&*G$!
Ha kipróbáljuk a billenty˝ uzetet, azt tapasztaljuk, hogy a magyar ékezetes bet˝ uk elérhet˝ ok, az „y” bet˝ u a billenty˝ uzet közepén a fels˝ o sorban található (qwerty kiosztás). ukiosztást! Próbáljuk meg betölteni a billenty˝ " ?$ "" &* 1,)!-G&*G$!
Ha kipróbáljuk a billenty˝ uzetet, azt tapasztaljuk, hogy a billenty˝ uzet közepén a fels˝ o sorban most a „z” bet˝ u érhet˝ o el (qwertz kiosztás). (Ha az itt bemutatott parancsok hatására a billenty˝ uzetünk furcsa karaktereket produkál az ékezetes bet˝ uk helyett, valószín˝ uleg Unicode üzemmódot használunk, amelynek a beállítására még visszatérünk.) Nem elegend˝ oan azonban a billenty˝ ukiosztást beállítani, arról is gondoskodnunk kell, hogy a képerny˝ on a megfelel˝ o alakú karakterek jelenjenek meg. Karakteres képerny˝ on a megjelen˝ o bet˝ uk alakja a videókártya karaktertáblájából származik, azaz a megjelen˝ o karakterek formáját a videóáramkörökbe épített memóriában található bet˝ ukészlet határozza meg. A modern videókártyák (például a VGA szabvány szerinti kártyák) bet˝ ukészlete az új bet˝ ukészlet feltöltésével megváltoztatható. Ha tehát feltöltjük a megfelel˝ o bet˝ ukészletet, a megfelel˝ o formájú karakterek jelennek meg az egyes billenty˝ uk lenyomásakor. A karakteres munkafelület által használt bet˝ ukészlet megváltoztatására, a bet˝ ukészlet feltöltésére a ) program használható. A programnak paraméterként a betöltend˝ o bet˝ ukészlet nevét kell megadnunk.
ukész80. példa Töltsük be a program segítségével a ) !# bet˝ letet!
)
A program futtatása után a hatás azonnal megfigyelhet˝ o, a bet˝ uk alakja megváltozik.
i
i i
i
i
i “rendszergazda-I” — 2005/3/23 — 11:39 — page 192 — #192
i
192
i
Be- és kijelentkezés
8.11. tábla: dumpkeys A billenty˝ ukiosztást írja ki a szabványos kimenetére.
% 5& A program a karakteres felületen használatos billenty˝ ukiosztást kiolvassa a rendszermagból, és a szabványos kimenetre szöveges formában kiírja. Kapcsoló Jelentés Részletes információt ír ki, amelyben szerepelnek a program által használt karakternevek is. A program a billenty˝ ukiosztási táblázatot nem egyszer˝ usíti, miel˝ ott kiírná. ) ;név A karakterkódolás megadása $Z formában.
A Unicode kódolás használata karakteres felületen A modern GNU/Linux terjesztések általában támogatják a Unicode kódolás használatát a karakteres munkafelületen, s˝ ot sokszor ez az üzemmód az alapértelmezett. A különféle Unicode kódolások közül az UTF-8 kódolás a legelterjedtebb, a legtöbb alkalmazás és programkönyvtár ezt támogatja. A karakteres munkafelületen bekapcsolhatjuk a Unicode kódolást – billenty˝ ukiosztást és bet˝ ukészletet – a
* ) program segítségével, az alkalmazások számára pedig beállíthatjuk a Unicode kódolás használatát az BJ=*JJ vagy a BJNQ környezeti változó beállításával. Ezt mutatja be a következ˝ o példa. 81. példa Vizsgáljuk meg a BJNQ környezeti változó értékét, hogy megállapítsuk, milyen kódolást kell az alkalmazásoknak használniuk! ?NL -WD;G;EA
Amint látjuk, a változó az alkalmazások számára a magyar nyelvet és az UTF-8 kódolást írja el˝ o. Állítsuk be a karakteres munkafelületen a Unicode billenty˝ ukiosztást és a Unicode bet˝ ukészletet! -W )
A Unicode üzemmódot a
* program segítségével kapcsolhatjuk ki. Ha figyelmesen megvizsgáljuk, hogy mit csinál a
* ) program, akkor azt tapasztaljuk, hogy bekapcsolja ugyan a Unicode támogatást, de nem változtatja meg a billenty˝ uzet kiosztását. Ha magyar billenty˝ ukiosztást használtunk a program futtatása el˝ ott, a program futása után azt találjuk üzemben.
i
i i
i
i
i “rendszergazda-I” — 2005/3/23 — 11:39 — page 193 — #193
i
A karakteres munkafelület beállításai
i
193
A Unicode-támogatás bekapcsolása után azonban a programot a
kapcsolóval kell használnunk, és csak olyan bet˝ ukészletet használhatunk, ami a Unicode szabvány szerint készült. A legtöbb GNU/Linux terjesztés többféle billenty˝ ukiosztást és bet˝ ukészletet támogat a karakteres munkafelületen. Általában valamelyik beállítóállományban helyezhetjük el, hogy milyen billenty˝ uzetet és bet˝ ukészletet akarunk használni, a rendszer indításakor pedig automatikusan beállítódik a billenty˝ uzet és a bet˝ ukészlet.
Red Hat alapú rendszereken a ) nev˝ u állományban van elhelyezve a billenty˝ ukiosztás neve a BP?[TKJ? változóban. Az alapértelmezett billenty˝ ukiosztást úgy állíthatjuk be, hogy átírjuk az itt található értéket. Red Hat rendszereken az alapértelmezett bet˝ ukészlet, valamint az alapértelmezett nyelv és kódolás (például Unicode) a ! állományban található.
Debian alapú rendszereken a program a
alkönyvtárban található vagy
' állományból tölti be a billenty˝ ukiosztást a rendszer indításakor. Az alapértelmezés szerinti billenty˝ ukiosztást úgy állíthatjuk át, hogy a (vagy ') állományt felülírjuk. Debian alapú rendszereken a ) ) alkönyvtárban találhatók a karakteres felületen használt bet˝ uk. Itt a
állományban található BO=9??N*0LNT változó adja meg, hogy mi legyen a karakteres felület alapértelmezés szerinti bet˝ utípusa.
Saját billenty˝ ukiosztás létrehozása A legelterjedtebb számítógépek billenty˝ uzetének m˝ uködése alapjában véve igen egyszer˝ u. Amikor a billenty˝ uzeten lenyomunk egy gombot, akkor a billenty˝ uzet egy jelet küld a számítógép felé, amelyben jelzi, hogy egy billenty˝ ut nyomtunk le, és elküldi ennek a billenty˝ unek a letapogatási kódját (scan code). Ha elég sokáig tartjuk lenyomva a billenty˝ ut, a billenty˝ uzet ismételgetni kezdi a lenyomást jelz˝ o jelet és a letapogatási kódot. Amikor a billenty˝ ut felengedjük, a billenty˝ uzet újra elküldi a billenty˝ u letapogatási kódját és egy üzenetet, amelyben jelzi, hogy felengedtük a billenty˝ ut. Mindezeket a jeleket a rendszer Linux rendszermag fogadja, és a megfelel˝ o bet˝ ukóddá alakítja. A rendszermag gondoskodik arról is, hogy a megfelel˝ o alkalmazás kapja meg a lenyomott billenty˝ u által jelzett bet˝ ut.
i
i i
i
i
i
i
194
!
( # (
i
Be- és kijelentkezés
A letapogatási kód átalakítása bet˝ ukóddá igen fontos feladat, hiszen ez határozza meg, hogy az adott billenty˝ u lenyomása milyen bet˝ ut jelent, milyen nyelv˝ u billenty˝ uzetet használunk. Ha meg szeretnénk változtatni a billenty˝ ukiosztásban található valamelyik billenty˝ u jelentését, a következ˝ o lépéseket kell elvégeznünk: 1. Els˝ o lépésként ki kell olvasnunk a rendszermagból a táblázatot, amely a letapogatási kódokat bet˝ ukódokká alakítja, és egy állományban kell tárolnunk azt. 2. Meg kell tudnunk, hogy mi a letapogatási kódja annak a billenty˝ unek, amelyet módosítani szeretnénk. 3. Módosítanunk kell az állományban az adott letapogatási kód jelentését egy szövegszerkeszt˝ o programmal. 4. Végül vissza kell töltenünk a rendszermagba a billenty˝ ukiosztás táblázatát. A Linux rendszermagból a billenty˝ uzetkiosztást a program segítségével olvashatjuk ki. A program a szabványos kimenetre írja a táblázatot szöveges formában. A programnak sok kapcsolója van, számunkra azonban a ) a legfontosabb. Ezzel a kapcsolóval állíthatjuk be, hogy a program a táblázatot milyen szabvány szerint értelmezze. A kapcsoló után megadhatjuk a használt kódolási szabványt $Z formában. (Az Z helyén az 1–9 számok állhatnak.)
A ) valójában csak azt állítja be, hogy a rendszermagban elhelyezett kódokat a milyen módon fordítsa le szöveges karakternévvé. Ugyanaz a kód ugyanis más-más jelentéssel bír az AOL$ szabvány egyes alváltozataiban. A következ˝ o példa a magyar nyelv különleges ékezeteit is magába foglaló szabvány ( $") szerint olvassa ki a táblázatot: 82. példa Olvassuk ki a rendszermagban található billenty˝ ukiosztást az ISO8859-2 szabvány szerint, és vizsgáljuk meg az eredményül kapott szöveges táblázat els˝ o néhány sorát! A billenty˝ ukiosztást kiolvashatjuk a program segítségéve: -&*"
) < G
A kapcsoló hatására a program a teljes táblázatot kiírta. Ha ezt a kapcsolót nem adjuk meg, az állomány kisebb lesz, egyszer˝ ubb szabályokat tartalmaz, de a megértéséhez ismernünk kell az egyszer˝ usítési szabályokat, amelyeket a program a táblázat méretének csökkentésére használ. Az eredményül kapott állomány els˝ o néhány sora a következ˝ o formájú (az állomány sorait utólag tördeltük rövidebbre a F karakter segítségével):
i
i i
i
i
i
i
!
#
195
A karakteres munkafelület beállításai
( " ) *
W&** W 2+ ! ("* 2+ % 8! 8! ;T8! 2+ % 9&G+ $ ;T
8! 8! ;T8! !! 9&G+ $ ;T&&&
i
8!R 8!R ;T8! &&&R 9&G+ $R 9&G+ $
Amint látjuk, az elkészült állományban az els˝ o sorban olvasható a használt kódolási szabvány neve. A billenty˝ ukiosztás szöveges táblázatában a következ˝ o elemeket találhatjuk meg: ukódolási szabvány ne• A ) kulcsszó után megtaláljuk a használt bet˝ vét, ami igen fontos a billenty˝ ukiosztás értelmezése szempontjából. u• A kulcsszó után megtaláljuk, hogy a táblázat az eredeti billenty˝ kiosztás mely oszlopait tartalmazza. Azok az oszlopok, amelyek nem szereuség érdekében nem szerepelnek pelnek a kulcsszó után, az egyszer˝ a táblázatban. A kulcsszó után vessz˝ ovel elválasztva számokat és tartományokat sorolhatunk fel. A tartományokat a „-” karakterrel jelöljük. u jelentését adhatjuk meg. • A
kulcsszó után egy-egy billenty˝ A
kulcsszó után egy szám következik, amely az adott sorban leírt billenty˝ u letapogatási kódja. Az egyenl˝ oségjel után a billenty˝ u által létrehohozott bet˝ uket soroljuk fel a nevükkel. Tudnunk kell, hogy egy billenty˝ u sokféle bet˝ ut hozhat létre attól függ˝ oen, hogy milyen módosítóbillenty˝ ut nyomunk le a billenty˝ uvel egy id˝ oben. Minden módosítóbillenty˝ u – olyan billenty˝ u, amelyet a Linux rendszermag más billenty˝ uk jelentésének módosítására használ – rendelkezik egy értékkel (8.12). Az egyszerre lenyomott módosítóbillenty˝ uk értékét össze kell adnunk, és így kapjuk meg, hogy a billenty˝ ukiosztás táblázatának hányas oszlopában található a módosított billenty˝ u jelentése. A billenty˝ ukiosztás táblázatának megértését segíti a következ˝ o példa.
ukiosztás-részlet alapján állapít83. példa A 8.4.2. példában található billenty˝ uk egyszerre történ˝ o lenyomása suk meg, hogy az Alt + AltGr módosítóbillenty˝ miképpen módosítja a billenty˝ uk hatását! A billenty˝ ukiosztás részlete a következ˝ o:
i
i i
i
i
i “rendszergazda-I” — 2005/3/23 — 11:39 — page 196 — #196
i
196
i
Be- és kijelentkezés Módosító Shift AltGr Ctrl Alt
Bal Shift Jobb Shift Bal Ctrl Jobb Ctrl
Érték 1 2 4 8 16 32 64 128
8.12. táblázat. Módosítóbillenty˝ uk és értékeik
( " ) *
W&** W 2+ ! ("* 2+ % 8! 8! ;T8! 2+ % 9&G+ $ ;T
8! 8! ;T8! !! 9&G+ $ ;T&&&
8!R 8!R ;T8! &&&R 9&G+ $R 9&G+ $
Ha az AltGr és az Alt módosítókat egyszerre nyomjuk le, a 8.12. táblázat szerint 8 + 2 = 10 lesz a módosítóbillenty˝ uk által képviselt összeg. A billenty˝ ukiosztásban a kulcsszó után a nyolcadik helyen található a 10-es számjegy, vagyis az állomány nyolcadik oszlopában található meg az Alt + AltGr módosító által módosított érték. A 2-es kódú billenty˝ u például az Alt + AltGr hatására a . * bet˝ ut jelenti. A billenty˝ uzet letapogatási kódjainak megismerésére igen praktikus eszköz a , program, amely folyamatosan figyeli a billenty˝ uzetet, és ha lenyomunk vagy felengedünk egy billenty˝ ut, annak kódját a képerny˝ ore írja.
A , minden billenty˝ unek kiírja az értékét, tehát nincs olyan billenty˝ ukombináció vagy parancs, amellyel kiléphetünk a programból. A , programból kilépni – igen elmés módon – úgy lehet, hogy kis ideig nem nyomunk le egyetlen billenty˝ ut sem!
i
i i
i
i
i “rendszergazda-I” — 2005/3/23 — 11:39 — page 197 — #197
i
A karakteres munkafelület beállításai
i
197
8.4.3. Az egér használata karakteres felületen A karakteres felületen való egérhasználathoz a szolgáltatást kell elindítanunk. A rendszer használatáról b˝ ovebben olvashatunk a kézikönyvében. A tapasztalat azt mutatja, hogy a szolgáltatás a legtöbb esetben minden különösebb fennakadás nélkül m˝ uködik, néha azonban zavart okoz a grafikus felület egérkezelésében. Ha a grafikus felületen az egérmutató a mozgatása hatására furcsán ugrál a képerny˝ o egyik pontjáról a másikra, érdemes megpróbálnunk, hogy a hiba akkor is jelentkezik-e, ha a rendszert leállítjuk.
i
i i
i