3714 lines
120 KiB
XML
3714 lines
120 KiB
XML
<?xml version="1.0" encoding="iso-8859-2"?>
|
|
<!--
|
|
The FreeBSD Documentation Project
|
|
|
|
$FreeBSD$
|
|
-->
|
|
<!-- The FreeBSD Hungarian Documentation Project
|
|
Translated by: PALI, Gabor <pgj@FreeBSD.org>
|
|
%SOURCE% en_US.ISO8859-1/books/handbook/basics/chapter.xml
|
|
%SRCID% 1.157
|
|
-->
|
|
<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:id="basics" xml:lang="hu">
|
|
<info><title>A UNIX alapjai</title>
|
|
<authorgroup>
|
|
<author><personname><firstname>Chris</firstname><surname>Shumway</surname></personname><contrib>Átdolgozta: </contrib></author>
|
|
</authorgroup>
|
|
</info>
|
|
|
|
|
|
|
|
<sect1 xml:id="basics-synopsis">
|
|
<title>Áttekintés</title>
|
|
|
|
<para>Ez 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.</para>
|
|
|
|
<para>A fejezet elolvasása során
|
|
megismerjük:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>az ún. <quote>virtuális konzolok</quote>
|
|
használatát &os; alatt;</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>hogyan működnek együtt a &unix;
|
|
állományokra vonatkozó engedélyei
|
|
a &os; saját
|
|
kiegészítéseivel;</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>egy &os; állományrendszer
|
|
alapértelmezett
|
|
kialakítását;</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>a &os; lemezszervezését;</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>hogyan csatlakoztassunk és válasszunk le
|
|
állományrendszereket;</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>mik azok a folyamatok, démonok és
|
|
jelzések;</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>mik azok a parancsértelmezők, és
|
|
miként tudjuk megváltoztatni az
|
|
alapértelmezett bejelentkezési
|
|
környezetünket;</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>hogyan használjuk az alapvető
|
|
szövegszerkesztőket;</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>mik az eszközök és az
|
|
eszközleírók;</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>&os; alatt milyen bináris formátumokat
|
|
használhatunk;</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>szükség esetén hogyan olvassuk el a
|
|
megfelelő man oldalakat.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
</sect1>
|
|
|
|
<sect1 xml:id="consoles">
|
|
<title>Virtuális konzolok és terminálok</title>
|
|
|
|
<indexterm><primary>virtuális konzolok</primary></indexterm>
|
|
<indexterm><primary>terminálok</primary></indexterm>
|
|
|
|
<para>A &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
|
|
<quote>terminálok</quote> és <quote>konzolok</quote>
|
|
és miként tudjuk ezeket &os; alatt
|
|
használni.</para>
|
|
|
|
<sect2 xml:id="consoles-intro">
|
|
<title>A konzol</title>
|
|
|
|
<indexterm><primary>konzol</primary></indexterm>
|
|
|
|
<para>Ha 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:</para>
|
|
|
|
<screen>Additional ABI support:.
|
|
Local package initialization:.
|
|
Additional TCP options:.
|
|
|
|
Fri Sep 20 13:01:06 EEST 2002
|
|
|
|
FreeBSD/i386 (pc3.example.org) (ttyv0)
|
|
|
|
login:</screen>
|
|
|
|
<para>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ó:</para>
|
|
|
|
<programlisting>FreeBSD/i386 (pc3.example.org) (ttyv0)</programlisting>
|
|
|
|
<para>Ez a sor arról értesít minket, hogy a
|
|
rendszerünk éppen most indult el: egy
|
|
<quote>&os;</quote> konzolt látunk, amely egy &intel; x86
|
|
architektúrájú processzoron fut
|
|
<footnote>
|
|
<para>Erre utal pontosan az <literal>i386</literal>
|
|
jelzés. Még abban az esetben is az
|
|
<literal>i386</literal> 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
|
|
<quote>architektúráját</quote>
|
|
láthatjuk.</para>
|
|
</footnote>. A gépünk neve (mivel minden &unix;-os
|
|
gép rendelkezik egy névvel)
|
|
<systemitem>pc3.example.org</systemitem>, és ennek a
|
|
rendszerkonzolját látjuk most éppen
|
|
— a <filename>ttyv0</filename>
|
|
terminált.</para>
|
|
|
|
<para>Végezetül az utolsó sor mindig:</para>
|
|
|
|
<programlisting>login:</programlisting>
|
|
|
|
<para>Ez az a rész, ahova a &os;-be
|
|
történő bejelentkezéshez meg kell adnunk
|
|
a <quote>felhasználói nevünket</quote> (user
|
|
name). A következő szakaszban erről
|
|
olvashatunk.</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2 xml:id="consoles-login">
|
|
<title>Bejelentkezés a &os;-be</title>
|
|
|
|
<para>A &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.</para>
|
|
|
|
<para>Minden többfelhasználós rendszernek
|
|
valamilyen módon meg kell tudnia
|
|
különböztetnie egy
|
|
<quote>felhasználóját</quote> 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 <quote>be kell
|
|
jelentkeznie</quote> a rendszerbe. Minden
|
|
felhasználó rendelkezik egy egyedi névvel
|
|
(ez a <quote>felhasználói név</quote>)
|
|
és ehhez egy titkos kulcssal (ez a
|
|
<quote>jelszó</quote>). A &os; a programok
|
|
futtatásához ezt a kettőt fogja
|
|
elkérni a felhasználótól.</para>
|
|
|
|
<indexterm><primary>rendszerindító szkriptek</primary></indexterm>
|
|
|
|
<para>Egyből miután a &os; elindult és
|
|
befejezte a rendszerindításhoz használt
|
|
szkriptjeinek lefuttatását
|
|
<footnote>
|
|
<para>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.</para>
|
|
</footnote>, ez a kijelzés (vagy más néven
|
|
<quote>prompt</quote>) fog megjelenni és kér egy
|
|
érvényes felhasználói
|
|
nevet:</para>
|
|
|
|
<screen>login:</screen>
|
|
|
|
<para>A példa kedvéért most tegyük fel,
|
|
hogy a felhasználói nevünk
|
|
<systemitem class="username">pgj</systemitem>. Az iménti prompthoz
|
|
írjuk be, hogy <literal>pgj</literal> és nyomjuk
|
|
le az <keycap>Enter</keycap> billentyűt. Ezt
|
|
követően meg kell jelennie egy másik promptnak
|
|
is, amely egy <quote>jelszót</quote> (password)
|
|
kér:</para>
|
|
|
|
<screen>login: <userinput>pgj</userinput>
|
|
Password:</screen>
|
|
|
|
<para>Most pedig gépeljük be <systemitem class="username">pgj</systemitem>
|
|
jelszavát és nyomjunk utána egy
|
|
<keycap>Enter</keycap> billentyűt. Vigyázzunk, hogy
|
|
a jelszót <emphasis>nem látjuk</emphasis> 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.</para>
|
|
|
|
<para>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.</para>
|
|
|
|
<para>Bejelentkezés után a <acronym>MOTD</acronym>
|
|
(message of the day) vagy más néven <quote>a nap
|
|
üzenete</quote> jelenik meg, amelyet a parancssor
|
|
követ (egy <literal>#</literal>, <literal>$</literal> vagy
|
|
<literal>%</literal> jel). Innen tudhatjuk meg, hogy
|
|
sikerült bejelentkeznünk.</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2 xml:id="consoles-virtual">
|
|
<title>Több konzol használata</title>
|
|
|
|
<para>A &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 <quote>virtuális
|
|
konzolok</quote>.</para>
|
|
|
|
<para>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.</para>
|
|
|
|
<para>A konzolok közti váltásra a &os;
|
|
külön billentyűkombinációkat tart
|
|
fenn
|
|
<footnote>
|
|
<para>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.</para>
|
|
</footnote>. A &os;-ben a különböző
|
|
virtuális konzolok közti váltásra az
|
|
<keycombo><keycap>Alt</keycap><keycap>F1</keycap></keycombo>,
|
|
<keycombo><keycap>Alt</keycap><keycap>F2</keycap></keycombo>
|
|
billentyűket, az
|
|
<keycombo><keycap>Alt</keycap><keycap>F8</keycap></keycombo>
|
|
billentyűkombinációval
|
|
bezárólag használhatjuk.</para>
|
|
|
|
<para>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 <quote>úgy
|
|
látszik</quote>, mintha több
|
|
<quote>virtuális</quote> képernyőn és
|
|
billentyűzeten adnánk parancsokat a &os;-nek.</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2 xml:id="consoles-ttys">
|
|
<title>Az <filename>/etc/ttys</filename>
|
|
állomány</title>
|
|
|
|
<para>A &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
|
|
<filename>/etc/ttys</filename> állományon
|
|
keresztül adható meg.</para>
|
|
|
|
<para>A &os; virtuális konzoljait tehát az
|
|
<filename>/etc/ttys</filename> á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
|
|
<literal>#</literal> 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
|
|
<literal>ttyv</literal> résszel kezdődő
|
|
sorok:</para>
|
|
|
|
<programlisting># 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 secure</programlisting>
|
|
|
|
<para>Az á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.</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2 xml:id="consoles-singleuser">
|
|
<title>Az egyfelhasználós mód
|
|
konzolja</title>
|
|
|
|
<para>Az <quote>egyfelhasználós mód</quote>
|
|
részletes leírása a <xref linkend="boot-singleuser"/>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 <filename>/etc/ttys</filename> állományban.
|
|
Ehhez keressük meg a <literal>console</literal>
|
|
kezdetű sort:</para>
|
|
|
|
<programlisting># 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 secure</programlisting>
|
|
|
|
<note>
|
|
<para>A <literal>console</literal> felett látható
|
|
megjegyzés jelzi, hogy át tudjuk írni
|
|
ebben a sorban a <literal>secure</literal>
|
|
(biztonságos) értékű
|
|
paramétert <literal>insecure</literal> (nem
|
|
biztonságos) értékűre. Ilyenkor,
|
|
hogy ha a &os; egyfelhasználós módban
|
|
indul, kérni fogja a <systemitem class="username">root</systemitem>
|
|
felhasználó (a rendszeradminisztrátor)
|
|
jelszavát.</para>
|
|
|
|
<para><emphasis>Vigyázzunk, amikor ezt az
|
|
értéket <literal>insecure</literal>-ra
|
|
állítjuk!</emphasis> Ha ugyanis
|
|
véletlenül elfeledkeznénk a
|
|
<systemitem class="username">root</systemitem> 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.</para>
|
|
</note>
|
|
|
|
</sect2>
|
|
|
|
<sect2 xml:id="consoles-vidcontrol">
|
|
<title>A videomód váltása konzolban</title>
|
|
|
|
<para>A &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:</para>
|
|
|
|
<programlisting>options VESA
|
|
options SC_PIXEL_MODE</programlisting>
|
|
|
|
<para>Miutá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:</para>
|
|
|
|
<screen>&prompt.root; <userinput>vidcontrol -i mode</userinput></screen>
|
|
|
|
<para>A 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
|
|
<systemitem class="username">root</systemitem> felhasználóként a
|
|
&man.vidcontrol.1; segítségével
|
|
beállítani:</para>
|
|
|
|
<screen>&prompt.root; <userinput>vidcontrol MODE_279</userinput></screen>
|
|
|
|
<para>Ha az új videomód megfelel számunkra,
|
|
akkor ezt a beállítást az
|
|
<filename>/etc/rc.conf</filename> állományon
|
|
keresztül véglegesíthetjük is:</para>
|
|
|
|
<programlisting>allscreens_flags="MODE_279"</programlisting>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 xml:id="permissions">
|
|
<title>Engedélyek</title>
|
|
|
|
<indexterm><primary>UNIX</primary></indexterm>
|
|
|
|
<para>A &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.</para>
|
|
|
|
<para>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.</para>
|
|
|
|
<indexterm><primary>engedélyek</primary></indexterm>
|
|
<indexterm><primary>állományok
|
|
engedélyei</primary></indexterm>
|
|
|
|
<informaltable frame="none" pgwide="1">
|
|
<tgroup cols="3">
|
|
<thead>
|
|
<row>
|
|
<entry>Érték</entry>
|
|
<entry>Engedély</entry>
|
|
<entry>Könyvtárlistában</entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry>0</entry>
|
|
<entry>Nem olvasható, nem írható, nem
|
|
hajtható végre</entry>
|
|
<entry><literal>---</literal></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>1</entry>
|
|
<entry>Nem olvasható, nem írható,
|
|
végrehajtható</entry>
|
|
<entry><literal>--x</literal></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>2</entry>
|
|
<entry>Nem olvasható, írható, nem
|
|
hajtható végre</entry>
|
|
<entry><literal>-w-</literal></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>3</entry>
|
|
<entry>Nem olvasható, írható,
|
|
végrehajtható</entry>
|
|
<entry><literal>-wx</literal></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>4</entry>
|
|
<entry>Olvasható, nem írható, nem
|
|
hajtható végre</entry>
|
|
<entry><literal>r--</literal></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>5</entry>
|
|
<entry>Olvasható, nem írható,
|
|
végrehajtható</entry>
|
|
<entry><literal>r-x</literal></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>6</entry>
|
|
<entry>Olvasható, írható, nem
|
|
hajtható végre</entry>
|
|
<entry><literal>rw-</literal></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>7</entry>
|
|
<entry>Olvasható, írható,
|
|
végrehajtható</entry>
|
|
<entry><literal>rwx</literal></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</informaltable>
|
|
|
|
<indexterm><primary><command>ls</command></primary></indexterm>
|
|
<indexterm><primary>könyvtárak</primary></indexterm>
|
|
|
|
<para>A &man.ls.1; <option>-l</option> 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 <command>ls -l</command> parancsot egy
|
|
tetszőleges könyvtárban:</para>
|
|
|
|
<screen>&prompt.user; <userinput>ls -l</userinput>
|
|
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
|
|
...</screen>
|
|
|
|
<para>A példabeli <command>ls -l</command> parancs
|
|
kimenetének első oszlopa így bomlik fel:</para>
|
|
|
|
<screen>-rw-r--r--</screen>
|
|
|
|
<para>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
|
|
<literal>-</literal> jelzi, hogy egy hagyományos
|
|
állományról van szó. A
|
|
következő három karakter, ami ebben a
|
|
példában az <literal>rw-</literal>, adja meg az
|
|
állomány tulajdonosának engedélyeit.
|
|
Az ezután következő három karakter, az
|
|
<literal>r--</literal> mutatja az állomány
|
|
csoportjának engedélyeit. Az utolsó
|
|
három karakter, vagyis itt az <literal>r--</literal> 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
|
|
<literal>644</literal> lesz, ahol az egyes számjegyek
|
|
jelentik az állomány engedélyeinek
|
|
három elemét.</para>
|
|
|
|
<para>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
|
|
<filename>/dev</filename> könyvtárban
|
|
találjuk.</para>
|
|
|
|
<para>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
|
|
<quote>könyvtárváltás</quote> (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).</para>
|
|
|
|
<para>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
|
|
<emphasis>és</emphasis> végrehajtási
|
|
engedélyekkel rendelkeznünk.</para>
|
|
|
|
<para>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.</para>
|
|
|
|
<sect2>
|
|
<info><title>Szimbolikus engedélyek</title>
|
|
<authorgroup>
|
|
<author><personname><firstname>Tom</firstname><surname>Rhodes</surname></personname><contrib>Írta: </contrib></author>
|
|
</authorgroup>
|
|
</info>
|
|
|
|
|
|
|
|
<indexterm>
|
|
<primary>engedélyek</primary>
|
|
<secondary>szimbolikus</secondary>
|
|
</indexterm>
|
|
|
|
<para>A 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:</para>
|
|
|
|
<informaltable frame="none" pgwide="1">
|
|
<tgroup cols="3">
|
|
<thead>
|
|
<row>
|
|
<entry>Elem</entry>
|
|
<entry>Betű</entry>
|
|
<entry>Jelentése</entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry>(ki)</entry>
|
|
<entry>u</entry>
|
|
<entry>tulajdonos</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>(ki)</entry>
|
|
<entry>g</entry>
|
|
<entry>csoport tulajdonos</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>(ki)</entry>
|
|
<entry>o</entry>
|
|
<entry>egyéb</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>(ki)</entry>
|
|
<entry>a</entry>
|
|
<entry>mindenki (a <quote>világ</quote>)</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>(hogyan)</entry>
|
|
<entry>+</entry>
|
|
<entry>engedély megadása</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>(hogyan)</entry>
|
|
<entry>-</entry>
|
|
<entry>engedély visszavonása</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>(hogyan)</entry>
|
|
<entry>=</entry>
|
|
<entry>engedély explicit
|
|
beállítása</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>(milyen engedély)</entry>
|
|
<entry>r</entry>
|
|
<entry>olvasás</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>(milyen engedély)</entry>
|
|
<entry>w</entry>
|
|
<entry>írás</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>(milyen engedély)</entry>
|
|
<entry>x</entry>
|
|
<entry>végrehajtás</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>(milyen engedély)</entry>
|
|
<entry>t</entry>
|
|
<entry>ragadós (sticky bit)</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry>(milyen engedély)</entry>
|
|
<entry>s</entry>
|
|
<entry>UID vagy GID állítása</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</informaltable>
|
|
|
|
<para>Ezek 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
|
|
<replaceable>ÁLLOMÁNY</replaceable> nevű
|
|
állományhoz:</para>
|
|
|
|
<screen>&prompt.user; <userinput>chmod go= ÁLLOMÁNY</userinput></screen>
|
|
|
|
<para>Amennyiben 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:</para>
|
|
|
|
<screen>&prompt.user; <userinput>chmod go-w,a+x ÁLLOMÁNY</userinput></screen>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<info><title>A &os; állományjelzői</title>
|
|
<authorgroup>
|
|
<author><personname><firstname>Tom</firstname><surname>Rhodes</surname></personname><contrib>Írta: </contrib></author>
|
|
</authorgroup>
|
|
</info>
|
|
|
|
|
|
|
|
<para>A korábban tárgyalt engedélyek mellett
|
|
még a &os; ismeri az ún.
|
|
<quote>állományjelzők</quote> (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.</para>
|
|
|
|
<para>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 <systemitem class="username">root</systemitem>
|
|
felhasználó (a rendszer adminisztrátora) se
|
|
legyen képes állományokat
|
|
eltávolítani vagy módosítani.</para>
|
|
|
|
<para>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 <filename>allomany1</filename>
|
|
állományon:</para>
|
|
|
|
<screen>&prompt.root; <userinput>chflags sunlink allomany1</userinput></screen>
|
|
|
|
<para>A törölhetetlen jelzés
|
|
eltávolításához egyszerűen csak
|
|
írjuk be az előző parancsot úgy, hogy a
|
|
<quote>sunlink</quote> paraméter elejére
|
|
még beszúrunk egy <quote>no</quote>
|
|
szövegrészt. Így:</para>
|
|
|
|
<screen>&prompt.root; <userinput>chflags nosunlink allomany1</userinput></screen>
|
|
|
|
<para>Az állományokra éppen
|
|
érvényes jelzéseket az &man.ls.1; parancs
|
|
<option>-lo</option> kapcsolójának
|
|
segítségével jeleníthetjük
|
|
meg:</para>
|
|
|
|
<screen>&prompt.root; <userinput>ls -lo file1
|
|
</userinput></screen>
|
|
|
|
<para>Ennek megfelelően az eredménynek valahogy
|
|
így kellene kinéznie:</para>
|
|
|
|
<programlisting>-rw-r--r-- 1 trhodes trhodes sunlnk 0 Mar 1 05:54 allomany1</programlisting>
|
|
|
|
<para>Sok jelzés csak a <systemitem class="username">root</systemitem>
|
|
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.</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<info><title>A setuid, setgid és sticky engedélyek</title>
|
|
<authorgroup>
|
|
<author><personname><firstname>Tom</firstname><surname>Rhodes</surname></personname><contrib>Készítette: </contrib></author>
|
|
</authorgroup>
|
|
</info>
|
|
|
|
|
|
|
|
<para>A 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
|
|
<literal>setuid</literal>, <literal>setgid</literal> és
|
|
<literal>sticky</literal> típusú
|
|
engedélyek.</para>
|
|
|
|
<para>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.</para>
|
|
|
|
<para>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
|
|
<systemitem class="username">root</systemitem> 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
|
|
<errorname>Permission Denied</errorname> hibaüzenettel
|
|
találkoznának.</para>
|
|
|
|
<note>
|
|
<para>A &man.mount.8; <literal>nosuid</literal>
|
|
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 <literal>nosuid</literal>
|
|
wrapperek segítségével meg lehet
|
|
kerülni.</para>
|
|
</note>
|
|
|
|
<para>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:</para>
|
|
|
|
<screen>&prompt.root; <userinput>chmod 4755 suidexample.sh</userinput></screen>
|
|
|
|
<para>A
|
|
<filename>suidexample.sh</filename>
|
|
állomány engedélyei ezt követően
|
|
már így fognak megjelenni:</para>
|
|
|
|
<screen>-rwsr-xr-x 1 trhodes trhodes 63 Aug 29 06:36 suidexample.sh</screen>
|
|
|
|
<para>Most 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 <literal>s</literal>
|
|
bitre. Ennek köszönhetően a
|
|
<command>passwd</command> parancshoz hasonló módon
|
|
kibővített engedélyekkel leszünk
|
|
képesek futtatni programokat.</para>
|
|
|
|
<para>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 <command>passwd</command>
|
|
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.</para>
|
|
|
|
<para>Tehát az egyik terminálon a
|
|
következőt látjuk:</para>
|
|
|
|
<screen>&prompt.user; <userinput>passwd</userinput>
|
|
Changing local password for trhodes
|
|
Old Password:</screen>
|
|
|
|
<para>Eközben pedig a másikon:</para>
|
|
|
|
<screen>&prompt.root; <userinput>ps aux | grep passwd</userinput>
|
|
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 passwd</screen>
|
|
|
|
<para>A <command>passwd</command> parancsot egyszerű
|
|
felhasználóként adtunk ki, azonban
|
|
jól látható, hogy valójában a
|
|
<systemitem class="username">root</systemitem> felhasználó
|
|
azonosítójával fut.</para>
|
|
|
|
<para>A <literal>setgid</literal> a <literal>setuid</literal>
|
|
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.</para>
|
|
|
|
<para>Úgy tudjuk állományokon
|
|
beállítani a <literal>setgid</literal>
|
|
típusú engedélyt, ha az iménti
|
|
példához hasonlóan a
|
|
<command>chmod</command> parancs hívásakor
|
|
még egy kettest (2) írunk az engedélyek
|
|
elé:</para>
|
|
|
|
<screen>&prompt.root; <userinput>chmod 2755 sgidexample.sh</userinput></screen>
|
|
<para>Az í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 <literal>s</literal> bit:</para>
|
|
|
|
<screen>-rwxr-sr-x 1 trhodes trhodes 44 Aug 31 01:49 sgidexample.sh</screen>
|
|
|
|
<note>
|
|
<para>Az 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.</para>
|
|
</note>
|
|
|
|
<para>Ez a két speciális engedély (a
|
|
<literal>setuid</literal> és a <literal>setgid</literal>) 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. <literal>sticky</literal> bit.</para>
|
|
|
|
<para>Ha a <literal>sticky</literal> 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 <filename>/tmp</filename> 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:</para>
|
|
|
|
<screen>&prompt.root; <userinput>chmod 1777 /tmp</userinput></screen>
|
|
|
|
<para>Most már az <command>ls</command> parancs
|
|
segítségével láthatjuk ennek a
|
|
hatását:</para>
|
|
|
|
<screen>&prompt.root; <userinput>ls -al / | grep tmp</userinput>
|
|
drwxrwxrwt 10 root wheel 512 Aug 31 01:49 tmp</screen>
|
|
|
|
<para>A <literal>sticky</literal> bit a
|
|
beállítások végén
|
|
felbukkanó <literal>t</literal> révén
|
|
azonosítható be.</para>
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 xml:id="dirstructure">
|
|
<title>A könyvtárak elrendezése</title>
|
|
|
|
<indexterm><primary>könyvtárhierarchia</primary></indexterm>
|
|
|
|
<para>A &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 <quote>/</quote>. 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.</para>
|
|
|
|
<para>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 <xref linkend="disk-organization"/>ban
|
|
olvashatunk. A szabványos csatlakozási pontok:
|
|
<filename>/usr</filename>, <filename>/var</filename>,
|
|
<filename>/tmp</filename>, <filename>/mnt</filename> és
|
|
<filename>/cdrom</filename>. Ezekre a könyvtárakra
|
|
általában az <filename>/etc/fstab</filename>
|
|
állományban találunk hivatkozásokat.
|
|
Az <filename>/etc/fstab</filename> á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
|
|
<filename>/etc/fstab</filename> á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 <option>noauto</option>
|
|
beállítást. Ennek részleteit a <xref linkend="disks-fstab"/>ban találhatjuk meg.</para>
|
|
|
|
<para>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.</para>
|
|
|
|
<para>
|
|
<informaltable frame="none" pgwide="1">
|
|
<tgroup cols="2">
|
|
<thead>
|
|
<row>
|
|
<entry>Könyvtár</entry>
|
|
<entry>Mi található itt</entry>
|
|
</row>
|
|
</thead>
|
|
<tbody valign="top">
|
|
<row>
|
|
<entry><filename>/</filename></entry>
|
|
<entry>Az állományrendszer
|
|
gyökere.</entry>
|
|
</row>
|
|
<row>
|
|
<entry><filename>/bin/</filename></entry>
|
|
<entry>Az egy- és
|
|
többfelhasználós környezetekben
|
|
is egyaránt alapvető
|
|
felhasználói
|
|
segédprogramok.</entry>
|
|
</row>
|
|
<row>
|
|
<entry><filename>/boot/</filename></entry>
|
|
<entry>Az operációs rendszer
|
|
indítása során használt
|
|
programok és konfigurációs
|
|
állományok.</entry>
|
|
</row>
|
|
<row>
|
|
<entry><filename>/boot/defaults/</filename></entry>
|
|
<entry>A rendszerindítás
|
|
alapértelmezett konfigurációs
|
|
állományai. Lásd
|
|
&man.loader.conf.5;</entry>
|
|
</row>
|
|
<row>
|
|
<entry><filename>/dev/</filename></entry>
|
|
<entry>Eszközleírók, lásd
|
|
&man.intro.4;.</entry>
|
|
</row>
|
|
<row>
|
|
<entry><filename>/etc/</filename></entry>
|
|
<entry>Rendszerkonfigurációs
|
|
állományok és szkriptek.</entry>
|
|
</row>
|
|
<row>
|
|
<entry><filename>/etc/defaults/</filename></entry>
|
|
<entry>Az alapértelmezett
|
|
rendszerkonfigurációs
|
|
állományok, lásd
|
|
&man.rc.8;.</entry>
|
|
</row>
|
|
<row>
|
|
<entry><filename>/etc/mail/</filename></entry>
|
|
<entry>A &man.sendmail.8; programhoz hasonló
|
|
levélküldő rendszerek
|
|
konfigurációs
|
|
állományai.</entry>
|
|
</row>
|
|
<row>
|
|
<entry><filename>/etc/namedb/</filename></entry>
|
|
<entry>A <command>named</command> program
|
|
konfigurációs állományai,
|
|
lásd &man.named.8;.</entry>
|
|
</row>
|
|
<row>
|
|
<entry><filename>/etc/periodic/</filename></entry>
|
|
<entry>A &man.cron.8; által naponta, hetente
|
|
és havonta lefuttatandó szkriptek,
|
|
lásd &man.periodic.8;.</entry>
|
|
</row>
|
|
<row>
|
|
<entry><filename>/etc/ppp/</filename></entry>
|
|
<entry>A <command>ppp</command> program
|
|
konfigurációs állományai,
|
|
lásd &man.ppp.8;.</entry>
|
|
</row>
|
|
<row>
|
|
<entry><filename>/mnt/</filename></entry>
|
|
<entry>Egy üres könyvtár, amelyet a
|
|
rendszergazdák általában ideiglenes
|
|
csatlakozási pontként
|
|
használnak.</entry>
|
|
</row>
|
|
<row>
|
|
<entry><filename>/proc/</filename></entry>
|
|
<entry>A futó programokat tartalmazó
|
|
állományrendszer, lásd
|
|
&man.procfs.5;, illetve &man.mount.procfs.8;.</entry>
|
|
</row>
|
|
<row>
|
|
<entry><filename>/rescue/</filename></entry>
|
|
<entry>Statikusan linkelt programok vészhelyzet
|
|
esetére, lásd &man.rescue.8;.</entry>
|
|
</row>
|
|
<row>
|
|
<entry><filename>/root/</filename></entry>
|
|
<entry>A <systemitem class="username">root</systemitem>
|
|
felhasználó könyvtára.</entry>
|
|
</row>
|
|
<row>
|
|
<entry><filename>/sbin/</filename></entry>
|
|
<entry>Az egy- és
|
|
többfelhasználós környezetekben
|
|
fontos rendszerprogramok és
|
|
rendszerfelügyeleti eszközök.</entry>
|
|
</row>
|
|
<row>
|
|
<entry><filename>/tmp/</filename></entry>
|
|
<entry>Átmeneti állományok. A
|
|
<filename>/tmp</filename>
|
|
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
|
|
<filename>/tmp</filename>
|
|
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
|
|
<filename>/etc/fstab</filename> megfelelő
|
|
módosításával, lásd
|
|
&man.mdmfs.8;).</entry>
|
|
</row>
|
|
<row>
|
|
<entry><filename>/usr/</filename></entry>
|
|
<entry>A felhasználói programok és
|
|
alkalmazások többsége.</entry>
|
|
</row>
|
|
<row>
|
|
<entry><filename>/usr/bin/</filename></entry>
|
|
<entry>Általános segédprogramok,
|
|
programozási eszközök és
|
|
alkalmazások.</entry>
|
|
</row>
|
|
<row>
|
|
<entry><filename>/usr/include/</filename></entry>
|
|
<entry>Szabványos C
|
|
include-állományok.</entry>
|
|
</row>
|
|
<row>
|
|
<entry><filename>/usr/lib/</filename></entry>
|
|
<entry>Függvénykönyvtárak.</entry>
|
|
</row>
|
|
<row>
|
|
<entry><filename>/usr/libdata/</filename></entry>
|
|
<entry>Egyéb hasznos
|
|
adatállományok.</entry>
|
|
</row>
|
|
<row>
|
|
<entry><filename>/usr/libexec/</filename></entry>
|
|
<entry>(Más programok által használt)
|
|
Rendszerdémonok és
|
|
rendszereszközök.</entry>
|
|
</row>
|
|
<row>
|
|
<entry><filename>/usr/local/</filename></entry>
|
|
<entry>A helyi rendszeren telepített programok,
|
|
függvénykönyvtárak stb. A &os;
|
|
portrendszere is ezt használja
|
|
alapértelmezés szerint. A
|
|
<filename>/usr/local</filename> könyvtáron
|
|
belül a &man.hier.7; man oldalon
|
|
található <filename>/usr</filename>
|
|
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
|
|
<filename>/usr/local</filename> alatt
|
|
található, nem pedig a
|
|
<filename>/usr/local/share</filename>
|
|
könyvtáron belül, valamint a portok
|
|
dokumentációja a
|
|
<filename>share/doc/port</filename>
|
|
könyvtárban található.</entry>
|
|
</row>
|
|
<row>
|
|
<entry><filename>/usr/obj/</filename></entry>
|
|
<entry>A <filename>/usr/src</filename>
|
|
könyvtárfában található
|
|
források fordítása során
|
|
keletkező architektúrafüggő
|
|
objektumok.</entry>
|
|
</row>
|
|
<row>
|
|
<entry><filename>/usr/ports/</filename></entry>
|
|
<entry>A &os; Portgyűjtemény
|
|
(választható).</entry>
|
|
</row>
|
|
<row>
|
|
<entry><filename>/usr/sbin/</filename></entry>
|
|
<entry>(A felhasználók által
|
|
használt) Rendszerdémonok és
|
|
rendszereszközök.</entry>
|
|
</row>
|
|
<row>
|
|
<entry><filename>/usr/share/</filename></entry>
|
|
<entry>Architektúrafüggő
|
|
állományok.</entry>
|
|
</row>
|
|
<row>
|
|
<entry><filename>/usr/src/</filename></entry>
|
|
<entry>BSD és/vagy helyi források.</entry>
|
|
</row>
|
|
<row>
|
|
<entry><filename>/usr/X11R6/</filename></entry>
|
|
<entry>Az X11R6 rendszer programjai,
|
|
függvénykönyvtárai stb.
|
|
(választható)</entry>
|
|
</row>
|
|
<row>
|
|
<entry><filename>/var/</filename></entry>
|
|
<entry>Különféle napló,
|
|
átmeneti, ideiglenes és pufferben
|
|
tárolt állományok. A
|
|
memóriában létrehozott
|
|
állományrendszereket is olykor a <filename>/var</filename>
|
|
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
|
|
<filename>/etc/fstab</filename> megfelelő
|
|
módosításával, lásd
|
|
&man.mdmfs.8;).</entry>
|
|
</row>
|
|
<row>
|
|
<entry><filename>/var/log/</filename></entry>
|
|
<entry>Mindenféle rendszernaplók.</entry>
|
|
</row>
|
|
<row>
|
|
<entry><filename>/var/mail/</filename></entry>
|
|
<entry>A felhasználók postafiókjait
|
|
tároló állományok.</entry>
|
|
</row>
|
|
<row>
|
|
<entry><filename>/var/spool/</filename></entry>
|
|
<entry>A nyomtatók és a levelezés
|
|
puffereléséhez használt
|
|
könyvtárak.</entry>
|
|
</row>
|
|
<row>
|
|
<entry><filename>/var/tmp/</filename></entry>
|
|
<entry>Átmeneti állományok. Az itt
|
|
található állományok
|
|
általában megmaradnak a
|
|
következő rendszerindítás
|
|
alkalmával is, hacsak a <filename>/var</filename> nem egy
|
|
memóriában létező
|
|
állományrendszer.</entry>
|
|
</row>
|
|
<row>
|
|
<entry><filename>/var/yp</filename></entry>
|
|
<entry>A NIS állományai.</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</informaltable>
|
|
</para>
|
|
|
|
</sect1>
|
|
|
|
<sect1 xml:id="disk-organization">
|
|
<title>A lemezek szervezése</title>
|
|
|
|
<para>Az á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
|
|
<filename>readme.txt</filename> és a
|
|
<filename>README.TXT</filename> 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
|
|
<filename>.txt</filename> volt) alapján dönti el, hogy
|
|
az adott állomány vajon program, dokumentum vagy
|
|
valamilyen más fajtájú adat.</para>
|
|
|
|
<para>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.</para>
|
|
|
|
<para>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 <literal>/</literal> 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
|
|
<filename>ize</filename> nevű könyvtárunk,
|
|
amelyben található egy <filename>mize</filename>
|
|
könyvtár, amelyen belül pedig egy
|
|
<filename>readme.txt</filename>, akkor ennek az
|
|
állománynak a teljes neve, vagy
|
|
másképpen szólva az
|
|
<firstterm>elérési útja</firstterm>
|
|
<filename>ize/mize/readme.txt</filename> lesz.</para>
|
|
|
|
<para>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
|
|
<firstterm>gyökérkönyvtárának</firstterm>
|
|
nevezünk. Ez a gyökérkönyvtár
|
|
tartalmazhat aztán további
|
|
könyvtárakat.</para>
|
|
|
|
<para>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
|
|
<literal>\</literal> jellel választja el az
|
|
állományok és könyvtárak neveit,
|
|
miközben a &macos; erre a <literal>:</literal> jelet
|
|
használja.</para>
|
|
|
|
<para>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 <filename>c:/ize/mize/readme.txt</filename>.</para>
|
|
|
|
<para>Helyette az egyik állományrendszert
|
|
kijelölik
|
|
<firstterm>gyökér-állományrendszernek</firstterm>.
|
|
A gyökér-állományrendszer
|
|
gyökérkönyvtárára hivatkoznak
|
|
később <literal>/</literal>
|
|
könyvtárként. Ezután minden más
|
|
állományrendszert a
|
|
gyökér-állományrendszerhez
|
|
<firstterm>csatlakoztatunk</firstterm>. 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.</para>
|
|
|
|
<para>Tegyük fel, hogy van három
|
|
állományrendszerünk, hívjuk ezeket
|
|
<literal>A</literal>-nak, <literal>B</literal>-nek és
|
|
<literal>C</literal>-nek. Minden állományrendszer
|
|
rendelkezik egy gyökérkönyvtárral, amely
|
|
két további könyvtárat tartalmaz:
|
|
<literal>A1</literal>-et és <literal>A2</literal>-t
|
|
(és ennek megfelelően a többi
|
|
<literal>B1</literal>-et és <literal>B2</literal>-t,
|
|
valamint <literal>C1</literal> és
|
|
<literal>C2</literal>-t).</para>
|
|
|
|
<para>Nevezzük <literal>A</literal>-t a
|
|
gyökér-állományrendszernek. Ha a
|
|
könyvtár tartalmának
|
|
megjelenítéséhez most kiadnánk az
|
|
<command>ls</command> parancsot, két
|
|
alkönyvtárat látnánk, az
|
|
<literal>A1</literal>-et és <literal>A2</literal>-t. A
|
|
létrejött könyvtárfa valahogy így
|
|
nézne ki:</para>
|
|
|
|
<mediaobject>
|
|
<imageobject>
|
|
<imagedata fileref="install/example-dir1"/>
|
|
</imageobject>
|
|
|
|
<textobject>
|
|
<literallayout class="monospaced"> /
|
|
|
|
|
+--- A1
|
|
|
|
|
`--- A2</literallayout>
|
|
</textobject>
|
|
</mediaobject>
|
|
|
|
<para>Egy állományrendszert csak egy másik
|
|
állományrendszer valamelyik
|
|
könyvtárába tudunk csatlakoztatni.
|
|
Ezért most tételezzük fel, hogy a
|
|
<literal>B</literal> állományrendszert az
|
|
<literal>A1</literal> könyvtárba csatlakoztatjuk.
|
|
Ezután a <literal>B</literal>
|
|
gyökérkönyvtára átveszi a
|
|
<literal>A1</literal> helyét az
|
|
állományrendszerben, és ennek
|
|
megfelelően megjelennek a <literal>B</literal>
|
|
könyvtárai is:</para>
|
|
|
|
<mediaobject>
|
|
<imageobject>
|
|
<imagedata fileref="install/example-dir2"/>
|
|
</imageobject>
|
|
|
|
<textobject>
|
|
<literallayout class="monospaced"> /
|
|
|
|
|
+--- A1
|
|
| |
|
|
| +--- B1
|
|
| |
|
|
| `--- B2
|
|
|
|
|
`--- A2</literallayout>
|
|
</textobject>
|
|
</mediaobject>
|
|
|
|
<para>A <literal>B1</literal> vagy <literal>B2</literal>
|
|
könyvtárakban található
|
|
állományok bármelyike innentől kezdve a
|
|
<filename>/A1/B1</filename>, illetve a <filename>/A1/B2</filename>
|
|
elérési utakon érhetőek el. Az
|
|
<filename>A1</filename> könyvtárban
|
|
található állományok erre az
|
|
időre rejtve maradnak. Akkor fognak újra felbukkanni,
|
|
ha a <literal>B</literal> állományrendszert
|
|
<firstterm>leválasztjuk</firstterm> az <literal>A</literal>
|
|
állományrendszerről.</para>
|
|
|
|
<para>Ha a <literal>B</literal> állományrendszert az
|
|
<literal>A2</literal> könyvtárba
|
|
csatlakoztatnánk, az iménti ábra
|
|
nagyjából így nézne ki:</para>
|
|
|
|
<mediaobject>
|
|
<imageobject>
|
|
<imagedata fileref="install/example-dir3"/>
|
|
</imageobject>
|
|
|
|
<textobject>
|
|
<literallayout class="monospaced"> /
|
|
|
|
|
+--- A1
|
|
|
|
|
`--- A2
|
|
|
|
|
+--- B1
|
|
|
|
|
`--- B2</literallayout>
|
|
</textobject>
|
|
</mediaobject>
|
|
|
|
<para>és ennek megfelelően az előbb tárgyalt
|
|
elérési utak <filename>/A2/B1</filename> és
|
|
<filename>/A2/B2</filename> lennének.</para>
|
|
|
|
<para>Az állományrendszerek egymáshoz is
|
|
csatlakoztathatóak. A példát ennek
|
|
megfelelően úgy is folytathatjuk, hogy a
|
|
<literal>C</literal> állományrendszert
|
|
csatlakoztatjuk <literal>B</literal>
|
|
állományrendszerben található
|
|
<literal>B1</literal> könyvtárhoz. Ennek
|
|
eredménye a következő elrendezés
|
|
lesz:</para>
|
|
|
|
<mediaobject>
|
|
<imageobject>
|
|
<imagedata fileref="install/example-dir4"/>
|
|
</imageobject>
|
|
|
|
<textobject>
|
|
<literallayout class="monospaced"> /
|
|
|
|
|
+--- A1
|
|
|
|
|
`--- A2
|
|
|
|
|
+--- B1
|
|
| |
|
|
| +--- C1
|
|
| |
|
|
| `--- C2
|
|
|
|
|
`--- B2</literallayout>
|
|
</textobject>
|
|
</mediaobject>
|
|
|
|
<para>Vagy a <literal>C</literal> állományrendszer az
|
|
<literal>A1</literal> könyvtáron keresztül
|
|
csatlakoztatható akár közvetlenül az
|
|
<literal>A</literal> állományrendszerhez is:</para>
|
|
|
|
<mediaobject>
|
|
<imageobject>
|
|
<imagedata fileref="install/example-dir5"/>
|
|
</imageobject>
|
|
|
|
<textobject>
|
|
<literallayout class="monospaced"> /
|
|
|
|
|
+--- A1
|
|
| |
|
|
| +--- C1
|
|
| |
|
|
| `--- C2
|
|
|
|
|
`--- A2
|
|
|
|
|
+--- B1
|
|
|
|
|
`--- B2</literallayout>
|
|
</textobject>
|
|
</mediaobject>
|
|
|
|
<para>Az &ms-dos; operációs rendszert ismerők
|
|
számára ez hasonló lehet a
|
|
<command>join</command> parancshoz (habár teljesen nem
|
|
egyezik meg vele).</para>
|
|
|
|
<para>Á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.</para>
|
|
|
|
<para>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.</para>
|
|
|
|
<itemizedlist>
|
|
<title>Több állományrendszer
|
|
használatának előnyei</title>
|
|
|
|
<listitem>
|
|
<para>A különböző
|
|
állományrendszereknek
|
|
különböző
|
|
<firstterm>csatlakoztatási
|
|
beállításai</firstterm> (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 <filename>/home</filename>
|
|
könyvtárakat) a többi
|
|
állományrendszertől, lehetővé
|
|
válik számunkra, hogy
|
|
<firstterm>nosuid</firstterm>
|
|
beállítással csatlakoztassuk ezeket. Ez
|
|
a beállítás megakadályozza, hogy
|
|
ezekben a
|
|
<firstterm>suid</firstterm>/<firstterm>guid</firstterm>
|
|
bitekkel rendelkező végrehajtható
|
|
állományok használhatóak legyenek,
|
|
ezáltal növeli a rendszer
|
|
biztonságosságát.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>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.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>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.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<itemizedlist>
|
|
<title>Egyetlen állományrendszer
|
|
használatának előnyei</title>
|
|
|
|
<listitem>
|
|
<para>Az á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.</para>
|
|
|
|
<important>
|
|
<para>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.</para>
|
|
</important>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para>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
|
|
<quote>partíció</quote> jelentését
|
|
takarja (mint például egy &ms-dos;
|
|
partíció). Minden partíciót egy
|
|
betű azonosít <literal>a</literal>-tól
|
|
<literal>h</literal>-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.</para>
|
|
|
|
<para>A &os; ezeken felül külön lemezterülen
|
|
tárolja a
|
|
<firstterm>lapozóállomány</firstterm>t (swap
|
|
space). A lapozóállományt használja a
|
|
&os; <firstterm>virtuális memória</firstterm>
|
|
(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).</para>
|
|
|
|
<para>Némely partícióhoz kötődnek
|
|
bizonyos megszokások.</para>
|
|
|
|
<informaltable frame="none" pgwide="1">
|
|
<tgroup cols="2">
|
|
<colspec colwidth="1*"/>
|
|
<colspec colwidth="5*"/>
|
|
<thead>
|
|
<row>
|
|
<entry>Partíció</entry>
|
|
<entry>Megszokás</entry>
|
|
</row>
|
|
</thead>
|
|
<tbody valign="top">
|
|
<row>
|
|
<entry><literal>a</literal></entry>
|
|
<entry>Általában ez tartalmazza a
|
|
gyökér-állományrendszert.</entry>
|
|
</row>
|
|
<row>
|
|
<entry><literal>b</literal></entry>
|
|
<entry>Általában ez tartalmazza a
|
|
lapozóállományt.</entry>
|
|
</row>
|
|
<row>
|
|
<entry><literal>c</literal></entry>
|
|
<entry>Mé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
|
|
<literal>c</literal> 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.</entry>
|
|
</row>
|
|
<row>
|
|
<entry><literal>d</literal></entry>
|
|
<entry>A <literal>d</literal> partícióhoz
|
|
egykoron kapcsolódott különleges
|
|
jelentés, azonban mostanra ez már
|
|
megszűnt, és a <literal>d</literal> egy
|
|
teljesen átlagos partíciónak
|
|
tekinthető.</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</informaltable>
|
|
|
|
<para>Minden állományrendszert tartalmazó
|
|
partíciót a &os; egy ún.
|
|
<firstterm>slice</firstterm>-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.</para>
|
|
|
|
<indexterm><primary>slice-ok</primary></indexterm>
|
|
<indexterm><primary>partíciók</primary></indexterm>
|
|
<indexterm><primary>veszélyesen dedikált</primary></indexterm>
|
|
|
|
<para>A slice-ok sorszáma 1-től indulva az
|
|
eszközök neve után egy <literal>s</literal>
|
|
betűvel elválasztva következik. Így
|
|
tehát a <quote>da0<emphasis>s1</emphasis></quote>
|
|
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 <quote>ad0<emphasis>s5</emphasis></quote>
|
|
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.</para>
|
|
|
|
<para>A slice-ok, a <quote>veszélyesen
|
|
dedikált</quote> (Dangerously Dedicated) fizikai
|
|
meghajtók, és minden más olyan
|
|
meghajtó, amely
|
|
<firstterm>partíciókat</firstterm> tartalmaz,
|
|
<literal>a</literal>-tól <literal>h</literal>-ig
|
|
jelölődnek. Ez a betű az eszköz neve
|
|
után következik, így ennek megfelelően a
|
|
<quote>da0<emphasis>a</emphasis></quote> lesz az első
|
|
<quote>da</quote> meghajtó <quote>a</quote>, vagyis a
|
|
<quote>veszélyesen dedikált</quote>
|
|
partíciója. Az
|
|
<quote>ad1s3<emphasis>e</emphasis></quote> lesz a második
|
|
IDE-lemezmeghajtón a harmadik slice-ban szereplő
|
|
ötödik partíció.</para>
|
|
|
|
<para>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 <xref linkend="basics-dev-codes"/>ban
|
|
találhatóak.</para>
|
|
|
|
<para>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 <literal>s</literal>-sel
|
|
elválasztva a tartalmazó slice
|
|
sorszámát, majd ezt a partíció
|
|
betűjelével zárjuk. Erre
|
|
példákat a <xref linkend="basics-disk-slice-part"/>ban láthatunk.</para>
|
|
|
|
<para>Az érhetőség kedvéért a <xref linkend="basics-concept-disk-model"/> bemutatja egy lemez
|
|
kiosztásának fogalmi sablonját.</para>
|
|
|
|
<para>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.</para>
|
|
|
|
<table frame="none" pgwide="1" xml:id="basics-dev-codes">
|
|
<title>Lemezes eszközök kódjai</title>
|
|
|
|
<tgroup cols="2">
|
|
<colspec colwidth="1*"/>
|
|
<colspec colwidth="5*"/>
|
|
<thead>
|
|
<row>
|
|
<entry>Kód</entry>
|
|
<entry>Jelentés</entry>
|
|
</row>
|
|
</thead>
|
|
<tbody>
|
|
<row>
|
|
<entry><filename>ad</filename></entry>
|
|
<entry>ATAPI (IDE) lemez</entry>
|
|
</row>
|
|
<row>
|
|
<entry><filename>da</filename></entry>
|
|
<entry>közvetlen hozzáférésű
|
|
SCSI lemez</entry>
|
|
</row>
|
|
<row>
|
|
<entry><filename>acd</filename></entry>
|
|
<entry>ATAPI (IDE) CDROM</entry>
|
|
</row>
|
|
<row>
|
|
<entry><filename>cd</filename></entry>
|
|
<entry>SCSI CDROM</entry>
|
|
</row>
|
|
<row>
|
|
<entry><filename>fd</filename></entry>
|
|
<entry>Floppylemez</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
<example xml:id="basics-disk-slice-part">
|
|
<title>Példák lemezek, slice-ok és
|
|
partíciók neveire</title>
|
|
|
|
<informaltable frame="none" pgwide="1">
|
|
<tgroup cols="2">
|
|
<colspec colwidth="1*"/>
|
|
<colspec colwidth="5*"/>
|
|
<thead>
|
|
<row>
|
|
<entry>Név</entry>
|
|
<entry>Jelentés</entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry><literal>ad0s1a</literal></entry>
|
|
<entry>Az első IDE lemezen (<literal>ad0</literal>)
|
|
levő első slice (<literal>s1</literal>)
|
|
első partíciója
|
|
(<literal>a</literal>).</entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry><literal>da1s2e</literal></entry>
|
|
<entry>A második SCSI-lemzen
|
|
(<literal>da1</literal>) levő második slice
|
|
(<literal>s2</literal>) ötödik
|
|
partíciója (<literal>e</literal>).</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</informaltable>
|
|
</example>
|
|
|
|
<example xml:id="basics-concept-disk-model">
|
|
<title>Egy lemez kialakításának
|
|
sablonja</title>
|
|
|
|
<para>Az á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 <filename>C:</filename> 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.</para>
|
|
|
|
<para>A három partíció mindegyikén
|
|
találhatunk egy-egy állományrendszert. Az
|
|
<literal>a</literal> partíció lesz a
|
|
gyökér-állományrendszer, az
|
|
<literal>e</literal> lesz a rendszerünkben a
|
|
<filename>/var</filename> és az <literal>f</literal>
|
|
pedig a <filename>/usr</filename> könyvtár.</para>
|
|
|
|
<mediaobject>
|
|
<imageobject>
|
|
<imagedata fileref="install/disk-layout"/>
|
|
</imageobject>
|
|
|
|
<textobject>
|
|
<literallayout class="monospaced">.-----------------. --.
|
|
| | |
|
|
| 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 |
|
|
: : | |
|
|
| | | |
|
|
| | --' |
|
|
`-----------------' --'</literallayout>
|
|
</textobject>
|
|
</mediaobject>
|
|
</example>
|
|
|
|
</sect1>
|
|
|
|
<sect1 xml:id="mount-unmount">
|
|
<title>Állományrendszerek csatlakoztatása
|
|
és leválasztása</title>
|
|
|
|
<para>Az állományrendszereket legkönnyebben
|
|
egy-egy faként tudjuk magunk előtt elképzelni,
|
|
amelyek a <filename>/</filename> könyvtárból
|
|
nőnek ki. A <filename>/dev</filename>,
|
|
<filename>/usr</filename> é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 <filename>/usr/local</filename> és így
|
|
tovább.</para>
|
|
|
|
<indexterm><primary>gyökér-állományrendszer</primary></indexterm>
|
|
|
|
<para>Különféle okai vannak annak, hogy egyes
|
|
könyvtárakat különálló
|
|
állományrendszereken tárolunk. A
|
|
<filename>/var</filename> könyvtár tartalmazza a
|
|
<filename>log/</filename>, <filename>spool/</filename>
|
|
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 <filename>/var</filename>
|
|
könyvtárat leválasztjuk a
|
|
<filename>/</filename> könyvtárból.</para>
|
|
|
|
<para>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 <link linkend="network-nfs">Hálózati
|
|
állományrendszer</link>eken vagy éppen
|
|
CD-meghajtókon találhatóak.</para>
|
|
|
|
<sect2 xml:id="disks-fstab">
|
|
<title>Az <filename>fstab</filename>
|
|
állomány</title>
|
|
|
|
<indexterm>
|
|
<primary>állományrendszerek</primary>
|
|
<secondary>csatlakoztatás az fstab
|
|
állománnyal</secondary>
|
|
</indexterm>
|
|
|
|
<para>A <link linkend="boot">rendszerindítás
|
|
folyamata</link> során az <filename>/etc/fstab</filename>
|
|
állományban felsorolt
|
|
állományrendszerek maguktól kerülnek
|
|
csatlakoztatásra (kivéve amikor a
|
|
<option>noauto</option> beállítással
|
|
szerepelnek).</para>
|
|
|
|
<para>Az <filename>/etc/fstab</filename> állományban
|
|
található sorok az alábbi
|
|
szerkezetűek:</para>
|
|
|
|
<programlisting><replaceable>eszköz</replaceable> <replaceable>/csatlakozási-pont</replaceable> <replaceable>típus</replaceable> <replaceable>beállítások</replaceable> <replaceable>mentésigyak</replaceable> <replaceable>ellszám</replaceable></programlisting>
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term><literal>eszköz</literal></term>
|
|
<listitem>
|
|
<para>A <xref linkend="disks-naming"/>ban leírtak
|
|
szerint megnevezett (létező)
|
|
eszköz.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><literal>csatlakozási-pont</literal></term>
|
|
<listitem>
|
|
<para>Egy (létező) könyvtár, ahova
|
|
az állományrendszer csatlakozik.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><literal>típus</literal></term>
|
|
<listitem>
|
|
<para>Az állományrendszer &man.mount.8;
|
|
parancs szerint ismert típusa. A &os;
|
|
alapértelmezett állományrendszere az
|
|
<literal>ufs</literal>.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><literal>beállítások</literal></term>
|
|
<listitem>
|
|
<para>Az írható-olvasható
|
|
állományrendszerek esetén
|
|
<option>rw</option>, az írásvédettek
|
|
esetén pedig <option>ro</option>, 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 <option>noauto</option>. Egyéb
|
|
lehetőségeket a &man.mount.8; man oldalon
|
|
láthatunk.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><literal>mentésigyak</literal></term>
|
|
<listitem>
|
|
<para>Ezt á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.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><literal>ellszám</literal></term>
|
|
<listitem>
|
|
<para>Megadja, hogy mely állományrendszereket
|
|
kell ellenőrizni. A nullás
|
|
<literal>pass</literal> é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)
|
|
<literal>passno</literal> értéke egy,
|
|
míg az összes többi
|
|
állományrendszer <literal>passno</literal>
|
|
értéke általában egytől
|
|
különböző. Ha egynél több
|
|
állományrendszer is ugyanazt a
|
|
<literal>passno</literal> értéket kapta,
|
|
akkor az &man.fsck.8; a lehetőségei szerint
|
|
megpróbálja ezeket egyszerre
|
|
ellenőrizni.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
|
|
<para>Az <filename>/etc/fstab</filename>
|
|
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.</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2 xml:id="disks-mount">
|
|
<title>A <command>mount</command> parancs</title>
|
|
|
|
<indexterm>
|
|
<primary>állományrendszerek</primary>
|
|
<secondary>csatlakoztatás</secondary>
|
|
</indexterm>
|
|
|
|
<para>Az állományrendszerek tényleges
|
|
csatlakoztatására avagy
|
|
<quote>mountolására</quote> a &man.mount.8;
|
|
parancs használható.</para>
|
|
|
|
<para>Legegyszerűbb formája:</para>
|
|
|
|
<informalexample>
|
|
<screen>&prompt.root; <userinput>mount eszköz csatlakozási-pont</userinput></screen>
|
|
</informalexample>
|
|
|
|
<para>Ahogy a &man.mount.8; man oldalán is olvashatjuk, itt
|
|
rengeteg opció is megadható, de ezek
|
|
közül a leggyakoribbak:</para>
|
|
|
|
<variablelist>
|
|
<title>Csatlakoztatási opciók</title>
|
|
|
|
<varlistentry>
|
|
<term><option>-a</option></term>
|
|
<listitem>
|
|
<para>Csatlakoztatja az <filename>/etc/fstab</filename>
|
|
állományban felsorolt összes
|
|
állományrendszert, kivéve azokat,
|
|
amelyek a <quote>noauto</quote>
|
|
beállítást tartalmazzák, vagy
|
|
kizártuk a <option>-t</option> kapcsolóval,
|
|
esetleg korábban már csatlakoztattuk.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><option>-d</option></term>
|
|
<listitem>
|
|
<para>A tényleges csatlakoztatás
|
|
elvégzése nélkül
|
|
végrehajt minden mást. Ez az opció
|
|
leginkább <option>-v</option> 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.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><option>-f</option></term>
|
|
<listitem>
|
|
<para>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.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><option>-r</option></term>
|
|
<listitem>
|
|
<para>Az állományrendszer
|
|
írásvédett csatlakoztatása.
|
|
Megegyezik a <option>-o</option> opciónál
|
|
megadható <option>ro</option> (vagy a &os;
|
|
5.2-nél régebbi verziója
|
|
esetén a <option>rdonly</option>)
|
|
beállítás
|
|
használatával.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><option>-t</option>
|
|
<replaceable>típus</replaceable></term>
|
|
<listitem>
|
|
<para>Az adott állományrendszert az adott
|
|
típusnak megfelelően csatlakoztatja, vagy az
|
|
<option>-a</option> használata esetén csak
|
|
az adott típusú
|
|
állományrendszereket.</para>
|
|
|
|
<para>Az <quote>ufs</quote> az
|
|
állományrendszerek alapértelmezett
|
|
típusa.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><option>-u</option></term>
|
|
<listitem>
|
|
<para>Frissíti az állományrendszerre
|
|
vonatkozó csatlakoztatási
|
|
beállításokat.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><option>-v</option></term>
|
|
<listitem>
|
|
<para>Részletesebb kijelzés.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><option>-w</option></term>
|
|
<listitem>
|
|
<para>Az állományrendszer
|
|
csatlakoztatása írásra és
|
|
olvasásra.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
|
|
<para>Az <option>-o</option> opció után
|
|
vesszővel elválasztott
|
|
beállításokat adhatunk meg, többek
|
|
közt az alábbiakat:</para>
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term>noexec</term>
|
|
<listitem>
|
|
<para>Az állományrendszeren
|
|
található állományok
|
|
végrehajtásának tiltása. Ez
|
|
egy nagyon hasznos biztonsági
|
|
beállítás.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>nosuid</term>
|
|
<listitem>
|
|
<para>Az á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.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
|
|
</sect2>
|
|
|
|
<sect2 xml:id="disks-umount">
|
|
<title>Az <command>umount</command> parancs</title>
|
|
|
|
<indexterm>
|
|
<primary>állományrendszerek</primary>
|
|
<secondary>leválasztás</secondary>
|
|
</indexterm>
|
|
|
|
<para>Az &man.umount.8; parancs paraméterként egy
|
|
csatlakozási pontot, egy eszköznevet vagy a
|
|
<option>-a</option>, illetve az <option>-A</option>
|
|
opciókat várja.</para>
|
|
|
|
<para>A leválasztás
|
|
kényszerítéséhez mindegyik alakban
|
|
szerepelhet az <option>-f</option> opció, valamint a
|
|
részletesebb kijelzést a <option>-v</option>
|
|
opcióval kapcsolhatjuk be. Azonban szeretnénk
|
|
mindenkit figyelmeztetni, hogy a <option>-f</option>
|
|
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.</para>
|
|
|
|
<para>Az <option>-a</option> és <option>-A</option>
|
|
opciók használatosak az összes
|
|
csatlakoztatott állományrendszer
|
|
leválasztására, amelyek típusait a
|
|
<option>-t</option> opció megadása után
|
|
sorolhatjuk fel. Fontos különbség azonban,
|
|
hogy az <option>-A</option> opció a gyökér
|
|
állományrendszert nem próbálja meg
|
|
leválasztani.</para>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 xml:id="basics-processes">
|
|
<title>Folyamatok</title>
|
|
|
|
<para>A &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
|
|
<firstterm>folyamat</firstterm>oknak (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.</para>
|
|
|
|
<para>Minden folyamatot egy
|
|
<firstterm>folyamatazonosító</firstterm>nak (process
|
|
ID vagy <firstterm>PID</firstterm>) 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 <command>init</command> lesz a
|
|
rendszerben mindig az első folyamat, ezért a PID-je is
|
|
mindig 1. Az <command>init</command> programot a &os;
|
|
indulásakor a rendszermag fogja automatikusan
|
|
elindítani.</para>
|
|
|
|
<para>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 <command>ps</command> 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 <command>top</command>
|
|
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.</para>
|
|
|
|
<para>A <command>ps</command> alapértelmezés szerint
|
|
csupán az általunk futtatott programokat mutatja.
|
|
Például:</para>
|
|
|
|
<screen>&prompt.user; <userinput>ps</userinput>
|
|
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/sawfish</screen>
|
|
|
|
<para>Ahogy az a fenti példában is látszik, a
|
|
&man.ps.1; kimenete oszlopokra tagolható. Ezek
|
|
közül a <literal>PID</literal> 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 <literal>TT</literal> 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
|
|
<literal>STAT</literal> oszlopban a program
|
|
állapotát kapjuk meg, de szintén
|
|
átugorható. A <literal>TIME</literal> 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
|
|
<literal>COMMAND</literal> oszlopban olvashatjuk azt a parancsot,
|
|
amellyel a programot elindították.</para>
|
|
|
|
<para>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
|
|
<literal>auxww</literal>: az <option>a</option>
|
|
segítségével az összes futó
|
|
programot láthatjuk, nem csak a sajátjainkat; az
|
|
<option>u</option> megadásával
|
|
láthatóvá válik a folyamat
|
|
tulajdonosának a felhasználói neve, valamint
|
|
a memóriahasználata is; az <option>x</option>
|
|
megmutatja a démon (avagy háttér)folyamatok
|
|
adatait is és a <option>ww</option> 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.</para>
|
|
|
|
<para>A &man.top.1; kimenete is hasonló. Ha
|
|
elindítjuk, általában ezt
|
|
láthatjuk:</para>
|
|
|
|
<screen>&prompt.user; <userinput>top</userinput>
|
|
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
|
|
...</screen>
|
|
|
|
<para>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.</para>
|
|
|
|
<para>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
|
|
<application>&netscape;</application> (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.</para>
|
|
|
|
<para>A &man.top.1; a kijelzést minden második
|
|
másodpercben magától frissíti, de ez
|
|
az <option>s</option> kapcsolóval
|
|
állítható.</para>
|
|
|
|
</sect1>
|
|
|
|
<sect1 xml:id="basics-daemons">
|
|
<title>Démonok, jelzések és a futó
|
|
programok leállítása</title>
|
|
|
|
<para>Amikor 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
|
|
<firstterm>terminál</firstterm>hoz 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.</para>
|
|
|
|
<para>Ezeket a programokat
|
|
<firstterm>démon</firstterm>onoknak 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.</para>
|
|
|
|
<para>A démonként futó programok nevéhez
|
|
a hagyományok szerint hozzá szokták
|
|
fűzni a <quote>d</quote> betűt. A
|
|
<application>BIND</application> a Berkeley Internet Name Domain
|
|
(névfeloldó) szolgáltatása, azonban a
|
|
hozzá tartozó program neve <command>named</command>,
|
|
az <application>Apache</application> webszerver programját
|
|
<command>httpd</command>-nek nevezik, a sornyomtató
|
|
kezeléséért felelős démon pedig
|
|
az <command>lpd</command> é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 <application>Sendmail</application> levelező
|
|
démonának neve <command>sendmail</command> és
|
|
nem pedig <command>maild</command>.</para>
|
|
|
|
<para>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
|
|
<firstterm>jelzés</firstterm>ek (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
|
|
<systemitem class="username">root</systemitem> felhasználó.</para>
|
|
|
|
<para>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
|
|
<firstterm>Segmentation Violation</firstterm>
|
|
(<literal>SIGSEGV</literal>, 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
|
|
(<literal>SIGALRM</literal>) jelzést és így
|
|
tovább.</para>
|
|
|
|
<para>A folyamatok leállítására
|
|
két jelzés használható: a
|
|
<literal>SIGTERM</literal> (befejeztetés) és a
|
|
<literal>SIGKILL</literal> (leállítás). A
|
|
<literal>SIGTERM</literal> a folyamatok
|
|
leállításának illedelmes módja,
|
|
mivel ekkor a futó program képes
|
|
<emphasis>elkapni</emphasis> 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 <literal>SIGTERM</literal>
|
|
jelzést, ha például éppen egy
|
|
félbeszakíthatatlan feladat közepén
|
|
tartanak.</para>
|
|
|
|
<para>A <literal>SIGKILL</literal> jelzést azonban egyetlen
|
|
futó program sem hagyhatja figyelmen kívül. Ez
|
|
lenne a <quote>Nem érdekel, mivel foglalkozol, azonnal
|
|
hagyd abba!</quote> jelzés. Amikor
|
|
<literal>SIGKILL</literal> jelzést küldünk egy
|
|
folyamatnak, a &os; leállítja a folyamatot ott
|
|
és ahol tart
|
|
<footnote>
|
|
<para>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 <quote>megszakíthatatlan</quote>. 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.</para>
|
|
</footnote>.</para>
|
|
|
|
<para>További használható jelzések:
|
|
<literal>SIGHUP</literal>, <literal>SIGUSR1</literal> és
|
|
<literal>SIGUSR2</literal>. Ezek általános
|
|
célú jelzések, amelyeket az
|
|
alkalmazások eltérő módokon
|
|
kezelnek.</para>
|
|
|
|
<para>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 <command>httpd</command>
|
|
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
|
|
<literal>SIGHUP</literal> jelzés hatására
|
|
olvassa be újra a beállításait
|
|
tartalmazó állományt. Így a
|
|
<command>httpd</command> leállítása és
|
|
újraindítása helyett egyszerűen
|
|
elegendő egy <literal>SIGHUP</literal> 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.</para>
|
|
|
|
<para>A jelzéseket a &man.kill.1; paranccsal tudjuk
|
|
elküldeni, ahogy ezt a következő
|
|
példában is láthatjuk.</para>
|
|
|
|
<procedure>
|
|
<title>Jelzés küldése egy futó
|
|
programnak</title>
|
|
|
|
<para>Ebben a példában megmutatjuk, hogyan lehet
|
|
jelzést küldeni az &man.inetd.8; démonnak.
|
|
Az <command>inetd</command> a beállításait
|
|
az <filename>/etc/inetd.conf</filename>
|
|
állományban tárolja, és az
|
|
<command>inetd</command> a <literal>SIGHUP</literal>
|
|
jelzés hatására képes
|
|
újraolvasni ezt.</para>
|
|
|
|
<step>
|
|
<para>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 <systemitem class="username">root</systemitem>
|
|
birtokolja, ezért az &man.ps.1; használata
|
|
során meg kell adnunk az <option>ax</option>
|
|
kapcsolókat is.</para>
|
|
|
|
<screen>&prompt.user; <userinput>ps -ax | grep inetd</userinput>
|
|
198 ?? IWs 0:00.00 inetd -wW</screen>
|
|
|
|
<para>Innen kiderül, hogy az &man.inetd.8;
|
|
azonosítója 198. Előfordulhat, hogy az
|
|
eredményben maga a <literal>grep inetd</literal>
|
|
parancs is megjelenik. Ez a &man.ps.1;
|
|
listázási módszere miatt következhet
|
|
be.</para>
|
|
</step>
|
|
|
|
<step>
|
|
<para>A jelzés elküldésére
|
|
használjuk a &man.kill.1; parancsot. Mivel az
|
|
&man.inetd.8; démont a <systemitem class="username">root</systemitem>
|
|
felhasználó futtatja, ehhez először a
|
|
&man.su.1; parancs kiadásával nekünk is
|
|
<systemitem class="username">root</systemitem> felhasználóvá
|
|
(rendszeradminisztrátorrá) kell
|
|
válnunk.</para>
|
|
|
|
<screen>&prompt.user; <userinput>su</userinput>
|
|
<prompt>Password:</prompt>
|
|
&prompt.root; <userinput>/bin/kill -s HUP 198</userinput></screen>
|
|
|
|
<para>Ahogy 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 <errorname>kill:
|
|
<replaceable>PID</replaceable>: Operation not
|
|
permitted</errorname> (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: <errorname>kill:
|
|
<replaceable>PID</replaceable>: No such process</errorname>
|
|
(nincs ilyen folyamat).</para>
|
|
|
|
<note>
|
|
<title>Miért <command>/bin/kill</command>?</title>
|
|
|
|
<para>A legtöbb parancsértelmező
|
|
beépítetten tartalmazza a saját
|
|
<command>kill</command> parancsát, tehát
|
|
ilyenkor közvetlenül maga a
|
|
parancsértelmező küldi a jelzést,
|
|
nem pedig a <filename>/bin/kill</filename> 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 <command>/bin/kill
|
|
...</command> parancsot
|
|
használni.</para>
|
|
</note>
|
|
</step>
|
|
</procedure>
|
|
|
|
<para>A többi jelzés küldése is nagyon
|
|
hasonló módon történik, hiszen
|
|
elegendő csupán a <literal>TERM</literal> vagy a
|
|
<literal>KILL</literal> behelyettesítése a parancs
|
|
megfelelő helyére.</para>
|
|
|
|
<important>
|
|
<para>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
|
|
<command>/bin/kill -s KILL 1</command> parancs
|
|
kiadásával ugyanis gyorsan le tudjuk
|
|
állítani a rendszerünket.
|
|
<emphasis>Mielőtt</emphasis> egy &man.kill.1; parancsot
|
|
lezárnánk az <keycap>Enter</keycap>
|
|
billentyűvel, <emphasis>mindig</emphasis>
|
|
győződjünk meg róla, hogy valóban
|
|
tényleg a jó paramétereket adtuk
|
|
meg.</para>
|
|
</important>
|
|
|
|
</sect1>
|
|
|
|
<sect1 xml:id="shells">
|
|
<title>Parancsértelmezők</title>
|
|
|
|
<indexterm><primary>parancsértelmezők</primary></indexterm>
|
|
<indexterm><primary>parancssor</primary></indexterm>
|
|
|
|
<para>A &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
|
|
<command>sh</command>, a Bourne Shell, és a
|
|
<command>tcsh</command>, a továbbfejlesztett C-shell. Sok
|
|
más parancsértelmező, mint
|
|
például a <command>zsh</command> és
|
|
<command>bash</command> is elérhető a &os;
|
|
Portgyűjteményéből.</para>
|
|
|
|
<para>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 <command>tcsh</command>. Ha viszont egy linuxos rendszert
|
|
használtunk korábban vagy éppen még
|
|
soha nem használtunk volna a &unix; parancssorát,
|
|
érdemes a <command>bash</command>-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.</para>
|
|
|
|
<para>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 <keycap>Tab</keycap> billentyű
|
|
lenyomásával megkérhetjük a
|
|
parancsértelmezőt, hogy magától
|
|
egészítse ki (<quote>találja ki</quote>) a
|
|
fennmaradó részt. Nézzük erre egy
|
|
példát. Tegyük fel, hogy van két
|
|
állományunk, <filename>izemize</filename> és
|
|
<filename>ize.mize</filename>, és szeretnénk
|
|
letörölni az <filename>ize.mize</filename> nevűt.
|
|
Ehhez a következőt kell begépelnünk:
|
|
<command>rm
|
|
iz[Tab].[Tab]</command>.</para>
|
|
|
|
<para>Erre a parancsértelmező a következő
|
|
parancsot írja ki: <command>rm
|
|
ize[SIPOLÁS].mize</command>.</para>
|
|
|
|
<para>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
|
|
<filename>izemize</filename> és az
|
|
<filename>ize.mize</filename> is egyaránt az
|
|
<literal>iz</literal> előtaggal kezdődik, azonban
|
|
ebből a parancsértelmező csak az
|
|
<literal>ize</literal> előtagot tudta kikövetkeztetni.
|
|
Ha most begépelünk még egy <literal>.</literal>
|
|
karaktert és újra megnyomjuk a <keycap>Tab</keycap>
|
|
billentyűt, a parancsértelmező ezúttal
|
|
képes lesz az állomány teljes nevét
|
|
megállapítani.</para>
|
|
|
|
<indexterm><primary>környezeti
|
|
változók</primary></indexterm>
|
|
|
|
<para>A 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:</para>
|
|
|
|
<indexterm><primary>környezeti
|
|
változók</primary></indexterm>
|
|
|
|
<informaltable frame="none" pgwide="1">
|
|
<tgroup cols="2">
|
|
<thead>
|
|
<row>
|
|
<entry>Változó</entry>
|
|
<entry>Leírás</entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry><envar>USER</envar></entry>
|
|
<entry>A bejelentkezett felhasználó
|
|
neve.</entry>
|
|
</row>
|
|
<row>
|
|
<entry><envar>PATH</envar></entry>
|
|
<entry>Vesszővel elválasztott
|
|
könyvtárak, ahol a parancsértelmező
|
|
a végrehajtható állományokat
|
|
keresi.</entry>
|
|
</row>
|
|
<row>
|
|
<entry><envar>DISPLAY</envar></entry>
|
|
<entry>Az aktuálisan használt X11
|
|
megjelenítő hálózati neve,
|
|
amennyiben létezik ilyen.</entry>
|
|
</row>
|
|
<row>
|
|
<entry><envar>SHELL</envar></entry>
|
|
<entry>A használt
|
|
parancsértelmező.</entry>
|
|
</row>
|
|
<row>
|
|
<entry><envar>TERM</envar></entry>
|
|
<entry>A felhasználó által
|
|
használt terminál típusa. Ebből
|
|
a terminál képességeit lehet
|
|
megállapítani.</entry>
|
|
</row>
|
|
<row>
|
|
<entry><envar>TERMCAP</envar></entry>
|
|
<entry>A terminálok
|
|
adatbázisából származó,
|
|
különböző
|
|
terminálfunkciókhoz tartozó
|
|
helyettesítő (escape) kódok.</entry>
|
|
</row>
|
|
<row>
|
|
<entry><envar>OSTYPE</envar></entry>
|
|
<entry>Az operációs rendszer típusa,
|
|
például &os;.</entry>
|
|
</row>
|
|
<row>
|
|
<entry><envar>MACHTYPE</envar></entry>
|
|
<entry>A rendszer alatt futó gép
|
|
architektúrája.</entry>
|
|
</row>
|
|
<row>
|
|
<entry><envar>EDITOR</envar></entry>
|
|
<entry>A felhasználó által
|
|
használt szövegszerkesztő.</entry>
|
|
</row>
|
|
<row>
|
|
<entry><envar>PAGER</envar></entry>
|
|
<entry>A felhasználó által
|
|
lapozásra használt program.</entry>
|
|
</row>
|
|
<row>
|
|
<entry><envar>MANPATH</envar></entry>
|
|
<entry>Vesszővel elválasztott könyvtárak,
|
|
ahol a parancsértelmező a man
|
|
oldalakat keresi.</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</informaltable>
|
|
|
|
<indexterm><primary>Bourne-féle
|
|
parancsértelmezők</primary></indexterm>
|
|
|
|
<para>A 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
|
|
<command>tcsh</command> vagy a <command>csh</command>, a
|
|
<command>setenv</command> paranccsal állítja a
|
|
környezeti változókat. A Bourne-féle
|
|
parancsértelmezők, mint például az
|
|
<command>sh</command> vagy a <command>bash</command>, az
|
|
<command>export</command> parancsot használják a
|
|
környezeti változók
|
|
beállítására. Például a
|
|
<command>csh</command> vagy a <command>tcsh</command>
|
|
használata során a következőképpen
|
|
tudjuk be- vagy átállítani az
|
|
<envar>EDITOR</envar> környezeti változó
|
|
értékét
|
|
<filename>/usr/local/bin/emacs</filename>-re:</para>
|
|
|
|
<screen>&prompt.user; <userinput>setenv EDITOR /usr/local/bin/emacs</userinput></screen>
|
|
|
|
<para>Ugyanez a Bourne-féle
|
|
parancsértelmezőkben:</para>
|
|
|
|
<screen>&prompt.user; <userinput>export EDITOR="/usr/local/bin/emacs"</userinput></screen>
|
|
|
|
<para>A legtöbb parancsértelmezőben a nevük
|
|
előtt szerepeltetett <literal>$</literal> 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 <command>echo $TERM</command> parancs
|
|
kiíratja a <envar>TERM</envar> változó
|
|
aktuális értékét, mivel ebbe a
|
|
parancsértelmező már az <command>echo</command>
|
|
meghívása előtt behelyettesíti a
|
|
<envar>TERM</envar> értékét.</para>
|
|
|
|
<para>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
|
|
<literal>*</literal>, 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 <command>echo *</command> parancsot,
|
|
akkor majdnem ugyanazt kapjuk eredményül, mintha az
|
|
<command>ls</command> parancsot adtuk volna ki, hiszen a
|
|
parancsértelmező ilyenkor veszi az összes
|
|
<literal>*</literal> metakarakterre illeszkedő
|
|
állományt, és a kiíratásukhoz
|
|
pedig rendre behelyettesíti ezeket a parancssorba az
|
|
<command>echo</command> paramétereként.</para>
|
|
|
|
<para>Ha nem szeretnénk, hogy a parancsértelmező
|
|
értelmezze a speciális karaktereket, akkor egy
|
|
<quote>backslash</quote> (visszaper) (<literal>\</literal>)
|
|
karaktert eléjük téve mindezt
|
|
megakadályozhatjuk. Az <command>echo $TERM</command>
|
|
parancs ugyebár kiíratja a terminálra
|
|
vonatkozó környezeti változó
|
|
beállítását, azonban a <command>echo
|
|
\$TERM</command> változatlanul kiírja a
|
|
<envar>$TERM</envar> szöveget.</para>
|
|
|
|
<sect2 xml:id="changing-shells">
|
|
<title>A parancsértelmezőnk
|
|
megváltoztatása</title>
|
|
|
|
<para>A parancsértelmezőnk legegyszerűbben a
|
|
<command>chsh</command> parancs használatával
|
|
változtatható meg. A <command>chsh</command>
|
|
kiadása után elindítja az
|
|
<envar>EDITOR</envar> környezeti változónak
|
|
megfelelő szövegszerkesztőt, ha nem lenne ilyen,
|
|
akkor alapértelmezés szerint a
|
|
<command>vi</command> hívódik meg. Az így
|
|
megnyitott állományban változtassuk meg
|
|
kedvünk szerint a <quote>Shell: </quote> kezdetű
|
|
sort.</para>
|
|
|
|
<para>A <command>chsh</command> parancsnak megadhatjuk az
|
|
<option>-s</option> 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 <command>bash</command>-re
|
|
akarjuk lecserélni, akkor ezt írjuk be:</para>
|
|
|
|
<screen>&prompt.user; <userinput>chsh -s /usr/local/bin/bash</userinput></screen>
|
|
|
|
<note>
|
|
<para>A használni kívánt
|
|
parancsértelmezőnek szerepelnie
|
|
<emphasis>kell</emphasis> az <filename>/etc/shells</filename>
|
|
állományban. Ha a kiválasztott
|
|
parancsértelmezőt a <link linkend="ports">Portgyűjtemény</link>bő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.</para>
|
|
|
|
<para>Például ha a <command>bash</command>-t
|
|
manuálisan telepítettük és
|
|
másoltuk a <filename>/usr/local/bin</filename>
|
|
könyvtárba, akkor így kell
|
|
eljárnunk:</para>
|
|
|
|
<screen>&prompt.root; <userinput>echo "/usr/local/bin/bash" >> /etc/shells</userinput></screen>
|
|
|
|
<para>Majd próbálkozzunk újra a
|
|
<command>chsh</command> paranccsal.</para>
|
|
</note>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 xml:id="editors">
|
|
<title>Szövegszerkesztők</title>
|
|
|
|
<indexterm><primary>szövegszerkesztők</primary></indexterm>
|
|
<indexterm><primary>szerkesztők</primary></indexterm>
|
|
|
|
<para>A &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.</para>
|
|
|
|
<indexterm><primary><command>ee</command></primary></indexterm>
|
|
<indexterm>
|
|
<primary>szerkesztők</primary>
|
|
<secondary><command>ee</command></secondary>
|
|
</indexterm>
|
|
|
|
<para>A legegyszerűbben megtanulható és
|
|
legkönnyedebb szövegszerkesztőt
|
|
<application>ee</application>-nek, avagy <quote>easy
|
|
editornak</quote> hívják. Az
|
|
<application>ee</application> indításához
|
|
írjuk be az <command>ee
|
|
állománynév</command>
|
|
parancsot, ahol az
|
|
<replaceable>állománynév</replaceable> lesz a
|
|
szerkesztendő állomány neve. Így
|
|
például az <filename>/etc/rc.conf</filename>
|
|
állomány szerkesztéséhez
|
|
gépeljük be az <command>ee /etc/rc.conf</command>
|
|
parancsot. Miután elindult az <command>ee</command>, az
|
|
összes szerkesztéshez használható
|
|
parancsa megjelenik a képernyő felső
|
|
részében. Itt a <quote>kalap</quote>
|
|
(<literal>^</literal>) karakter a <keycap>Ctrl</keycap>
|
|
billentyű lenyomására utal, így
|
|
tehát a <literal>^e</literal> jelölés a
|
|
<keycombo action="simul"><keycap>Ctrl</keycap><keycap>e</keycap></keycombo>
|
|
billentyűkombinációt jelenti. Ha ki akarunk
|
|
lépni az <application>ee</application>-ből, nyomjuk le
|
|
az <keycap>Esc</keycap> 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.</para>
|
|
|
|
<indexterm><primary><command>vi</command></primary></indexterm>
|
|
<indexterm>
|
|
<primary>szerkesztők</primary>
|
|
<secondary><command>vi</command></secondary>
|
|
</indexterm>
|
|
<indexterm><primary><command>emacs</command></primary></indexterm>
|
|
<indexterm>
|
|
<primary>szerkesztők</primary>
|
|
<secondary><command>emacs</command></secondary>
|
|
</indexterm>
|
|
|
|
<para>A &os; nagyobb tudású
|
|
szövegszerkesztőket, mint például a
|
|
<application>vi</application>-t, is tartalmaz az alaprendszer
|
|
részeként, miközben a többi, mint
|
|
például az <application>Emacs</application> vagy a
|
|
<application>vim</application> a Portgyűjtemény
|
|
részeként (<package>editors/emacs</package> és <package>editors/vim</package>) é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 <application>vim</application> vagy
|
|
<application>Emacs</application> használatának
|
|
megismerésével sok időt
|
|
megspórolhatunk.</para>
|
|
|
|
<para>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
|
|
<envar>EDITOR</envar> környezeti változó
|
|
beállításával tudjuk
|
|
meghatározni. Erről részletesebben a <link linkend="shells">parancsértelmezőknél</link>
|
|
olvashatunk.</para>
|
|
</sect1>
|
|
|
|
<sect1 xml:id="basics-devices">
|
|
<title>Eszközök és
|
|
eszközleírók</title>
|
|
|
|
<para>Az 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 <filename>/var/run/dmesg.boot</filename>
|
|
állományban nézhetjük meg
|
|
újra.</para>
|
|
|
|
<para>Például az <filename>acd0</filename> az
|
|
első IDE CD-meghajtót, míg a
|
|
<filename>kbd0</filename> a billentyűzetet
|
|
képviseli.</para>
|
|
|
|
<para>A &unix; operációs rendszerben a legtöbb
|
|
eszközt a <filename>/dev</filename> könyvtárban
|
|
található, eszközleíróknak
|
|
(device node) nevezett speciális állományokon
|
|
keresztül érhetjük el.</para>
|
|
|
|
<sect2>
|
|
<title>Eszközleírók
|
|
létrehozása</title>
|
|
|
|
<para>Amikor 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.</para>
|
|
|
|
<sect3>
|
|
<title><literal>DEVFS</literal> (DEVice File System,
|
|
Eszköz-állományrendszer)</title>
|
|
|
|
<para>Az eszközöket tartalmazó
|
|
állományrendszer, avagy
|
|
<literal>DEVFS</literal>, 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 <literal>DEVFS</literal>
|
|
erre a célra fenntart egy külön
|
|
állományrendszert.</para>
|
|
|
|
<para>A &man.devfs.5; man oldalon olvashatunk bővebben
|
|
erről.</para>
|
|
|
|
</sect3>
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 xml:id="binary-formats">
|
|
<title>Bináris formátumok</title>
|
|
|
|
<para>Annak 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
|
|
<quote>uralkodó</quote> formátumával:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>&man.a.out.5;</para>
|
|
<para>A legősibb és egyben a
|
|
<quote>klasszikus</quote> &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ó
|
|
<quote>bűvös szám</quote>
|
|
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.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><acronym>COFF</acronym></para>
|
|
<para>Az 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.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>&man.elf.5;</para>
|
|
<para>A <acronym>COFF</acronym> 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 <acronym>ELF</acronym>
|
|
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.</para>
|
|
|
|
<para>A &os; ezt a problémát a
|
|
<emphasis>megbélyegzés</emphasis> (branding)
|
|
segítségével próbálja
|
|
megoldani, aminek révén el tudunk látni
|
|
egy ismert <acronym>ELF</acronym> á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.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para>A &os; a <quote>klasszikusok</quote>
|
|
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 <acronym>ELF</acronym> binárisokat (és
|
|
rendszermagokat) a &os; rendszereken, a &os; kezdetben
|
|
ódzkodott váltani az alapértelmezés
|
|
szerinti <acronym>ELF</acronym> formátumra. De vajon
|
|
miért? Nos, amikor a Linux-tábor megtette a maga
|
|
fájdalmas váltását az
|
|
<acronym>ELF</acronym>-re, az nem annyira azért volt, hogy
|
|
megszabaduljanak az <filename>a.out</filename>
|
|
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
|
|
<acronym>ELF</acronym> 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 <quote>a jövőbe vezető
|
|
útként</quote>, 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.</para>
|
|
|
|
<para>De miért van ilyen sok különböző
|
|
formátum?</para>
|
|
|
|
<para>A ködös és sötét múltban
|
|
egyszerűbb hardverek voltak. Ezek az egyszerű hardverek
|
|
egyszerű, kicsi rendszereket támogattak. Az
|
|
<filename>a.out</filename> 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 <filename>a.out</filename> formátumot
|
|
továbbra is megtartották, mivel a &unix; kezdeti,
|
|
Motorola 68k-ra, VAXenre készített
|
|
átírataihoz is elegendő volt.</para>
|
|
|
|
<para>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 <filename>a.out</filename>
|
|
formátumot ilyen hardverre (amit manapság
|
|
<acronym>RISC</acronym>-nek hívnak) is szerették
|
|
volna áthozni, kiderült, hogy ebben az esetben szinte
|
|
használhatatlan. Ezért az
|
|
<filename>a.out</filename> 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
|
|
<acronym>COFF</acronym>, <acronym>ECOFF</acronym> é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 <acronym>ELF</acronym>
|
|
formátumnál.</para>
|
|
|
|
<para>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
|
|
<filename>a.out</filename> 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 <filename>a.out</filename>
|
|
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
|
|
<filename>a.out</filename> 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 <acronym>ELF</acronym> 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
|
|
<acronym>ELF</acronym> formátumnak meg kellett
|
|
várnia azt a pillanatot, amikorra az
|
|
<filename>a.out</filename> használata már
|
|
kényelmetlenné vált.</para>
|
|
|
|
<para>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 <application>as</application> és
|
|
<application>ld</application> már nem emésztette
|
|
meg. Az új GNU eszköztár (a
|
|
<application>binutils</application>) viszont ismeri már a
|
|
keresztfordítást, az <acronym>ELF</acronym>
|
|
formátumot, az osztott könyvtárakat, a C++
|
|
kiterjesztéseit stb. Időközben egyre több
|
|
gyártó <acronym>ELF</acronym>
|
|
formátumú binárisokat adott ki, és
|
|
jó érzés volt ezeket &os;-n is
|
|
futtatni.</para>
|
|
|
|
<para>Az <acronym>ELF</acronym> sokkal kifejezőbb az
|
|
<filename>a.out</filename> formátumnál, és
|
|
jóval több bővítési
|
|
lehetőséget enged az alaprendszerben. Az
|
|
<acronym>ELF</acronym> formátumhoz tartozó
|
|
eszközöket jobban karbantartják és
|
|
támogatja a keresztfordítást, ami viszont
|
|
sokaknak fontos. Az <acronym>ELF</acronym> talán
|
|
némileg lassabb, mint az <filename>a.out</filename>,
|
|
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 <filename>a.out</filename>
|
|
támogatása ki fog kerülni a
|
|
<filename>GENERIC</filename> rendszermagból, és
|
|
végül majd teljesen eltávolításra
|
|
kerül, ahogy a régi <filename>a.out</filename>
|
|
formátumú programok szépen lassan
|
|
kifutnak.</para>
|
|
|
|
</sect1>
|
|
|
|
<sect1 xml:id="basics-more-information">
|
|
<title>Bővebben olvashatunk...</title>
|
|
|
|
<sect2 xml:id="basics-man">
|
|
<title>Man oldalak</title>
|
|
|
|
<indexterm><primary>man oldalak</primary></indexterm>
|
|
|
|
<para>A &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 <command>man</command> parancs
|
|
segítségével jeleníthetőek meg.
|
|
A <command>man</command> parancs használata
|
|
egyszerű:</para>
|
|
|
|
<screen>&prompt.user; <userinput>man parancs</userinput></screen>
|
|
|
|
<para>ahol a <literal>parancs</literal> a megismerni
|
|
kívánt parancsra utal. Például ha
|
|
az <command>ls</command> parancsról szeretnénk
|
|
többet megtudni, írjuk be:</para>
|
|
|
|
<screen>&prompt.user; <userinput>man ls</userinput></screen>
|
|
|
|
<para>Az elérhető használati
|
|
útmutatókat a következő számozott
|
|
szakaszokra osztották:</para>
|
|
|
|
<orderedlist>
|
|
<listitem>
|
|
<para>Felhasználói parancsok</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Rendszerhívások és
|
|
hibakódok</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>A C függvénykönyvtár
|
|
függvényei</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Eszközmeghajtók</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Állományformátumok</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Játékok és egyéb
|
|
szórakoztató alkalmazások</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Egyéb információk</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Rendszerkarbantartási és
|
|
-működtetési parancsok</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Rendszermagfejlesztők számára</para>
|
|
</listitem>
|
|
</orderedlist>
|
|
|
|
<para>Bizonyos esetekben ugyanaz a téma az
|
|
útmutatók több szakaszában is
|
|
elérhető. Például létezik
|
|
<command>chmod</command> felhasználói parancs
|
|
és a <function>chmod()</function>
|
|
rendszerhívás. Ilyenkor a <command>man</command>
|
|
parancsnak meg tudjuk adni pontosan, melyik szakaszra is vagyunk
|
|
kíváncsiak:</para>
|
|
|
|
<screen>&prompt.user; <userinput>man 1 chmod</userinput></screen>
|
|
|
|
<para>Ennek hatására a <command>chmod</command>
|
|
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 <command>chmod</command>
|
|
felhasználói parancs és a &man.chmod.2; a
|
|
rendszerhívás.</para>
|
|
|
|
<para>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 <command>man</command> parancs a
|
|
<option>-k</option> segítségével
|
|
paraméterezhető úgy is, hogy a parancsok
|
|
leírásai között keressen valamilyen
|
|
kulcsszó mentén:</para>
|
|
|
|
<screen>&prompt.user; <userinput>man -k mail</userinput></screen>
|
|
|
|
<para>Ezzel a paranccsal megkapjuk azon parancsok
|
|
listáját, amelyek leírásában
|
|
szerepel a <quote>mail</quote> kulcsszó. Ez
|
|
egyébként működésében
|
|
teljesen megegyezik a <command>apropos</command>
|
|
paranccsal.</para>
|
|
|
|
<para>Szóval szeretnénk megtudni, hogy a
|
|
<filename>/usr/bin</filename> könyvtárban levő
|
|
parancsok pontosan mit is csinálnak? Ehhez írjuk
|
|
be:</para>
|
|
|
|
<screen>&prompt.user; <userinput>cd /usr/bin</userinput>
|
|
&prompt.user; <userinput>man -f *</userinput></screen>
|
|
|
|
<para>vagy</para>
|
|
|
|
<screen>&prompt.user; <userinput>cd /usr/bin</userinput>
|
|
&prompt.user; <userinput>whatis *</userinput></screen>
|
|
|
|
<para>ami ugyanezt teszi.</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2 xml:id="basics-info">
|
|
<title>A GNU info állományok</title>
|
|
|
|
<indexterm><primary>Szabad Szoftver
|
|
Alapítvány</primary></indexterm>
|
|
|
|
<para>A &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 <literal>info</literal>nak nevezett, sokkal
|
|
részletesebb hipertext alapú leírást
|
|
is, amelyeket az <command>info</command> paranccsal, vagy ha van
|
|
fenn <application>emacs</application>, akkor annak az info
|
|
módjában tudjuk megjeleníteni.</para>
|
|
|
|
<para>Az &man.info.1; parancs használatához ennyit
|
|
kell beírnunk:</para>
|
|
|
|
<screen>&prompt.user; <userinput>info</userinput></screen>
|
|
|
|
<para>Itt a <literal>h</literal> lenyomásával kapunk
|
|
egy rövid bemutatkozást. A parancsok rövid
|
|
listáját a <literal>?</literal> billentyű
|
|
hozza elő.</para>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
</chapter>
|