ChrisShumwayÁtdolgozta: A UNIX alapjaiÁttekintésEz a fejezet a &os; operációs rendszer
alapvetõ funkcióit és parancsait mutatja be.
Az itt tárgyalásra kerülõ anyag nagy
része érvényes bármelyik más
&unix;-szerû operációs rendszer esetén
is. Ezért, ha már ismerjük az
említésre kerülõ ismereteket, minden
további gond nélkül átugorhatjuk ezt a
fejezetet. Azonban ha még teljesen ismeretlen
számunkra a &os;, minden bizonnyal ez lesz az, amit
alaposan át kell majd olvasnunk.A fejezet elolvasása során
megismerjük:az ún. virtuális konzolok
használatát &os; alatt;hogyan mûködnek együtt a &unix;
állományokra vonatkozó engedélyei
a &os; saját
kiegészítéseivel;egy &os; állományrendszer
alapértelmezett
kialakítását;a &os; lemezszervezését;hogyan csatlakoztassunk és válasszunk le
állományrendszereket;mik azok a folyamatok, démonok és
jelzések;mik azok a parancsértelmezõk, és
miként tudjuk megváltoztatni az
alapértelmezett bejelentkezési
környezetünket;hogyan használjuk az alapvetõ
szövegszerkesztõket;mik az eszközök és az
eszközleírók;&os; alatt milyen bináris formátumokat
használhatunk;szükség esetén hogyan olvassuk el a
megfelelõ man oldalakat.Virtuális konzolok és terminálokvirtuális konzolokterminálokA &os; számos módon használható.
Ezek közül az egyik az, ha parancsokat
gépelünk be a szöveges terminálon.
Így érhetõ el egyszerûen a &unix;
operációs rendszer rugalmasságának
és erejének jelentõs része. Ebben a
szakaszban megtudhatjuk, mik azok a
terminálok és konzolok
és miként tudjuk ezeket &os; alatt
használni.A konzolkonzolHa nem állítottuk volna be, hogy a &os;
indulása során automatikusan induljon el a
grafikus felület is, akkor a rendszer egy bejelentkezõ
képernyõt fog mutatni közvetlenül a
rendszerindítás befejezõdése
után. Ekkor valami ilyesmit kell majd
látnunk:Additional ABI support:.
Local package initialization:.
Additional TCP options:.
Fri Sep 20 13:01:06 EEST 2002
FreeBSD/i386 (pc3.example.org) (ttyv0)
login:Egyes rendszereken ugyan némileg eltérhetnek
az üzenetek, de hasonlót kell látnunk.
Minket most az utolsó két sor érdekel. Az
utolsó elõtti sorban ez olvasható:FreeBSD/i386 (pc3.example.org) (ttyv0)Ez a sor arról értesít minket, hogy a
rendszerünk éppen most indult el: egy
&os; konzolt látunk, amely egy &intel; x86
architektúrájú processzoron fut
Erre utal pontosan az i386
jelzés. Még abban az esetben is az
i386 kiírást fogjuk
látni, ha a &os;-t konkrétan nem is az &intel;
386-os processzorán futtatjuk. Itt ugyanis nem a
processzorunk típusát, hanem annak
architektúráját
láthatjuk.. A gépünk neve (mivel minden &unix;-os
gép rendelkezik egy névvel)
pc3.example.org, és ennek a
rendszerkonzolját látjuk most éppen
— a ttyv0
terminált.Végezetül az utolsó sor mindig:login:Ez az a rész, ahova a &os;-be
történõ bejelentkezéshez meg kell adnunk
a felhasználói nevünket (user
name). A következõ szakaszban errõl
olvashatunk.Bejelentkezés a &os;-beA &os; egy többfelhasználós,
többfeladatos rendszer. Így hívják
hivatalosan azokat a rendszereket, amelyeket többen tudnak
használni és egyetlen
számítógépen egyszerre rengeteg
programot képesek futtatni.Minden többfelhasználós rendszernek
valamilyen módon meg kell tudnia
különböztetnie egy
felhasználóját a
többitõl. A &os;-ben (és minden más
&unix;-szerû operációs rendszerben) ezt
úgy érik el, hogy a programok futtatása
elõtt minden felhasználónak be kell
jelentkeznie a rendszerbe. Minden
felhasználó rendelkezik egy egyedi névvel
(ez a felhasználói név)
és ehhez egy titkos kulcssal (ez a
jelszó). A &os; a programok
futtatásához ezt a kettõt fogja
elkérni a felhasználótól.rendszerindító szkriptekEgybõl miután a &os; elindult és
befejezte a rendszerindításhoz használt
szkriptjeinek lefuttatását
A rendszerindító szkriptek olyan
programok, amelyek a &os; indulása során
maguktól lefutnak. Legfontosabb feladatuk
elvégezni a többi program
futtatásához szükséges
beállításokat, valamint
elindítani a háttérben
futtatandó, hasznos munkát végzõ
szolgáltatásokat., ez a kijelzés (vagy más néven
prompt) fog megjelenni és kér egy
érvényes felhasználói
nevet:login:A példa kedvéért most tegyük fel,
hogy a felhasználói nevünk
pgj. Az iménti prompthoz
írjuk be, hogy pgj és nyomjuk
le az Enter billentyût. Ezt
követõen meg kell jelennie egy másik promptnak
is, amely egy jelszót (password)
kér:login: pgj
Password:Most pedig gépeljük be pgj
jelszavát és nyomjunk utána egy
Enter billentyût. Vigyázzunk, hogy
a jelszót nem látjuk a
beírás során! Emiatt most ne
aggódjunk. Ezzel kapcsolatban elegendõ csak annyit
tudni, hogy mindez biztonsági
megfontolásokból történik.Amennyiben jól adtuk meg a jelszavunkat, sikeresen
bejelentkezünk a &os; rendszerébe és
készen állunk az összes elérhetõ
parancs kipróbálására.Bejelentkezés után a MOTD
(message of the day) vagy más néven a nap
üzenete jelenik meg, amelyet a parancssor
követ (egy #, $ vagy
% jel). Innen tudhatjuk meg, hogy
sikerült bejelentkeznünk.Több konzol használataA &unix; parancsokat egy konzolon is szépen ki tudjuk
adni, de a &os; egyszerre ugyebár több programot is
tud futtatni. A parancsok megadásához viszont
egyetlen konzol használata elég nagy
pazarlás lenne, hiszen egy olyan operációs
rendszer mint a &os;, tucatnyi programot képes futtatni
egy idõben. Ebben az esetben jelenthetnek számunkra
segítséget a virtuális
konzolok.A &os; beállítható úgy, hogy
sok-sok különféle virtuális konzolt
ajánljon fel számunkra. A virtuális
konzolok között a billentyûzeten a megfelelõ
gombok lenyomásával tudunk váltani.
Mindegyik konzolnak megvan a saját kimeneti
csatornája, és a virtuális konzolok
közti váltás folyamán a &os;
gondoskodik a billentyûzetrõl érkezõ
bemenet, valamint a monitorra irányított kimenet
megfelelõ kezelésérõl.A konzolok közti váltásra a &os;
külön billentyûkombinációkat tart
fenn
A &os; konzol- és
billentyûzetmeghajtóinak teljes, pusztán
mûszaki és precíz leírása a
&man.syscons.4;, &man.atkbd.4;, &man.vidcontrol.1; és
&man.kbdcontrol.1; man oldalakon olvasható. Itt most
nem bocsátkozunk részletekbe, azonban a
téma iránt érdeklõdõ
olvasóknak mindig érdemes fellapozniuk a
kapcsolódó man oldalakat, ahol
megtalálhatják az említett
eszközök részletesebb és bõvebb
leírását.. A &os;-ben a különbözõ
virtuális konzolok közti váltásra az
AltF1,
AltF2
billentyûket, az
AltF8
billentyûkombinációval
bezárólag használhatjuk.A konzolok közti váltogatás során
a &os; ügyel a képernyõ tartalmának
elmentésére és
visszaállítására. Ennek
eredményeképpen úgy
látszik, mintha több
virtuális képernyõn és
billentyûzeten adnánk parancsokat a &os;-nek.Az /etc/ttys
állományA &os; alapértelmezés szerint nyolc
virtuális konzollal indul. Ez azonban nem egy elõre
rögzített érték, hiszen
könnyedén testreszabhatjuk úgy a
telepített rendszerünket, hogy több vagy
esetleg kevesebb virtuális konzollal induljon el. A
virtuális konzolok száma és azok pontos
beállítása az
/etc/ttys állományon
keresztül adható meg.A &os; virtuális konzoljait tehát az
/etc/ttys állomány
megfelelõ módosításával tudjuk
behangolni. Itt minden egyes olyan sor, amely nem
megjegyzés (vagyis azok a sorok, amelyek nem a
# karakterrel kezdõdnek), tartalmazza az
egyes terminálok vagy virtuális konzolok
beállításait. Az állomány a
&os; telepítésében szereplõ,
alapértelmezett változata kilenc virtuális
konzol konfigurációját tartalmazza, amelyek
közül nyolc aktív. Ezek a
ttyv résszel kezdõdõ
sorok:# name getty type status comments
#
ttyv0 "/usr/libexec/getty Pc" cons25 on secure
# Virtual terminals
ttyv1 "/usr/libexec/getty Pc" cons25 on secure
ttyv2 "/usr/libexec/getty Pc" cons25 on secure
ttyv3 "/usr/libexec/getty Pc" cons25 on secure
ttyv4 "/usr/libexec/getty Pc" cons25 on secure
ttyv5 "/usr/libexec/getty Pc" cons25 on secure
ttyv6 "/usr/libexec/getty Pc" cons25 on secure
ttyv7 "/usr/libexec/getty Pc" cons25 on secure
ttyv8 "/usr/X11R6/bin/xdm -nodaemon" xterm off secureAz állományban található
oszlopok kimerítõ magyarázatát,
illetve a virtuális konzolok
beállításához
használható kapcsolókat a &man.ttys.5; man
oldalon olvashatjuk.Az egyfelhasználós mód
konzoljaAz egyfelhasználós mód
részletes leírása a ban található. Fontos
tudni, hogy amikor a &os;-t egyfelhasználós
módban futtatjuk, csupán egyetlen konzolunk van,
és a virtuális konzolok nem érhetõek
el. Egyébként az egyfelhasználós
mód erre vonatkozó
beállításai is megtalálhatóak
az /etc/ttys állományban.
Ehhez keressük meg a console
kezdetû sort:# name getty type status comments
#
# Ha a konzolt "insecure" (nem biztonságos) típusúnak választjuk meg,
# akkor a használatához az egyfelhasználós mód aktivilásá elõtt a rendszer
# kérni fogja a rendszeradminisztrátori jelszót.
console none unknown off secureA console felett látható
megjegyzés jelzi, hogy át tudjuk írni
ebben a sorban a secure
(biztonságos) értékû
paramétert insecure (nem
biztonságos) értékûre. Ilyenkor,
hogy ha a &os; egyfelhasználós módban
indul, kérni fogja a root
felhasználó (a rendszeradminisztrátor)
jelszavát.Vigyázzunk, amikor ezt az
értéket insecure-ra
állítjuk! Ha ugyanis
véletlenül elfeledkeznénk a
root jelszaváról, akkor
azzal az egyfelhasználós mód
használata is veszélybe kerülhet.
Habár ettõl függetlenül is
lehetséges, azokra számára mégis
nehéz helyzetnek bizonyulhat, akik nem mozognak
elég otthonosan a &os; rendszerindítási
folyamatának és a
hozzákapcsolódó programok
ismeretében.A videomód váltása konzolbanA &os; konzol alapértelmezett videomódja
átállítható 1024x768-ra,
1280x1024-re, vagy bármilyen olyan más
méretre, amit a videokártyánk
és monitorunk képes megjeleníteni. Az
eltérõ videomódok használatához
elõször újra kell fordítanunk a
rendszermagunkat az alábbi két
beállítás
hozzáadásával:options VESA
options SC_PIXEL_MODEMiután a rendszermagot sikeresen
újrafordítottuk a fenti
beállításokkal, a &man.vidcontrol.1;
segédprogrammal tudjuk megállapítani, hogy
a hardverünk milyen videomódokat enged
használni. Az összes támogatott
videomódot a következõképpen tudjuk
lekérdezni:&prompt.root; vidcontrol -i modeA parancs eredményeképpen tehát
megkapjuk a hardverünk által ismert
videomódokat. Ezek közül tudjuk
kiválasztani valamelyikõjüket és
root felhasználóként a
&man.vidcontrol.1; segítségével
beállítani:&prompt.root; vidcontrol MODE_279Ha az új videomód megfelel számunkra,
akkor ezt a beállítást az
/etc/rc.conf állományon
keresztül véglegesíthetjük is:allscreens_flags="MODE_279"EngedélyekUNIXA &os;, mivel a BSD &unix; egyik közvetlen
leszármazottja, számos &unix;-os alapötletre
épül. Ezek közül az elsõ és
talán a leginkább kihangsúlyozott, hogy a
&os; egy többfelhasználós
operációs rendszer. Egy olyan rendszer, amely
egyszerre több, egymástól független
feladattal foglalkozó felhasználót
képes kiszolgálni. A rendszer felelõs a
hardveres eszközök, a különféle
perifériák, a memória és a processzor
idejének minden egyes felhasználó
számára szabályos és pártatlan
megosztásáért és a feléjük
irányuló kérések
szervezéséért.Mivel a rendszer több felhasználót is
képes támogatni, az általa kezelt
erõforrások rendelkeznek engedélyek egy adott
halmazával, amelyek eldöntik, ki tudja ezeket olvasni,
írni és végrehajtani. Az engedélyek
háromszor három bit formájában
jelennek meg, amelyek közül az elsõ bitcsoport az
állomány tulajdonosára, a második az
állomány csoportjára, végül az
utolsó pedig a mindenki másra vonatkozó
engedélyeket tárolja.engedélyekállományok
engedélyeiÉrtékEngedélyKönyvtárlistában0Nem olvasható, nem írható, nem
hajtható végre---1Nem olvasható, nem írható,
végrehajtható--x2Nem olvasható, írható, nem
hajtható végre-w-3Nem olvasható, írható,
végrehajtható-wx4Olvasható, nem írható, nem
hajtható végrer--5Olvasható, nem írható,
végrehajthatór-x6Olvasható, írható, nem
hajtható végrerw-7Olvasható, írható,
végrehajthatórwxlskönyvtárakA &man.ls.1; kapcsolójának
segítségével megnézhetjük a
könyvtárak tartalmának részletes
listáját, amiben megjelennek az
állományok tulajdonosaira, csoportjára
és a mindenki másra vonatkozó
engedélyek is. Például ezt láthatjuk,
ha kiadjuk az ls -l parancsot egy
tetszõleges könyvtárban:&prompt.user; ls -l
total 530
-rw-r--r-- 1 root wheel 512 Sep 5 12:31 egyik
-rw-r--r-- 1 root wheel 512 Sep 5 12:31 masik
-rw-r--r-- 1 root wheel 7680 Sep 5 12:31 e-mail.txt
...A példabeli ls -l parancs
kimenetének elsõ oszlopa így bomlik fel:-rw-r--r--Az elsõ (bal szélsõ) karakter mondja meg,
hogy ez egy hagyományos állomány,
könyvtár, speciális karakteres eszköz,
socket vagy bármilyen más különleges
pszeudoállomány. Ebben az esetben a
- jelzi, hogy egy hagyományos
állományról van szó. A
következõ három karakter, ami ebben a
példában az rw-, adja meg az
állomány tulajdonosának engedélyeit.
Az ezután következõ három karakter, az
r-- mutatja az állomány
csoportjának engedélyeit. Az utolsó
három karakter, vagyis itt az r-- adja
meg a többiek engedélyeit. A kötõjel arra
utal, hogy az adott engedélyû
tevékenység nem engedélyezett. Tehát
ennél az állománynál az
engedélyek a következõek: a tulajdonosa tudja
olvasni és írni, a csoportja csak olvasni tudja,
ugyanígy bárki más. A fenti
táblázatnak megfelelõen az
állomány engedélyének kódja
644 lesz, ahol az egyes számjegyek
jelentik az állomány engedélyeinek
három elemét.Ez mind szép és jó, de vajon a rendszer
milyen módon kezeli az állományok
engedélyeit? A &os; a legtöbb hardveres eszközt
állománynak tekinti, amelyeket a programok meg
tudnak nyitni, tudnak róluk olvasni és adatokat
tudnak kiírni rájuk pontosan úgy, mint
bármilyen más állomány esetén.
Ezeket a speciális állományokat a
/dev könyvtárban
találjuk.A könyvtárakat is
állományokként kezeli, ezért azok is
rendelkeznek olvasási, írási és
végrehajtási engedélyekkel. Azonban a
könyvtárak végrehajtását
engedélyezõ bit némileg más
jelentéssel bír, mint az állományok
esetén. Amikor ugyanis egy könyvtárat
végrehajthatónak jelölünk meg, az arra fog
utalni, hogy bele tudunk lépni, vagyis hogy ki tudjuk
rá adni a
könyvtárváltás (cd,
change directory) parancsát. Ez továbbá arra
is utal, hogy az ismert nevû állományokhoz
hozzá tudunk férni (természetesen az egyes
állományok engedélyeinek
megfelelõen).A könyvtárak tartalmát ennek
megfelelõen viszont csak úgy láthatjuk, ha
olvasási engedéllyel rendelkezünk a
könyvtárra, míg egy általunk ismert
állomány törléséhez a
tartalmazó könyvtárhoz kell írási
és végrehajtási
engedélyekkel rendelkeznünk.Ezeken kívül még léteznek
további engedélyek is, de ezeket csak olyan
különleges esetekben használják, mint
például a
felhasználóváltó programok (setuid
program) vagy a ragadós könyvtárak (sticky
directory) létrehozása. Az állományok
engedélyeinek behatóbb megismeréséhez
és beállításához
mindenképpen nézzük át a &man.chmod.1;
man oldalt.TomRhodesÍrta: Szimbolikus engedélyekengedélyekszimbolikusA szimbolikus engedélyek (gyakran csak szimbolikus
kifejezések) az állományok és
könyvtárak engedélyeinek megadása
során a számok helyett karaktereket
használnak. A szimbolikus kifejezések (ki)
(hogyan) (milyen engedélyt) alakúak, ahol az
alábbi értékek adhatóak meg:ElemBetûJelentése(ki)utulajdonos(ki)gcsoport tulajdonos(ki)oegyéb(ki)amindenki (a világ)(hogyan)+engedély megadása(hogyan)-engedély visszavonása(hogyan)=engedély explicit
beállítása(milyen engedély)rolvasás(milyen engedély)wírás(milyen engedély)xvégrehajtás(milyen engedély)tragadós (sticky bit)(milyen engedély)sUID vagy GID állításaEzek az értékek a &man.chmod.1; paranccsal az
eddigiekhez hasonló módon
használhatóak, csak itt betûket kell
megadnunk. Például az alábbi paranccsal
akadályozhatjuk meg, hogy a tulajdonosán
kívül bárki hozzáférhessen az
ÁLLOMÁNY nevû
állományhoz:&prompt.user; chmod go= ÁLLOMÁNYAmennyiben egy állománnyal kapcsolatban
több változtatást is el
kívánunk végezni, össze tudjuk ezeket
fûzni egy vesszõkkel elhatárolt
felsorolásban:&prompt.user; chmod go-w,a+x ÁLLOMÁNYTomRhodesÍrta: A &os; állományjelzõiA korábban tárgyalt engedélyek mellett
még a &os; ismeri az ún.
állományjelzõk (file flags)
beállítását is. Ezek a
jelzõbitek egy további biztonsági és
irányítási szintet nyújtanak az
állományok felett, viszont a
könyvtárakra nem vonatkoznak.Ezek az állományjelzõk az
állományok felett további
vezérlést adnak a kezünkbe, aminek
révén gondoskodhatunk róla, hogy
akár még a root
felhasználó (a rendszer adminisztrátora) se
legyen képes állományokat
eltávolítani vagy módosítani.Az állományjelzõk értékei
egy egyszerû felületen keresztül, a
&man.chflags.1; segédprogrammal
változtathatóak meg. Például a
következõ paranccsal állíthatjuk a
rendszer törölhetetlen (undeletable)
jelzését az allomany1
állományon:&prompt.root; chflags sunlink allomany1A törölhetetlen jelzés
eltávolításához egyszerûen csak
írjuk be az elõzõ parancsot úgy, hogy a
sunlink paraméter elejére
még beszúrunk egy no
szövegrészt. Így:&prompt.root; chflags nosunlink allomany1Az állományokra éppen
érvényes jelzéseket az &man.ls.1; parancs
kapcsolójának
segítségével jeleníthetjük
meg:&prompt.root; ls -lo file1Ennek megfelelõen az eredménynek valahogy
így kellene kinéznie:-rw-r--r-- 1 trhodes trhodes sunlnk 0 Mar 1 05:54 allomany1Sok jelzés csak a root
felhasználón keresztül vehetõ fel vagy
távolítható el. Más esetekben
viszont az állomány tulajdonosa
állíthatja ezeket. A rendszergazdáknak
javasoljuk, hogy ezzel kapcsolatban a &man.chflags.1; és
&man.chflags.2; man oldalakat tanulmányozzák
át.TomRhodesKészítette: A setuid, setgid és sticky engedélyekA korábban említett engedélyeken
kívül létezik még további
három, amelyekkel minden rendszergazdának illik
tisztában lennie. Ezek név szerint a
setuid, setgid és
sticky típusú
engedélyek.Ezek a beállítások bizonyos &unix;
mûveletek esetén nagyon fontosak, mivel az
átlagos felhasználók számára
általában el nem érhetõ
funkciók használatát
támogatják. A
megértésükhöz elsõként a
felhasználók valódi és
effektív azonosítója közti
különbségeket kell tisztáznunk.A valódi azonosító
tulajdonképpen az a felhasználói
azonosító, amellyel a programot indítjuk el
vagy futás elõtt birtokoljuk. A program
futása közben azonban az effektív
felhasználói azonosítóval fut.
Például a &man.passwd.1; segédprogram a
jelszavát megváltoztatni
kívánó felhasználó
valódi azonosítójával indul,
miközben a jelszavakat tároló
adatbázis elérésékor már a
root felhasználó
effektív azonosítójával fut.
Ezáltal a privilégiumokkal nem rendelkezõ
felhasználók is meg tudják
anélkül változtatni a jelszavaikat, hogy a
Permission Denied hibaüzenettel
találkoznának.A &man.mount.8; nosuid
beállításával azonban az ilyen
típusú binárisok minden
különösebb jel nélkül
csõdöt fognak mondani. Mellesleg a &man.mount.8;
man oldala szerint ez az opció nem is teljesen
megbízható, mivel nosuid
wrapperek segítségével meg lehet
kerülni.Ahogy azt az alábbi példa is
szemlélteti, a setuid engedélyt a többi
elé egy négyes (4)
beszúrásával tudjuk
beállítani:&prompt.root; chmod 4755 suidexample.shA
suidexample.sh
állomány engedélyei ezt követõen
már így fognak megjelenni:-rwsr-xr-x 1 trhodes trhodes 63 Aug 29 06:36 suidexample.shMost már jól látható, hogy az
állomány tulajdonosához tartozó
engedélyek között a
végrehajthatóságot szabályozó
bit lecserélõdött egy s
bitre. Ennek köszönhetõen a
passwd parancshoz hasonló módon
kibõvített engedélyekkel leszünk
képesek futtatni programokat.Két terminál megnyitásával
mindezt valós idõben is megvizsgálhatjuk. Az
egyiken indítsuk el normál
felhasználóként a passwd
programot. Miközben a program várakozik az
új jelszó megadására, a másik
terminálon kérdezzük le a programhoz
tartozó felhasználói
információkat.Tehát az egyik terminálon a
következõt látjuk:&prompt.user; passwd
Changing local password for trhodes
Old Password:Eközben pedig a másikon:&prompt.root; ps aux | grep passwd
trhodes 5232 0.0 0.2 3420 1608 0 R+ 2:10AM 0:00.00 grep passwd
root 5211 0.0 0.2 3620 1724 2 I+ 2:09AM 0:00.01 passwdA passwd parancsot egyszerû
felhasználóként adtunk ki, azonban
jól látható, hogy valójában a
root felhasználó
azonosítójával fut.A setgid a setuid
engedélyhez hasonlóan mûködik,
egyedül annyiban tér el, hogy a csoportra
vonatkozó beállításokat
módosítja. Amikor egy alkalmazást vagy
segédprogramot ilyen engedéllyel futtatunk, akkor
az adott programot birtokló csoport engedélyeit
kapjuk meg.Úgy tudjuk állományokon
beállítani a setgid
típusú engedélyt, ha az iménti
példához hasonlóan a
chmod parancs hívásakor
még egy kettest (2) írunk az engedélyek
elé:&prompt.root; chmod 2755 sgidexample.shAz így beállított engedélyek az
elõbbihöz hasonló módon
szemlélhetõek meg, azonban ebben az esetben a
csoporthoz tartozó engedélyeknél jelenik
meg az s bit:-rwxr-sr-x 1 trhodes trhodes 44 Aug 31 01:49 sgidexample.shAz elõbb tárgyalt példákkal
kapcsolatban fontos megemlítenünk, hogy habár
a szkriptek is végrehajtható
állományok, nem fognak a valóditól
eltérõ effektív felhasználói
azonosítóval futni. Ennek oka abban
keresendõ, hogy a parancssori szkriptek nem
hívhatják a &man.setuid.2;
rendszerhívást.Ez a két speciális engedély (a
setuid és a setgid) a
programhoz tartozó engedélyek
kiterjesztésével csökkentheti
rendszerünk biztonságát. Ezzel szemben
viszont a harmadik bemutatandó speciális
engedély rendszerünk védelmének
erõsítésére szolgál: ez az
ún. sticky bit.Ha a sticky típusú
engedélyt könyvtárra adjuk meg, akkor a benne
levõ állományok törlését
kizárólag azok tulajdonosainak engedi. Ezzel az
engedéllyel lényegében a /tmp könyvtárhoz
hasonló nyilvános, bárki által
elérhetõ könyvtárakban
akadályozhatjuk meg az állományok idegen
felhasználók általi
törlését. Az engedély
beállításához egy egyest (1) kell a
többi elé fûznünk, mint
például:&prompt.root; chmod 1777 /tmpMost már az ls parancs
segítségével láthatjuk ennek a
hatását:&prompt.root; ls -al / | grep tmp
drwxrwxrwt 10 root wheel 512 Aug 31 01:49 tmpA sticky bit a
beállítások végén
felbukkanó t révén
azonosítható be.A könyvtárak elrendezésekönyvtárhierarchiaA &os; könyvtárszerkezetének ismerete
alapvetõ jelentõségû a rendszer
egészének megértése
szempontjából. Ezen belül is a legfontosabb a
gyökérkönyvtár, a /. Ez az
elsõ könyvtár, amelyet a rendszer a
rendszerindítás során csatlakoztat és
a többfelhasználós mód
elõkészítéséhez
elegendhetlenül szükséges alaprendszert
tartalmazza. A gyökérkönyvtár emellett
csatlakozási pontokat szolgáltat a
többfelhasználós mûködésre
váltás során csatlakoztatandó
további állományrendszerek
számára.A csatlakozási pont egy olyan könyvtár,
ahová a szülõ állományrendszeren
(ami gyakran maga a
gyökér-állományrendszer) belül
további állományrendszereket tudunk beoltani.
Errõl bõvebben a ban
olvashatunk. A szabványos csatlakozási pontok:
/usr, /var,
/tmp, /mnt és
/cdrom. Ezekre a könyvtárakra
általában az /etc/fstab
állományban találunk hivatkozásokat.
Az /etc/fstab állomány a
rendszer számára a különbözõ
állományrendszerek és a hozzájuk
tartozó csatlakozási pontok
táblázatát tartalmazza. Az
/etc/fstab állományban
szereplõ legtöbb állományrendszer a
rendszerindítás során automatikusan
csatlakoztatásra kerül az &man.rc.8; szkriptbõl,
hacsak nem tartalmazzák a
beállítást. Ennek részleteit a ban találhatjuk meg.Az állományrendszerek
hierarchiájának teljes leírását
a &man.hier.7; man oldalon olvashatjuk. Mi egyelõre most
megelégszünk a leggyakrabban megjelenõ
könyvtárak rövid
áttekintésével.KönyvtárMi található itt/Az állományrendszer
gyökere./bin/Az egy- és
többfelhasználós környezetekben
is egyaránt alapvetõ
felhasználói
segédprogramok./boot/Az operációs rendszer
indítása során használt
programok és konfigurációs
állományok./boot/defaults/A rendszerindítás
alapértelmezett konfigurációs
állományai. Lásd
&man.loader.conf.5;/dev/Eszközleírók, lásd
&man.intro.4;./etc/Rendszerkonfigurációs
állományok és szkriptek./etc/defaults/Az alapértelmezett
rendszerkonfigurációs
állományok, lásd
&man.rc.8;./etc/mail/A &man.sendmail.8; programhoz hasonló
levélküldõ rendszerek
konfigurációs
állományai./etc/namedb/A named program
konfigurációs állományai,
lásd &man.named.8;./etc/periodic/A &man.cron.8; által naponta, hetente
és havonta lefuttatandó szkriptek,
lásd &man.periodic.8;./etc/ppp/A ppp program
konfigurációs állományai,
lásd &man.ppp.8;./mnt/Egy üres könyvtár, amelyet a
rendszergazdák általában ideiglenes
csatlakozási pontként
használnak./proc/A futó programokat tartalmazó
állományrendszer, lásd
&man.procfs.5;, illetve &man.mount.procfs.8;./rescue/Statikusan linkelt programok vészhelyzet
esetére, lásd &man.rescue.8;./root/A root
felhasználó könyvtára./sbin/Az egy- és
többfelhasználós környezetekben
fontos rendszerprogramok és
rendszerfelügyeleti eszközök./tmp/Átmeneti állományok. A
/tmp
könyvtár tartalma általában
NEM marad meg az újraindítás
után. Erre a célra gyakran
memóriában létrehozott
állományrendszert szoktak csatlakoztatni a
/tmp
könyvtárba. Ez utóbbit az
&man.rc.conf.5; tmpmfs-re vonatkozó
változóinak
beállításával lehet
automatikussá tenni (vagy a
/etc/fstab megfelelõ
módosításával, lásd
&man.mdmfs.8;)./usr/A felhasználói programok és
alkalmazások többsége./usr/bin/Általános segédprogramok,
programozási eszközök és
alkalmazások./usr/include/Szabványos C
include-állományok./usr/lib/Függvénykönyvtárak./usr/libdata/Egyéb hasznos
adatállományok./usr/libexec/(Más programok által használt)
Rendszerdémonok és
rendszereszközök./usr/local/A helyi rendszeren telepített programok,
függvénykönyvtárak stb. A &os;
portrendszere is ezt használja
alapértelmezés szerint. A
/usr/local könyvtáron
belül a &man.hier.7; man oldalon
található /usr
könyvtár általános
felépítése használatos. Ez
alól kivételt képez a man
alkönyvtár, amely közvetlenül a
/usr/local alatt
található, nem pedig a
/usr/local/share
könyvtáron belül, valamint a portok
dokumentációja a
share/doc/port
könyvtárban található./usr/obj/A /usr/src
könyvtárfában található
források fordítása során
keletkezõ architektúrafüggõ
objektumok./usr/ports/A &os; Portgyûjtemény
(választható)./usr/sbin/(A felhasználók által
használt) Rendszerdémonok és
rendszereszközök./usr/share/Architektúrafüggõ
állományok./usr/src/BSD és/vagy helyi források./usr/X11R6/Az X11R6 rendszer programjai,
függvénykönyvtárai stb.
(választható)/var/Különféle napló,
átmeneti, ideiglenes és pufferben
tárolt állományok. A
memóriában létrehozott
állományrendszereket is olykor a /var
könyvtárban találjuk. Ezt az
&man.rc.conf.5; állományban
található varmfs-változók
beállításával tehetjük
automatikussá (vagy a
/etc/fstab megfelelõ
módosításával, lásd
&man.mdmfs.8;)./var/log/Mindenféle rendszernaplók./var/mail/A felhasználók postafiókjait
tároló állományok./var/spool/A nyomtatók és a levelezés
puffereléséhez használt
könyvtárak./var/tmp/Átmeneti állományok. Az itt
található állományok
általában megmaradnak a
következõ rendszerindítás
alkalmával is, hacsak a /var nem egy
memóriában létezõ
állományrendszer./var/ypA NIS állományai.A lemezek szervezéseAz állománynév a legkisebb
szervezési egység, amin keresztül a &os;
képes megtalálni az állományokat. Az
állományok neveiben a kis- és nagybetût
megkülönböztetjük, tehát a
readme.txt és a
README.TXT elnevezés két
különbözõ állományra utal. A
&os; nem az állományok kiterjesztése (ami a
konkrét példánkban a
.txt volt) alapján dönti el, hogy
az adott állomány vajon program, dokumentum vagy
valamilyen más fajtájú adat.Az állományok könyvtárakban
tárolódnak. Egy könyvtár lehet
akár üres (nincs benne egyetlen állomány
sem), vagy többszáz állományt is
tartalmazhat. Egy könyvtár ráadásul
további könyvtárakat is tárolhat,
és így az egymásban elhelyezkedõ
könyvtárak segítségével
könyvtárak egy hierarchiáját tudjuk
felépíteni. Ezzel sokkalta könnyebben
szervezhetõvé válnak az adataink.Az állományokat és
könyvtárakat úgy tudjuk elérni, ha
megadjuk az állomány vagy a könyvtárt
tároló könyvtár nevét, amit egy
perjel, a / követ, valamint így
összefûzve az eléréshez
szükséges további könyvtárak
felsorolása. Tehát, ha van egy
ize nevû könyvtárunk,
amelyben található egy mize
könyvtár, amelyen belül pedig egy
readme.txt, akkor ennek az
állománynak a teljes neve, vagy
másképpen szólva az
elérési útjaize/mize/readme.txt lesz.A könyvtárak és az állományok
egy állományrendszerben tárolódnak.
Minden állományrendszer pontosan egy
könyvtárat tartalmaz a legfelsõ szintjén,
amelyet az adott állományrendszer
gyökérkönyvtárának
nevezünk. Ez a gyökérkönyvtár
tartalmazhat aztán további
könyvtárakat.Eddig még valószínûleg minden nagyon
hasonló a más operációs rendszerekben
tapasztalható fogalmakhoz. Azonban adónak
különbségek: például az &ms-dos; a
\ jellel választja el az
állományok és könyvtárak neveit,
miközben a &macos; erre a : jelet
használja.A &os; az elérési utakban sem betûkkel, sem
pedig semmilyen más névvel nem jelöli meg a
meghajtókat. Tehát a &os;-ben nem írhatjuk,
hogy a c:/ize/mize/readme.txt.Helyette az egyik állományrendszert
kijelölik
gyökér-állományrendszernek.
A gyökér-állományrendszer
gyökérkönyvtárára hivatkoznak
késõbb /
könyvtárként. Ezután minden más
állományrendszert a
gyökér-állományrendszerhez
csatlakoztatunk. Ennek
értelmében nem számít, hogy mennyi
lemezünk is van a &os; rendszerünkben, hiszen minden
könyvtár egyazon lemez részeként jelenik
meg.Tegyük fel, hogy van három
állományrendszerünk, hívjuk ezeket
A-nak, B-nek és
C-nek. Minden állományrendszer
rendelkezik egy gyökérkönyvtárral, amely
két további könyvtárat tartalmaz:
A1-et és A2-t
(és ennek megfelelõen a többi
B1-et és B2-t,
valamint C1 és
C2-t).Nevezzük A-t a
gyökér-állományrendszernek. Ha a
könyvtár tartalmának
megjelenítéséhez most kiadnánk az
ls parancsot, két
alkönyvtárat látnánk, az
A1-et és A2-t. A
létrejött könyvtárfa valahogy így
nézne ki: /
|
+--- A1
|
`--- A2Egy állományrendszert csak egy másik
állományrendszer valamelyik
könyvtárába tudunk csatlakoztatni.
Ezért most tételezzük fel, hogy a
B állományrendszert az
A1 könyvtárba csatlakoztatjuk.
Ezután a B
gyökérkönyvtára átveszi a
A1 helyét az
állományrendszerben, és ennek
megfelelõen megjelennek a B
könyvtárai is: /
|
+--- A1
| |
| +--- B1
| |
| `--- B2
|
`--- A2A B1 vagy B2
könyvtárakban található
állományok bármelyike innentõl kezdve a
/A1/B1, illetve a /A1/B2
elérési utakon érhetõek el. Az
A1 könyvtárban
található állományok erre az
idõre rejtve maradnak. Akkor fognak újra felbukkanni,
ha a B állományrendszert
leválasztjuk az A
állományrendszerrõl.Ha a B állományrendszert az
A2 könyvtárba
csatlakoztatnánk, az iménti ábra
nagyjából így nézne ki: /
|
+--- A1
|
`--- A2
|
+--- B1
|
`--- B2és ennek megfelelõen az elõbb tárgyalt
elérési utak /A2/B1 és
/A2/B2 lennének.Az állományrendszerek egymáshoz is
csatlakoztathatóak. A példát ennek
megfelelõen úgy is folytathatjuk, hogy a
C állományrendszert
csatlakoztatjuk B
állományrendszerben található
B1 könyvtárhoz. Ennek
eredménye a következõ elrendezés
lesz: /
|
+--- A1
|
`--- A2
|
+--- B1
| |
| +--- C1
| |
| `--- C2
|
`--- B2Vagy a C állományrendszer az
A1 könyvtáron keresztül
csatlakoztatható akár közvetlenül az
A állományrendszerhez is: /
|
+--- A1
| |
| +--- C1
| |
| `--- C2
|
`--- A2
|
+--- B1
|
`--- B2Az &ms-dos; operációs rendszert ismerõk
számára ez hasonló lehet a
join parancshoz (habár teljesen nem
egyezik meg vele).Általában azonban ezzel nem kell
törõdnünk, hiszen többnyire csak a &os;
telepítése során hozunk létre
állományrendszereket és választjuk meg
a csatlakozási pontjukat. A késõbbiekben
ez legfeljebb akkor kerül elõ ismét, amikor
újabb lemezeket adunk hozzá a rendszerhez.Teljességgel megengedhetõ, hogy elhagyjuk a
többit és csak egyetlen óriási
gyökér-állományrendszert
használjunk. Ennek viszont megvannak a maga
hátrányai és az egyetlen elõnye.Több állományrendszer
használatának elõnyeiA különbözõ
állományrendszereknek
különbözõ
csatlakoztatási
beállításai (mount options)
lehetnek. Például, ha kellõen
elõvigyázatosak akarunk lenni, a
gyökér-állományrendszer
írásvédett módon is
csatlakoztatható, aminek köszönhetõen
lehetetlenné válik a rendszer
számára fontos állományok
véletlen törlése vagy
felülírása. Ha
elkülönítjük a
felhasználók számára
írható állományrendszereket
(például a /home
könyvtárakat) a többi
állományrendszertõl, lehetõvé
válik számunkra, hogy
nosuid
beállítással csatlakoztassuk ezeket. Ez
a beállítás megakadályozza, hogy
ezekben a
suid/guid
bitekkel rendelkezõ végrehajtható
állományok használhatóak legyenek,
ezáltal növeli a rendszer
biztonságosságát.A &os; az állományrendszer
használatától függõen
magától határoz a benne
található állományok
optimális kiosztását illetõen.
Így tehát a gyakorta módosított,
kisebb állományokat tartalmazó
állományrendszerek esetén teljesen
más technikákat alkalmaz, mint
például a nagyobb, kevésbé
változó állományok esetén.
Azonban egyetlen állományrendszer
használatával ez a gyorsítási
módszer odavész.Noha a &os; állományrendszerei nagyon
jól tûrik a hirtelen
áramkimaradásokat, egy döntõ ponton
bekövetkezõ váratlan leállás
mégis kárt okozhat a szerkezetükben. Ha
azonban több állományrendszerre osztjuk a
tárolandó adatainkat, sokkal
valószínûbbé válik, hogy egy
ilyen eset után a rendszerünk talpra tud
állni, és szükség esetén
nekünk is könnyebb lesz a biztonsági
mentéseinkbõl helyreállítani a
sérült állományokat.Egyetlen állományrendszer
használatának elõnyeiAz állományrendszerek mérete
rögzített. Miután a &os;
telepítése során létrehoztunk
egy adott méretû
állományrendszert, elõfordulhat, hogy
késõbb szükségünk lesz a
méretének növelésére.
Ilyenkor nehezen kerülhetjük el az ilyenkor
szokásos teendõket: biztonsági
mentés készítése, az új
méretnek megfelelõ
állományrendszer létrehozása,
majd ezután a lementett adataink
visszaállítása.A &os;-ben azonban megtalálható a
&man.growfs.8; parancs, amelynek
segítségével az
állományrendszerek mérete
használat közben növelhetõ,
és ezzel megszûnik a méretre
vonatkozó korlátozás.Az állományrendszerek partíciókban
tárolódnak. A &os; &unix;-os eredete miatt azonban
ez a kifejezés nem a hétköznapi
partíció jelentését
takarja (mint például egy &ms-dos;
partíció). Minden partíciót egy
betû azonosít a-tól
h-ig. Mindegyik partíció csak
egyetlen állományrendszert tartalmazhat, aminek
révén az állományrendszereket vagy az
állományrendszerek hierarchiájában
található csatlakozási pontjukkal vagy pedig
az ezeket tartalmazó partíció
betûjével azonosíthatjuk.A &os; ezeken felül külön lemezterülen
tárolja a
lapozóállományt (swap
space). A lapozóállományt használja a
&os; virtuális memória
(virtual memory) megvalósításához.
Ennek köszönhetõen a
számítógép képes úgy
viselkedni, mintha jóval több memóriával
rendelkezne, mint valójában. Így, amikor a
&os; kifogy a memóriából, egyszerûen
kirakja a memóriából a
lapozóállományba az éppen nem
használt adatokat, majd amikor ismét
szüksége lesz rájuk, visszatölti ezeket
(és ilyenkor megint kirak valami mást).Némely partícióhoz kötõdnek
bizonyos megszokások.PartícióMegszokásaÁltalában ez tartalmazza a
gyökér-állományrendszert.bÁltalában ez tartalmazza a
lapozóállományt.cMérete általában a
tartalmazó slice méretével egyezik
meg. Ennek köszönhetõen a
segédprogramok (például egy
hibás szektorokat keresõ program) a
c partíción
keresztül képesek akár az egész
slice-szal dolgozni. Normális esetben ezen a
partíción nem hozunk létre
állományrendszert.dA d partícióhoz
egykoron kapcsolódott különleges
jelentés, azonban mostanra ez már
megszûnt, és a d egy
teljesen átlagos partíciónak
tekinthetõ.Minden állományrendszert tartalmazó
partíciót a &os; egy ún.
slice-ban tárol. A &os;
számára a slice elnevezés utal mindarra, amit
általában partíciónak neveznek,
és ismét megemlítjük, mindez a &unix;-os
eredet miatt. A slice-okat 1-tõl 4-ig
sorszámozzák.slice-okpartíciókveszélyesen dedikáltA slice-ok sorszáma 1-tõl indulva az
eszközök neve után egy s
betûvel elválasztva következik. Így
tehát a da0s1
jelentése az elsõ slice lesz az elsõ
SCSI-meghajtón. Lemezenként négy fizikai
slice hozható létre, de ezeken belül
tetszõleges típusú logikai slice-ok
helyezhetõek el. Ezen további slice-ok
sorszámozása 5-tõl kezdõdik, így
ennek megfelelõen a ad0s5
lesz az elsõ IDE-lemezen található elsõ
kiterjesztett slice. Ezeket az eszközöket
foglalják el a különbözõ
állományrendszerek.A slice-ok, a veszélyesen
dedikált (Dangerously Dedicated) fizikai
meghajtók, és minden más olyan
meghajtó, amely
partíciókat tartalmaz,
a-tól h-ig
jelölõdnek. Ez a betû az eszköz neve
után következik, így ennek megfelelõen a
da0a lesz az elsõ
da meghajtó a, vagyis a
veszélyesen dedikált
partíciója. Az
ad1s3e lesz a második
IDE-lemezmeghajtón a harmadik slice-ban szereplõ
ötödik partíció.Végezetül, a rendszerben minden lemezt
azonosítunk. A lemez neve a típusára
utaló kóddal kezdõdik, amely után
aztán egy sorszám jelzi, hogy melyik lemezrõl
is van szó. Azonban eltérõen a
slice-okétól, a lemezek sorszámozása
0-tól indul. Az általánosan elterjedt
kódolások a ban
találhatóak.Amikor hivatkozunk egy partícióra, a &os;
elvárja tõlünk, hogy nevezzük meg az adott
partíciót tartalmazó slice-ot és
lemezt is. Emiatt egy partícióra mindig úgy
hivatkozunk, hogy elõször megadjuk a tartalmazó
lemez nevét, ettõl s-sel
elválasztva a tartalmazó slice
sorszámát, majd ezt a partíció
betûjelével zárjuk. Erre
példákat a ban láthatunk.Az érhetõség kedvéért a bemutatja egy lemez
kiosztásának fogalmi sablonját.A &os; telepítéséhez elõször be
kell állítani a lemezen található
slice-okat, majd létrehozni benne a &os;-hez
használni kívánt partíciókat,
kialakítani rajtuk az állományrendszereket
(vagy a lapozóállományt) és
eldönteni, melyik állományrendszert
kívánjuk csatlakoztatni.
Példák lemezek, slice-ok és
partíciók neveireNévJelentésad0s1aAz elsõ IDE lemezen (ad0)
levõ elsõ slice (s1)
elsõ partíciója
(a).da1s2eA második SCSI-lemzen
(da1) levõ második slice
(s2) ötödik
partíciója (e).Egy lemez kialakításának
sablonjaAz ábrán a rendszerhez csatlakoztatott elsõ
IDE-lemez látható a &os;
szemszögébõl. Tegyük fel, hogy ez a lemez
4 GB méretû és két,
egyenként 2 GB méretû slice-ot (avagy
&ms-dos; partíciót) tartalmaz. Az elsõ slice
egy &ms-dos; formátumú lemezt foglal
magában, a C: meghajtót,
illetve a második slice egy telepített &os;-t
tartalmaz. Ebben a példában a &os; három
adatot és egy lapozóállományt
tároló partícióval
rendelkezik.A három partíció mindegyikén
találhatunk egy-egy állományrendszert. Az
a partíció lesz a
gyökér-állományrendszer, az
e lesz a rendszerünkben a
/var és az f
pedig a /usr könyvtár..-----------------. --.
| | |
| DOS / Windows | |
: : > Elsõ slice, ad0s1
: : |
| | |
:=================: ==: --.
| | | a partíció, / |
| | > ad0s2a néven hivatkozzuk |
| | | |
:-----------------: ==: |
| | | b partíció, lapozóállomány |
| | > ad0s2b néven hivatkozzuk |
| | | |
:-----------------: ==: | c partíció, nincs
| | | e partíció, /var > állományrendszer, az egész
| | > ad0s2e néven hivatkozzuk | &os; slice,
| | | | ad0s2c
:-----------------: ==: |
| | | |
: : | f partíció, /usr |
: : > ad0s2f néven hivatkozzuk |
: : | |
| | | |
| | --' |
`-----------------' --'Állományrendszerek csatlakoztatása
és leválasztásaAz állományrendszereket legkönnyebben
egy-egy faként tudjuk magunk elõtt elképzelni,
amelyek a / könyvtárból
nõnek ki. A /dev,
/usr és mellettük szereplõ,
hozzájuk hasonló összes többi
könyvtár csupán egy-egy ág, amelyeknek
saját ágaik is lehetnek, mint például
a /usr/local és így
tovább.gyökér-állományrendszerKülönféle okai vannak annak, hogy egyes
könyvtárakat különálló
állományrendszereken tárolunk. A
/var könyvtár tartalmazza a
log/, spool/
könyvtárakat és különféle
átmeneti állományokat, azonban az ilyen
állományok könnyen megszaporodhatnak és
megtölthetik az állományrendszert. Mivel a
gyökér-állományrendszert nem
tanácsos elárasztani mindenféle
állománnyal, ezért gyakran a hasznunkra
válhat, ha a /var
könyvtárat leválasztjuk a
/ könyvtárból.A másik gyakori ok, ami az imént említett
fa egyes ágainak különbözõ
állományrendszereken történõ
tárolását indokolja, hogy ezek gyakran
más fizikai vagy virtuális lemezeken,
például a rendszerhez csatlakoztatott Hálózati
állományrendszereken vagy éppen
CD-meghajtókon találhatóak.Az fstab
állományállományrendszerekcsatlakoztatás az fstab
állománnyalA rendszerindítás
folyamata során az /etc/fstab
állományban felsorolt
állományrendszerek maguktól kerülnek
csatlakoztatásra (kivéve amikor a
beállítással
szerepelnek).Az /etc/fstab állományban
található sorok az alábbi
szerkezetûek:eszköz/csatlakozási-ponttípusbeállításokmentésigyakellszámeszközA ban leírtak
szerint megnevezett (létezõ)
eszköz.csatlakozási-pontEgy (létezõ) könyvtár, ahova
az állományrendszer csatlakozik.típusAz állományrendszer &man.mount.8;
parancs szerint ismert típusa. A &os;
alapértelmezett állományrendszere az
ufs.beállításokAz írható-olvasható
állományrendszerek esetén
, az írásvédettek
esetén pedig , amelyet
igény szerint további
beállítások követhetnek. A
rendszerindítás során automatikusan
nem csatlakoztatandó
állományrendszerek esetén gyakran
alkalmazott beállítás itt még
a . Egyéb
lehetõségeket a &man.mount.8; man oldalon
láthatunk.mentésigyakEzt általában a &man.dump.8; parancs
használja a menteni szükséges
állományrendszerek
megállapításához. Amennyiben
hiányzik ez a mezõ, az automatikusan a nulla
értéket jelöli.ellszámMegadja, hogy mely állományrendszereket
kell ellenõrizni. A nullás
pass értékkel
rendelkezõ állományrendszerek nem
kerülnek ellenõrzésre. A
gyökér-állományrendszer (melyet
minden más elõtt kell ellenõrizni)
passno értéke egy,
míg az összes többi
állományrendszer passno
értéke általában egytõl
különbözõ. Ha egynél több
állományrendszer is ugyanazt a
passno értéket kapta,
akkor az &man.fsck.8; a lehetõségei szerint
megpróbálja ezeket egyszerre
ellenõrizni.Az /etc/fstab
felépítésérõl és a benne
használható
beállításokról bõvebben a
&man.fstab.5; man oldalon olvashatunk.A mount parancsállományrendszerekcsatlakoztatásAz állományrendszerek tényleges
csatlakoztatására avagy
mountolására a &man.mount.8;
parancs használható.Legegyszerûbb formája:&prompt.root; mount eszközcsatlakozási-pontAhogy a &man.mount.8; man oldalán is olvashatjuk, itt
rengeteg opció is megadható, de ezek
közül a leggyakoribbak:Csatlakoztatási opciókCsatlakoztatja az /etc/fstab
állományban felsorolt összes
állományrendszert, kivéve azokat,
amelyek a noauto
beállítást tartalmazzák, vagy
kizártuk a kapcsolóval,
esetleg korábban már csatlakoztattuk.A tényleges csatlakoztatás
elvégzése nélkül
végrehajt minden mást. Ez az opció
leginkább opcióval
együtt használható annak
megállapítására, hogy a
&man.mount.8; valójában mit is akar
csinálni.Egy nem tiszta állományrendszer
csatlakoztatásának
kényszerítése (veszélyes!)
vagy egy korábban már csatlakoztatott
állományrendszer írható
állapotának
felfüggesztése.Az állományrendszer
írásvédett csatlakoztatása.
Megegyezik a opciónál
megadható (vagy a &os;
5.2-nél régebbi verziója
esetén a )
beállítás
használatával.típusAz adott állományrendszert az adott
típusnak megfelelõen csatlakoztatja, vagy az
használata esetén csak
az adott típusú
állományrendszereket.Az ufs az
állományrendszerek alapértelmezett
típusa.Frissíti az állományrendszerre
vonatkozó csatlakoztatási
beállításokat.Részletesebb kijelzés.Az állományrendszer
csatlakoztatása írásra és
olvasásra.Az opció után
vesszõvel elválasztott
beállításokat adhatunk meg, többek
közt az alábbiakat:noexecAz állományrendszeren
található állományok
végrehajtásának tiltása. Ez
egy nagyon hasznos biztonsági
beállítás.nosuidAz állományrendszeren nem
használhatóak a felhasználó-
(setuid) vagy csoportváltásra (setgid)
vonatkozó engedélyek. Nagyon hasznos
biztonsági beállítás.Az umount parancsállományrendszerekleválasztásAz &man.umount.8; parancs paraméterként egy
csatlakozási pontot, egy eszköznevet vagy a
, illetve az
opciókat várja.A leválasztás
kényszerítéséhez mindegyik alakban
szerepelhet az opció, valamint a
részletesebb kijelzést a
opcióval kapcsolhatjuk be. Azonban szeretnénk
mindenkit figyelmeztetni, hogy a
használata alapvetõen nem ajánlott. Az
erõszakkal leválasztott
állományrendszerek összeomlaszthatják
a számítógépet vagy kárt
okozhatnak az állományrendszereken
található adatokban.Az és
opciók használatosak az összes
csatlakoztatott állományrendszer
leválasztására, amelyek típusait a
opció megadása után
sorolhatjuk fel. Fontos különbség azonban,
hogy az opció a gyökér
állományrendszert nem próbálja meg
leválasztani.FolyamatokA &os; egy többfeladatos operációs
rendszer. Ez azt jelenti, hogy képes
látszólag egyszerre több programot is futtatni.
Az így egyszerre futó programokat egyenként
folyamatoknak (process) nevezzük.
Minden kiadott parancsunk elindít legalább egy ilyen
folyamatot, és a rendszerünk mozgásban
tartásához bizonyos rendszerszintû folyamatok
állandóan futnak a háttérben.Minden folyamatot egy
folyamatazonosítónak (process
ID vagy PID) nevezett szám
azonosít egyértelmûen, és az
állományokhoz hasonlóan, minden folyamatnak
van tulajdonosa és csoportja is. A tulajdonos és a
csoport ismeretében állapítja meg a rendszer,
hogy az adott folyamat a korábban említett
engedélyek szerint milyen állományokhoz
és eszközökhöz férhet hozzá.
Ezenkívül a legtöbb folyamatnak van még
egy szülõfolyamata is. A szülõfolyamat az a
folyamat, amely az adott folyamatot elindította.
Például amikor parancsokat adunk egy
parancsértelmezõn keresztül, akkor maga a
parancsértelmezõ is egy ilyen folyamat lesz
ugyanúgy, ahogy a benne kiadott parancsok által
elindított programok. Ennek megfelelõen az így
létrehozott összes folyamat szülõje maga a
parancsértelmezõ folyamata lesz. Az említettek
alól egyik kivétel az &man.init.8; nevû
speciális folyamat. Az init lesz a
rendszerben mindig az elsõ folyamat, ezért a PID-je is
mindig 1. Az init programot a &os;
indulásakor a rendszermag fogja automatikusan
elindítani.A rendszerben futó programok
vizsgálatához két, különösen
hasznos parancsot találhatunk: ezek a &man.ps.1; és
a &man.top.1;. A ps parancs használatos
a pillanatnyilag futó programok statikus
listájának megjelenítésére.
Ebben olvashatjuk a futó programok
azonosítóit, mennyi memóriát
használnak éppen, milyen paranccsal
indították ezeket stb. A top
parancs mutatja az összes aktívan futó
programot, majd néhány másodpercenként
automatikusan frissíti ezt a listát, aminek
révén folyamatosan láthatjuk, miként
viselkednek a futó programok.A ps alapértelmezés szerint
csupán az általunk futtatott programokat mutatja.
Például:&prompt.user; ps
PID TT STAT TIME COMMAND
298 p0 Ss 0:01.10 tcsh
7078 p0 S 2:40.88 xemacs mdoc.xsl (xemacs-21.1.14)
37393 p0 I 0:03.11 xemacs freebsd.dsl (xemacs-21.1.14)
48630 p0 S 2:50.89 /usr/local/lib/netscape-linux/navigator-linux-4.77.bi
48730 p0 IW 0:00.00 (dns helper) (navigator-linux-)
72210 p0 R+ 0:00.00 ps
390 p1 Is 0:01.14 tcsh
7059 p2 Is+ 1:36.18 /usr/local/bin/mutt -y
6688 p3 IWs 0:00.00 tcsh
10735 p4 IWs 0:00.00 tcsh
20256 p5 IWs 0:00.00 tcsh
262 v0 IWs 0:00.00 -tcsh (tcsh)
270 v0 IW+ 0:00.00 /bin/sh /usr/X11R6/bin/startx -- -bpp 16
280 v0 IW+ 0:00.00 xinit /home/nik/.xinitrc -- -bpp 16
284 v0 IW 0:00.00 /bin/sh /home/nik/.xinitrc
285 v0 S 0:38.45 /usr/X11R6/bin/sawfishAhogy az a fenti példában is látszik, a
&man.ps.1; kimenete oszlopokra tagolható. Ezek
közül a PID tartalmazza a
korábban már ismertetett
folyamatazonosítókat. Az azonosítók
1-tõl indulva egészen 99999-ig
sorszámozódhatnak, illetve ha kifutnánk
belõlük, akkor a számozás kezdõdik
elölrõl (azonban a használatban levõ
azonosítók sosem kerülnek újra
kiosztásra). A TT oszlopban
láthatjuk azt a terminált, amelyen az adott program
éppen fut, de ezt pillanatnyilag akár nyugodtan
figyelmen kívül is hagyhatjuk. A
STAT oszlopban a program
állapotát kapjuk meg, de szintén
átugorható. A TIME a program
processzoron eltöltött idejét mutatja — ez
általában nem arra utal, hogy mennyi ideje fut maga
a program, hiszen a legtöbb program sok idõt tölt
tétlenül, mielõtt egyáltalán
szüksége lenne processzora. Végezetül a
COMMAND oszlopban olvashatjuk azt a parancsot,
amellyel a programot elindították.A &man.ps.1; számos különféle
beállítást ismer az általa
megjelenített információk
megválasztásához. Az egyik ilyen
leghasznosabb beállítás az
auxww: az
segítségével az összes futó
programot láthatjuk, nem csak a sajátjainkat; az
megadásával
láthatóvá válik a folyamat
tulajdonosának a felhasználói neve, valamint
a memóriahasználata is; az
megmutatja a démon (avagy háttér)folyamatok
adatait is és a hatására
pedig a &man.ps.1; az összes folyamathoz a teljes parancssort
kiírja, még akkor is, ha nem férne ki a
képernyõre.A &man.top.1; kimenete is hasonló. Ha
elindítjuk, általában ezt
láthatjuk:&prompt.user; top
last pid: 72257; load averages: 0.13, 0.09, 0.03 up 0+13:38:33 22:39:10
47 processes: 1 running, 46 sleeping
CPU states: 12.6% user, 0.0% nice, 7.8% system, 0.0% interrupt, 79.7% idle
Mem: 36M Active, 5256K Inact, 13M Wired, 6312K Cache, 15M Buf, 408K Free
Swap: 256M Total, 38M Used, 217M Free, 15% Inuse
PID USERNAME PRI NICE SIZE RES STATE TIME WCPU CPU COMMAND
72257 nik 28 0 1960K 1044K RUN 0:00 14.86% 1.42% top
7078 nik 2 0 15280K 10960K select 2:54 0.88% 0.88% xemacs-21.1.14
281 nik 2 0 18636K 7112K select 5:36 0.73% 0.73% XF86_SVGA
296 nik 2 0 3240K 1644K select 0:12 0.05% 0.05% xterm
48630 nik 2 0 29816K 9148K select 3:18 0.00% 0.00% navigator-linu
175 root 2 0 924K 252K select 1:41 0.00% 0.00% syslogd
7059 nik 2 0 7260K 4644K poll 1:38 0.00% 0.00% mutt
...A kimenet két részre osztható. A
fejlécben (vagyis az elsõ öt sorban)
látható az utoljára futtatott program
azonosítója (PID), a rendszer átlagos
terhelése (load average, amellyel mérjük, hogy
a rendszerünk mennyire lefoglalt), a rendszer
indítása óta eltelt idõ (up mint uptime)
és a jelenlegi idõ. A fejlécben még
megtalálhatjuk azt is, mennyi program fut (esetünkben
ez most 47), mennyi memóriát és
lapozóállományt használnak, és
mennyi idõt tölt a rendszer a processzor
különbözõ állapotaiban.A fejléc alatt a &man.ps.1; kimenetéhez
hasonló módon oszlopokba rendezve találhatjuk
meg a folyamatok adatait: az azonosítóikat, a
tulajdonosaik nevét, a felhasznált
processzoridõt, a futtatott parancsot. A &man.top.1;
alapértelmezés szerint mutatja a futó
programok által használt memória
mennyiségét is: ez további két
oszlopra oszlik, ahol az egyikben a teljes
memóriafoglalást (SIZE), a másikban pedig a
jelen pillanatban aktívan használt
memóriát (RES) láthatjuk. A
példában látható is, hogy a
&netscape; (navigator-linu)
alkalmazásnak majdnem 30 MB-nyi
memóriára van szüksége, de ebbõl
aktívan csak 9 MB-ot használ.A &man.top.1; a kijelzést minden második
másodpercben magától frissíti, de ez
az kapcsolóval
állítható.Démonok, jelzések és a futó
programok leállításaAmikor elindítunk egy szövegszerkesztõt, nem
sok gondunk akad az irányításával,
könnyen utasíthatjuk az állományok
betöltésére és így tovább.
Mindezt azért tehetjük meg, mert a
szövegszerkesztõ erre lehetõséget
biztosít és mivel a szövegszerkesztõ egy
terminálhoz kapcsolódik.
Egyes programok azonban nem úgy lettek kialakítva,
hogy állandóan a felhasználó
utasításaira támaszkodjanak, ezért az
elsõ adandó alkalommal lekapcsolódnak a
terminálról. Például egy webszerver
egész nap csak webes kéréseket
válaszol meg, és általában semmi
szüksége nincs a felhasználók
utasításaira. A szerverek között
leveleket közvetítõ programok is ugyanezen
osztályba tartoznak.Ezeket a programokat
démononoknak hívjuk. A
démonok a görög mitológiában
jelentek meg: sem a jót, sem pedig a gonoszt nem
képviselték, egyszerû apró
szellemecskék voltak, akik az emberiség javát
szolgálták, pontosan úgy, ahogy ma teszik azt
a különféle web- és levelezõ
szerverek. Ezért is ábrázolták
sokáig a BSD kabalafiguráját is egy
tornacipõs, vasvillás vidám
démonként.A démonként futó programok nevéhez
a hagyományok szerint hozzá szokták
fûzni a d betût. A
BIND a Berkeley Internet Name Domain
(névfeloldó) szolgáltatása, azonban a
hozzá tartozó program neve named,
az Apache webszerver programját
httpd-nek nevezik, a sornyomtató
kezeléséért felelõs démon pedig
az lpd és így tovább. Ez
csupán egy hagyomány, megszokás, nem pedig
egy kõbe vésett szabály: például
a Sendmail levelezõ
démonának neve sendmail és
nem pedig maild.Néha azért szükségünk lehet
arra, hogy felvegyük valahogy a kapcsolatot a
démonként futó programokkal is. Ennek egyik
lehetséges módja a
jelzések (signal)
küldése (de alapvetõen bármilyen
futó programnak küldhetünk). Több
különféle jelzés küldhetõ
— egyeseknek közülük
megkülönböztetett jelentése van,
másokat magukat az alkalmazások értelmeznek,
amelyrõl a dokumentációjukban
tájékozódhatunk. A &man.kill.1; vagy
&man.kill.2; paranccsal más tulajdonában levõ
futó programoknak nem tudunk jelzéseket
küldeni, ami alól egyedüli kivétel a
root felhasználó.Bizonyos esetekben a &os; maga is küld néha
jelzéseket. Amikor egy alkalmazást rosszul
programoznak le és megpróbál egy
számára tiltott memóriaterülethez
hozzáférni, a &os; küld neki egy
Segmentation Violation
(SIGSEGV, szegmentálási hiba)
jelzést. Ha egy alkalmazás az &man.alarm.3;
rendszerhíváson keresztül kér egy adott
idõ utáni bekövetkezõ
értesítést, akkor kap errõl egy Alarm
(SIGALRM) jelzést és így
tovább.A folyamatok leállítására
két jelzés használható: a
SIGTERM (befejeztetés) és a
SIGKILL (leállítás). A
SIGTERM a folyamatok
leállításának illedelmes módja,
mivel ekkor a futó program képes
elkapni ezt a jelzést és
észrevenni, hogy le akarjuk állítani.
Ilyenkor a leállítás elõtt
lehetõsége van szabályosan lezárni a
naplóit és általánosságban
véve befejezni mindent, amit éppen csinál.
Elõfordulhat azonban, hogy a folyamatok figyelmen
kívül hagyják a SIGTERM
jelzést, ha például éppen egy
félbeszakíthatatlan feladat közepén
tartanak.A SIGKILL jelzést azonban egyetlen
futó program sem hagyhatja figyelmen kívül. Ez
lenne a Nem érdekel, mivel foglalkozol, azonnal
hagyd abba! jelzés. Amikor
SIGKILL jelzést küldünk egy
folyamatnak, a &os; leállítja a folyamatot ott
és ahol tart
Ez azért nem teljesen igaz. Van
néhány olyan tevékenység, ami nem
szakítható meg. Ilyen például az,
amikor a program egy másik
számítógépen
található állományt
próbál olvasni, miközben valamilyen ok
(kikapcsolás, hálózati hiba)
folytán elveszti vele a kapcsolatot. Ekkor a program
futása megszakíthatatlan. Majd
amikor a program feladja a próbálkozást
(általában két perc után), akkor
következik be a tényleges
leállítása..További használható jelzések:
SIGHUP, SIGUSR1 és
SIGUSR2. Ezek általános
célú jelzések, amelyeket az
alkalmazások eltérõ módokon
kezelnek.Tegyük fel, hogy megváltoztattuk a
webszerverünk beállításait
tartalmazó állományt — valamilyen
módon szeretnénk tudatni a szerverrel, hogy olvassa
be újra a beállításait. Ezt
megtehetjük úgy, hogy leállítjuk
és újraindítjuk a httpd
démont, de ezzel kiesést okozhatunk a szerver
mûködésében, amit viszont nem
engedhetünk meg. A legtöbb démont úgy
készítették el, hogy a
SIGHUP jelzés hatására
olvassa be újra a beállításait
tartalmazó állományt. Így a
httpd leállítása és
újraindítása helyett egyszerûen
elegendõ egy SIGHUP jelzés
küldése. Mivel azonban ez nem
szabványosított, a különbözõ
démonok ezt a jelzést
többféleképpen is értelmezhetik.
Ezért a használata elõtt ennek
mindenképpen járjunk utána a
kérdéses démon
dokumentációjában.A jelzéseket a &man.kill.1; paranccsal tudjuk
elküldeni, ahogy ezt a következõ
példában is láthatjuk.Jelzés küldése egy futó
programnakEbben a példában megmutatjuk, hogyan lehet
jelzést küldeni az &man.inetd.8; démonnak.
Az inetd a beállításait
az /etc/inetd.conf
állományban tárolja, és az
inetd a SIGHUP
jelzés hatására képes
újraolvasni ezt.Keressük meg annak a folyamatnak az
azonosítóját, amelynek a jelzést
kívánjuk küldeni. Ezt a &man.ps.1;
és a &man.grep.1; használatával
tehetjük meg. A &man.grep.1; parancs
segítségével más parancsok
kimenetében tudunk megkeresni egy általunk
megadott szöveget. Ezt a parancsot átlagos
felhasználóként futtatjuk, azonban az
&man.inetd.8; démont a root
birtokolja, ezért az &man.ps.1; használata
során meg kell adnunk az
kapcsolókat is.&prompt.user; ps -ax | grep inetd
198 ?? IWs 0:00.00 inetd -wWInnen kiderül, hogy az &man.inetd.8;
azonosítója 198. Elõfordulhat, hogy az
eredményben maga a grep inetd
parancs is megjelenik. Ez a &man.ps.1;
listázási módszere miatt következhet
be.A jelzés elküldésére
használjuk a &man.kill.1; parancsot. Mivel az
&man.inetd.8; démont a root
felhasználó futtatja, ehhez elõször a
&man.su.1; parancs kiadásával nekünk is
root felhasználóvá
(rendszeradminisztrátorrá) kell
válnunk.&prompt.user; suPassword:
&prompt.root; /bin/kill -s HUP 198Ahogy az a legtöbb &unix; esetén elfogadott, a
sikeres végrehajtás esetén a &man.kill.1;
sem válaszol semmit. Amikor viszont nem egy
saját programunknak akarunk jelzést
küldeni, akkor a kill:
PID: Operation not
permitted (a mûvelet nem
engedélyezett) hibaüzenetet látunk. Ha
véletlenül elgépeltük volna a
futó program azonosítóját, akkor a
küldendõ jelzés nem a megfelelõ
folyamatnál fog kikötni (ami nem éppen
jó), vagy ha szerencsénk van, akkor a
jelzést egy éppen használaton
kívüli azonosítóra
küldtük. Az utóbbi esetben a
következõ láthatjuk: kill:
PID: No such process
(nincs ilyen folyamat).Miért /bin/kill?A legtöbb parancsértelmezõ
beépítetten tartalmazza a saját
kill parancsát, tehát
ilyenkor közvetlenül maga a
parancsértelmezõ küldi a jelzést,
nem pedig a /bin/kill programon
keresztül. Ez gyakran a javunkra válhat,
azonban a küldhetõ jelzések megadása
parancsértelmezõnként eltérhet.
Így, ahelyett, hogy egyenként ismernünk
kellene mindegyiket, sokkal egyszerûbb
közvetlenül a /bin/kill
... parancsot
használni.A többi jelzés küldése is nagyon
hasonló módon történik, hiszen
elegendõ csupán a TERM vagy a
KILL behelyettesítése a parancs
megfelelõ helyére.A rendszerünkben óvatosan bánjunk a
futó programok
leállítgatásával, és
legyünk különös tekintettel az 1-es
azonosítóval rendelkezõ, speciális
feladattal bíró &man.init.8; folyamatra. A
/bin/kill -s KILL 1 parancs
kiadásával ugyanis gyorsan le tudjuk
állítani a rendszerünket.
Mielõtt egy &man.kill.1; parancsot
lezárnánk az Enter
billentyûvel, mindig
gyõzõdjünk meg róla, hogy valóban
tényleg a jó paramétereket adtuk
meg.ParancsértelmezõkparancsértelmezõkparancssorA &os;-ben hétköznapi munkánk legnagyobb
részét a parancsértelmezõknek (shell)
nevezett parancssoros felületen tudjuk elvégezni. A
parancsértelmezõ fõ feladata a
beérkezõ parancsok elfogadása és
végrehajtatása. Sok parancsértelmezõ
ezenfelül rendelkezik beépített
funkciókkal is, amelyek olyan hétköznapi
feladatokban igyekeznek segíteni, mint
például az állományok kezelése
és tömeges elérése reguláris
kifejezések használatával, a parancssor
szerkesztése, parancsok makrózása és a
környezeti változók használata. A &os;
alapból tartalmaz néhány
parancsértelmezõt, ilyen például az
sh, a Bourne Shell, és a
tcsh, a továbbfejlesztett C-shell. Sok
más parancsértelmezõ, mint
például a zsh és
bash is elérhetõ a &os;
Portgyûjteményébõl.De melyik parancsértelmezõt is válasszuk?
Ez igazából ízlés kérdése.
Ha inkább C programozók vagyunk, akkor
valószínûleg egy olyan C-szerû shelllel
tudunk kényelmesen dolgozni, amilyen például
a tcsh. Ha viszont egy linuxos rendszert
használtunk korábban vagy éppen még
soha nem használtunk volna a &unix; parancssorát,
érdemes a bash-sel
megpróbálkoznunk. A lényeg az, hogy minden
parancsértelmezõnek vannak olyan egyedi
jellemezõi, amiért használatóak vagy
éppen nem használatóak a munkánkban,
ezért magunknak kell kiválasztani a nekünk
megfelelõt.A shellek egyik legáltalánosabb jellemzõje
az állományok neveinek
kiegészítése. Miután
begépeljük egy parancs vagy
állománynév elsõ néhány
karakterét, a Tab billentyû
lenyomásával megkérhetjük a
parancsértelmezõt, hogy magától
egészítse ki (találja ki) a
fennmaradó részt. Nézzük erre egy
példát. Tegyük fel, hogy van két
állományunk, izemize és
ize.mize, és szeretnénk
letörölni az ize.mize nevût.
Ehhez a következõt kell begépelnünk:
rm
iz[Tab].[Tab].Erre a parancsértelmezõ a következõ
parancsot írja ki: rm
ize[SIPOLÁS].mize.A [SIPOLÁS] itt a konzol sípjára
vonatkozik, amellyel jelzi, hogy nem tudta teljesen
kiegészíteni az állomány nevét,
mivel egynél több is megfelel a megadott alaknak. Az
izemize és az
ize.mize is egyaránt az
iz elõtaggal kezdõdik, azonban
ebbõl a parancsértelmezõ csak az
ize elõtagot tudta kikövetkeztetni.
Ha most begépelünk még egy .
karaktert és újra megnyomjuk a Tab
billentyût, a parancsértelmezõ ezúttal
képes lesz az állomány teljes nevét
megállapítani.környezeti
változókA parancsértelmezõk másik
általános jellemzõje a környezeti
változók használata. A környezeti
változók lényegében a
parancsértelmezõ környezetéhez
tárolt név-érték párok. Ezt a
környezetet látja minden olyan program, amit a
parancsértelmezõbõl meghívunk, és
ezért tartalmazni is szokott sok ilyen
beállítást. Íme a leggyakoribb
környezeti változók felsorolása
és rövid leírása:környezeti
változókVáltozóLeírásUSERA bejelentkezett felhasználó
neve.PATHVesszõvel elválasztott
könyvtárak, ahol a parancsértelmezõ
a végrehajtható állományokat
keresi.DISPLAYAz aktuálisan használt X11
megjelenítõ hálózati neve,
amennyiben létezik ilyen.SHELLA használt
parancsértelmezõ.TERMA felhasználó által
használt terminál típusa. Ebbõl
a terminál képességeit lehet
megállapítani.TERMCAPA terminálok
adatbázisából származó,
különbözõ
terminálfunkciókhoz tartozó
helyettesítõ (escape) kódok.OSTYPEAz operációs rendszer típusa,
például &os;.MACHTYPEA rendszer alatt futó gép
architektúrája.EDITORA felhasználó által
használt szövegszerkesztõ.PAGERA felhasználó által
lapozásra használt program.MANPATHVesszõvel elválasztott könyvtárak,
ahol a parancsértelmezõ a man
oldalakat keresi.Bourne-féle
parancsértelmezõkA környezeti változók
beállítása
parancsértelmezõnként valamennyire eltér.
Például egy C stílusú
parancsértelmezõ, mint például a
tcsh vagy a csh, a
setenv paranccsal állítja a
környezeti változókat. A Bourne-féle
parancsértelmezõk, mint például az
sh vagy a bash, az
export parancsot használják a
környezeti változók
beállítására. Például a
csh vagy a tcsh
használata során a következõképpen
tudjuk be- vagy átállítani az
EDITOR környezeti változó
értékét
/usr/local/bin/emacs-re:&prompt.user; setenv EDITOR /usr/local/bin/emacsUgyanez a Bourne-féle
parancsértelmezõkben:&prompt.user; export EDITOR="/usr/local/bin/emacs"A legtöbb parancsértelmezõben a nevük
elõtt szerepeltetett $ jel
segítségével kérhetjük a
környezeti változók
értékének
behelyettesítését a parancssorba. Ennek
megfelelõen az echo $TERM parancs
kiíratja a TERM változó
aktuális értékét, mivel ebbe a
parancsértelmezõ már az echo
meghívása elõtt behelyettesíti a
TERM értékét.A parancsértelmezõk számos speciális
karaktert, ún. metakaraktert az adatok különleges
reprezentációjaként kezelnek.
Köztük a leggyakrabban használt a
*, amely tetszõleges számú
karaktert helyettesít egy állomány
nevében. Az ilyen metakarakterek
segítségével tudunk egyszerre több
állományt is megnevezni. Például ha
begépeljük az echo * parancsot,
akkor majdnem ugyanazt kapjuk eredményül, mintha az
ls parancsot adtuk volna ki, hiszen a
parancsértelmezõ ilyenkor veszi az összes
* metakarakterre illeszkedõ
állományt, és a kiíratásukhoz
pedig rendre behelyettesíti ezeket a parancssorba az
echo paramétereként.Ha nem szeretnénk, hogy a parancsértelmezõ
értelmezze a speciális karaktereket, akkor egy
backslash (visszaper) (\)
karaktert eléjük téve mindezt
megakadályozhatjuk. Az echo $TERM
parancs ugyebár kiíratja a terminálra
vonatkozó környezeti változó
beállítását, azonban a echo
\$TERM változatlanul kiírja a
$TERM szöveget.A parancsértelmezõnk
megváltoztatásaA parancsértelmezõnk legegyszerûbben a
chsh parancs használatával
változtatható meg. A chsh
kiadása után elindítja az
EDITOR környezeti változónak
megfelelõ szövegszerkesztõt, ha nem lenne ilyen,
akkor alapértelmezés szerint a
vi hívódik meg. Az így
megnyitott állományban változtassuk meg
kedvünk szerint a Shell: kezdetû
sort.A chsh parancsnak megadhatjuk az
opciót is, amin keresztül
szövegszerkesztõ használata nélkül
be tudjuk állítani a
parancsértelmezõt. Például ha a
parancsértelmezõnket a bash-re
akarjuk lecserélni, akkor ezt írjuk be:&prompt.user; chsh -s /usr/local/bin/bashA használni kívánt
parancsértelmezõnek szerepelnie
kell az /etc/shells
állományban. Ha a kiválasztott
parancsértelmezõt a Portgyûjteménybõl
telepítettük fel, akkor az már minden
bizonnyal bekerült oda. Ha viszont saját magunk
raktuk volna fel, akkor ide is fel kell vennünk.Például ha a bash-t
manuálisan telepítettük és
másoltuk a /usr/local/bin
könyvtárba, akkor így kell
eljárnunk:&prompt.root; echo "/usr/local/bin/bash" >> /etc/shellsMajd próbálkozzunk újra a
chsh paranccsal.SzövegszerkesztõkszövegszerkesztõkszerkesztõkA &os; beállításának nagy
része szöveges állományok
szerkesztésével történik. Emiatt sosem
árt legalább egy szövegszerkesztõt
ismernünk. A &os; alaprendszerében, valamint a
Portgyûjteményben is találhatunk
néhányat belõlük.eeszerkesztõkeeA legegyszerûbben megtanulható és
legkönnyedebb szövegszerkesztõt
ee-nek, avagy easy
editornak hívják. Az
ee indításához
írjuk be az ee
állománynév
parancsot, ahol az
állománynév lesz a
szerkesztendõ állomány neve. Így
például az /etc/rc.conf
állomány szerkesztéséhez
gépeljük be az ee /etc/rc.conf
parancsot. Miután elindult az ee, az
összes szerkesztéshez használható
parancsa megjelenik a képernyõ felsõ
részében. Itt a kalap
(^) karakter a Ctrl
billentyû lenyomására utal, így
tehát a ^e jelölés a
Ctrle
billentyûkombinációt jelenti. Ha ki akarunk
lépni az ee-bõl, nyomjuk le
az Esc billentyût, majd a felbukkanó
menübõl válasszuk a szerkesztõ
elhagyását (leave editor). Ha az
állományt módosítottuk,
kilépés elõtt még a
szövegszerkesztõ rákérdez, hogy mentse-e a
változtatásainkat.viszerkesztõkviemacsszerkesztõkemacsA &os; nagyobb tudású
szövegszerkesztõket, mint például a
vi-t, is tartalmaz az alaprendszer
részeként, miközben a többi, mint
például az Emacs vagy a
vim a Portgyûjtemény
részeként (editors/emacs és editors/vim) érhetõ el.
Ezek a szerkesztõk sokkal több lehetõséget
és erõt képviselnek, amiért
cserébe viszont valamivel nehezebb megtanulni a
használatukat. Ha viszont rengeteg szöveget akarunk
majd szerkeszteni, akkor egy vim vagy
Emacs használatának
megismerésével sok idõt
megspórolhatunk.Számos alkalmazás, amely
állományokat akar módosítani vagy
szöveges bemenetre van szüksége, automatikusan
szövegszerkesztõt nyit meg. Ezt az
EDITOR környezeti változó
beállításával tudjuk
meghatározni. Errõl részletesebben a parancsértelmezõknél
olvashatunk.Eszközök és
eszközleírókAz eszköz elnevezést leginkább a
rendszerben folyó, hardverrel kapcsolatos
tevékenységek kapcsán
használják lemezekre, nyomtatókra, grafikus
kártyákra és billentyûzetekre. A &os;
indulása során többnyire azt láthatjuk,
hogy milyen eszközöket sikerült felismernie.
Ezeket a rendszerindításkor megjelenõ
üzeneteket a /var/run/dmesg.boot
állományban nézhetjük meg
újra.Például az acd0 az
elsõ IDE CD-meghajtót, míg a
kbd0 a billentyûzetet
képviseli.A &unix; operációs rendszerben a legtöbb
eszközt a /dev könyvtárban
található, eszközleíróknak
(device node) nevezett speciális állományokon
keresztül érhetjük el.Eszközleírók
létrehozásaAmikor egy újfajta eszközt adunk hozzá a
rendszerhez vagy csak annak egy új
példányát, mindig létre kell hoznunk
hozzá egy új
eszközleírót.DEVFS (DEVice File System,
Eszköz-állományrendszer)Az eszközöket tartalmazó
állományrendszer, avagy
DEVFS, ad hozzáférést
a rendszermag által ismert eszközök neveihez
a globális állományrendszer nevein
keresztül. Így ahelyett, hogy magunknak kellene
létrehoznunk és módosítanunk az
eszközleírókat, a DEVFS
erre a célra fenntart egy külön
állományrendszert.A &man.devfs.5; man oldalon olvashatunk bõvebben
errõl.Bináris formátumokAnnak megértéséhez, hogy a &os;
miért az &man.elf.5; formátumot használja,
elõször is tisztában kell lennünk a &unix;
típusú rendszerekben használt
végrehajtható állományok három
uralkodó formátumával:&man.a.out.5;A legõsibb és egyben a
klasszikus &unix;-os
tárgykódformátum. Egy tömör
és rövidke fejlécet használ, aminek
az elején a formátum
leírására szolgáló
bûvös szám
található (errõl bõvebben lásd
&man.a.out.5;). Három betöltött szegmenst
tartalmaz: .text, .data és .bss, valamint egy
szimbólumokat és karakterláncokat
tároló táblát.COFFAz SVR3 tárgykódformátuma. A
fejléc itt már tartalmaz egy table nevû
szegmenst is, tehát a .text, .data és .bss
szegmensekhez hasonlóan ebbõl is többet tud
tárolni.&man.elf.5;A COFF után következõ
formátum, amelyben több szegmens is
megtalálható, valamint létezik 32 bites
és 64 bites változatban is. Egyetlen
hátránya van: az ELF
tervezése során
rendszerarchitektúránként csupán
egyetlen ABI-t (bináris alkalmazói
felületet) feltételeztek. Ez azonban
meglehetõsen helytelen, mivel még a kereskedelmi
SYSV világában (ahol már legalább
három ABI található: SVR4, Solaris
és SCO) sem állja meg a helyét.A &os; ezt a problémát a
megbélyegzés (branding)
segítségével próbálja
megoldani, aminek révén el tudunk látni
egy ismert ELF állományt a
futtatásához megfelelõ ABI-ra
vonatkozó információkkal. Errõl
részletesebben a &man.brandelf.1; oldalán
tájékozódhatunk.A &os; a klasszikusok
táborából indult, ezért kezdetben az
&man.a.out.5; formátumot használta, mivel ez a
technológia a BSD kiadások számos
generációjában megmérettetett
és bevált, egészen a 3.X ág
elindulásáig. Habár már jóval
elõtte lehetett fordítani és futtatni
natív ELF binárisokat (és
rendszermagokat) a &os; rendszereken, a &os; kezdetben
ódzkodott váltani az alapértelmezés
szerinti ELF formátumra. De vajon
miért? Nos, amikor a Linux-tábor megtette a maga
fájdalmas váltását az
ELF-re, az nem annyira azért volt, hogy
megszabaduljanak az a.out
végrehajtható formátumtól, hanem mert
a rugalmatlan, ugrótáblákon alapuló
oszottkönyvtár-kezelési mechanizmusaik nagyon
megnehezítették a gyártók és
fejlesztõk számára az osztott
függvénykönyvtárak
létrehozását. Mivel az
ELF formátumhoz rendelkezésre
álló eszközök megoldást
kínáltak az osztott könyvtárak
gondjaira, és mivel általánosan
elfogadták a jövõbe vezetõ
útként, a &os; is felvállalta az
átállással kapcsolatos
költségeket és végrehajtotta azt. A
&os; az osztott könyvtárakat leginkább a Sun
&sunos; rendszeréhez hasonlóan kezeli, ami egy
nagyon könnyen használható
megoldás.De miért van ilyen sok különbözõ
formátum?A ködös és sötét múltban
egyszerûbb hardverek voltak. Ezek az egyszerû hardverek
egyszerû, kicsi rendszereket támogattak. Az
a.out tökéletesen megfelelõ
volt egy ilyen egyszerû rendszer (egy PDP-11)
binárisainak tárolására. Ahogy az
emberek nekiláttak átültetni errõl az
egyszerû rendszerrõl a &unix;-ot más
rendszerekre, az a.out formátumot
továbbra is megtartották, mivel a &unix; kezdeti,
Motorola 68k-ra, VAXenre készített
átírataihoz is elegendõ volt.Ezután néhány éles
elméjû hardvermérnök kitalálta,
ha rá tudnák kényszeríteni a
programokat egy-két ügyetlen trükkre, akkor a
terveken meg tudnának spórolni néhány
logikai kaput és ezzel a processzor is gyorsabban tudna
futni. Miközben az a.out
formátumot ilyen hardverre (amit manapság
RISC-nek hívnak) is szerették
volna áthozni, kiderült, hogy ebben az esetben szinte
használhatatlan. Ezért az
a.out formátum által
felkínáltnál nagyobb
teljesítmény elérése
érdekében nekiláttak számos más
formátumot is kidolgozni. Ekkor jöttek létre a
COFF, ECOFF és
más hasonló formátumok, amelyek
elõbb-utóbb korlátokba ütköztek,
még mielõtt a történelem
megállapodott volna az ELF
formátumnál.Ráadásul a programok méretei egyre
inkább kezdtek nõni, miközben a lemezek (valamint
a fizikai memória) továbbra is viszonylag kicsik
maradtak, ezért megszületett az osztott
könyvtár ötlete, és a virtuális
memóriát kezelõ alrendszer is sokat finomodott.
Mivel ezek a különbözõ fejlesztések az
a.out formátumra épültek,
annak használatósága a beletömött
módosítások számával
együtt romlott. Emellett az emberek még szerettek
volna betölteni különféle dolgokat
futási idõben dinamikusan, vagy éppen a
memória és a lapozóállomány
megspórolásához kipucolni a programjaik egyes
részeit az inicializáló
kódrészletek lefutása után. A
programozási nyelvek is fejlõdtek, és az
emberek a fõprogram futása elõtt is akartak
kódot futtatni. Az a.out
formátum rengeteg apró foltozáson esett
keresztül, amelyek egy ideig még tudták is
tartani magukat. Azonban egy idõ után már az
a.out formátum egyre növekvõ
teljesítménycsökkenés nélkül
már nem volt képes állni a sarat.
Habár az ELF megszüntette a
fennálló problémák jelentõs
részét, egyúttal megnehezítette egy
alapvetõen mûködõ rendszer
leváltását. Ezért az
ELF formátumnak meg kellett
várnia azt a pillanatot, amikorra az
a.out használata már
kényelmetlenné vált.Azonban ahogy múlt az idõ, az
eszközökbõl, amelyekbõl a &os; a
fordításához szükséges
eszközöket származtatta (különösen
az assembler és a betöltõ),létrejött
két párhuzamos fejlesztési fa. A &os;-fa
kiegészült az osztott könyvtárak
támogatásával és hibákat
javított, miközben a GNU-fa alkotói, akik
eredetileg készítették ezeket a programokat,
újraírták az eszközeiket és a
keresztfordításhoz egyszerûbb
támogatást készítettek,
cserélhetõvé tették a
különbözõ formátumokat és
így tovább. Sokan akartak &os;-re
keresztfordítani, azonban nem volt
szerencséjük, mert a &os; régebbi
forrásait az as és
ld már nem emésztette
meg. Az új GNU eszköztár (a
binutils) viszont ismeri már a
keresztfordítást, az ELF
formátumot, az osztott könyvtárakat, a C++
kiterjesztéseit stb. Idõközben egyre több
gyártó ELF
formátumú binárisokat adott ki, és
jó érzés volt ezeket &os;-n is
futtatni.Az ELF sokkal kifejezõbb az
a.out formátumnál, és
jóval több bõvítési
lehetõséget enged az alaprendszerben. Az
ELF formátumhoz tartozó
eszközöket jobban karbantartják és
támogatja a keresztfordítást, ami viszont
sokaknak fontos. Az ELF talán
némileg lassabb, mint az a.out,
azonban ez nehezen mérhetõ le. Számos
részletben eltérnek ugyan, például
hogyan képeznek le lapokat, hogyan kezelik az
inicializáló kódot stb., de ezek egyike sem
igazán fontos. Idõvel az a.out
támogatása ki fog kerülni a
GENERIC rendszermagból, és
végül majd teljesen eltávolításra
kerül, ahogy a régi a.out
formátumú programok szépen lassan
kifutnak.Bõvebben olvashatunk...Man oldalakman oldalakA &os; legátfogóbb
dokumentációja a benne található man
oldalak összessége. A rendszerben
található szinte majdnem mindegyik programhoz
létezik egy rövid használati
útmutató, amely bemutatja az adott program
alapvetõ mûködését és a
különbözõ beállításait.
Ezek a leírások a man parancs
segítségével jeleníthetõek meg.
A man parancs használata
egyszerû:&prompt.user; man parancsahol a parancs a megismerni
kívánt parancsra utal. Például ha
az ls parancsról szeretnénk
többet megtudni, írjuk be:&prompt.user; man lsAz elérhetõ használati
útmutatókat a következõ számozott
szakaszokra osztották:Felhasználói parancsokRendszerhívások és
hibakódokA C függvénykönyvtár
függvényeiEszközmeghajtókÁllományformátumokJátékok és egyéb
szórakoztató alkalmazásokEgyéb információkRendszerkarbantartási és
-mûködtetési parancsokRendszermagfejlesztõk számáraBizonyos esetekben ugyanaz a téma az
útmutatók több szakaszában is
elérhetõ. Például létezik
chmod felhasználói parancs
és a chmod()
rendszerhívás. Ilyenkor a man
parancsnak meg tudjuk adni pontosan, melyik szakaszra is vagyunk
kíváncsiak:&prompt.user; man 1 chmodEnnek hatására a chmod
felhasználói parancshoz tartozó oldal
jelenik meg. Írott formában a használati
útmutatók különbözõ
szakaszaira hagyományosan a név után
zárójelbe tett számmal hivatkoznak,
így a &man.chmod.1; a chmod
felhasználói parancs és a &man.chmod.2; a
rendszerhívás.Ez a módszer remekül mûködik abban az
esetben, amikor ismerjük a parancs nevét, azonban
mit tegyünk akkor, ha nem is emlékszünk a
nevére? A man parancs a
segítségével
paraméterezhetõ úgy is, hogy a parancsok
leírásai között keressen valamilyen
kulcsszó mentén:&prompt.user; man -k mailEzzel a paranccsal megkapjuk azon parancsok
listáját, amelyek leírásában
szerepel a mail kulcsszó. Ez
egyébként mûködésében
teljesen megegyezik a apropos
paranccsal.Szóval szeretnénk megtudni, hogy a
/usr/bin könyvtárban levõ
parancsok pontosan mit is csinálnak? Ehhez írjuk
be:&prompt.user; cd /usr/bin
&prompt.user; man -f *vagy&prompt.user; cd /usr/bin
&prompt.user; whatis *ami ugyanezt teszi.A GNU info állományokSzabad Szoftver
AlapítványA &os;-ben megtalálható a Szabad Szoftver
Alapítvány (Free Software Foundation, FSF)
által készített számos
alkalmazás. Ezek a programok a szokványos man
oldalakon kívül még általában
tartalmaznak egy infonak nevezett, sokkal
részletesebb hipertext alapú leírást
is, amelyeket az info paranccsal, vagy ha van
fenn emacs, akkor annak az info
módjában tudjuk megjeleníteni.Az &man.info.1; parancs használatához ennyit
kell beírnunk:&prompt.user; infoItt a h lenyomásával kapunk
egy rövid bemutatkozást. A parancsok rövid
listáját a ? billentyû
hozza elõ.