&os; gyorstalpaló &linux; felhasználók
számáraJohnFerrell2008A FreeBSD Dokumentációs Projekt$FreeBSD$$FreeBSD$
&tm-attrib.freebsd;
&tm-attrib.linux;
&tm-attrib.intel;
&tm-attrib.redhat;
&tm-attrib.unix;
&tm-attrib.general;
Ez a cikk azért íródott, hogy
röviden megismertesse a &os; alapjait a
középhaladó-haladó &linux;
felhasználókkal.Fordította: Páli Gábor,
utolsó ellenőrzés:
2010.11.28.BevezetésEbben a leírásban a &os; és a &linux;
közti alapvető eltéréseket igyekszünk
szemléltetni, aminek révén a
középhaladó és haladó &linux;
felhasználók pillanatok alatt bepillantást
nyerhetnek a &os; alapjaiba. Ez egyszerűen csak egy szakmai
jellegű bevezetés, és nem foglalkozik a
két rendszer felépítése közti
filozófiai
különbségekkel.A leírás feltételezi, hogy
korábban már telepítettük a &os;
rendszert. Amennyiben ezt még nem tettük volna meg,
vagy segítségre lenne szükségünk a
telepítésben, akkor olvassuk el a
&os; kézikönyv A &os; telepítése
című fejezetét.Parancsértelmezők: hova tűnt a Bash?A Linuxról áttérő
felhasználók gyakran meglepődnek azon, hogy a
&os;-ben nem a Bash az
alapértelmezett parancsértelmező. Sőt, a
Bash még az alaprendszerben sem
található meg. Helyette a &man.tcsh.1; az
alapértelmezett parancsértelmező a &os;-ben.
Természetesen a Bash, a
többi szintén közkedvelt
parancsértelmezőhöz hasonlóan
megtalálható a &os; Csomag- és Portgyűjteményében.Ha más parancsértelmezőket is
telepítettünk, akkor a &man.chsh.1; parancs
segítségével tudjuk megváltoztatni az
alapértelmezett parancsértelmezőnket. A
root felhasználó
alapértelmezett parancsértelmezőjének
megváltoztatását azonban nem javasoljuk.
Ennek oka, hogy azok a parancsértelmezők, amelyek nem
részei az alaprendszernek, általában a
/usr/local/bin vagy a
/usr/bin könyvtárakban
találhatóak, és bizonyos
vészhelyzetekben előfordulhat, hogy ezeket az
állományrendszereket nem tudjuk csatlakoztatni.
Ilyen esetekben a root sem lesz képes
elérni a saját alapértelmezett
parancsértelmezőjét, amivel
lényegében megakadályozzuk, hogy be tudjon
jelentkezni. Erre a célra a root
felhasználó egy alternatíváját,
a toor felhasználót
hozták létre, amelyet az alaprendszeren
kívül található
parancsértelmezőkkel is használhatunk. A toor hozzáféréséről
a GYIK biztonsági kérdésekkel foglalkozó
részében tudhatunk meg többet (angolul).Csomagok és portok: szoftverek
telepítése &os; alattA szoftverek telepítésének
hagyományos &unix;-os megoldásain (a forrás
letöltésén,
kitömörítésén, a
forráskód módosításán
és lefordításán) túl az
alkalmazások telepítésének
további két módját is
felkínálja a &os;: ezek a csomagok és a
portok. A rendszerhez elérhető összes port
és csomag teljes listáját ezen
a címen érhetjük el.CsomagokA csomagok lényegében előre
lefordított alkalmazások, amelyek megfelelnek a
Debian/Ubuntu rendszerekben megtalálható
.deb, vagy a Red Hat/Fedora
rendszerekben megtalálható
.rpm állományoknak. A
csomagok a &man.pkg.add.1; segítségével
telepíthetőek. Például az
alábbi parancs az
Apache 2.2 alkalmazást
rakja fel:&prompt.root; pkg_add /tmp/apache-2.2.6_2.tbzAz kapcsolóval arra
utasítjuk a &man.pkg.add.1; programot, hogy
magától töltse le és telepítse
a csomagot, valamint annak függőségeit:&prompt.root; pkg_add -r apache22
Fetching ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-6.2-release/Latest/apache22.tbz... Done.
Fetching ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-6.2-release/All/expat-2.0.0_1.tbz... Done.
Fetching ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-6.2-release/All/perl-5.8.8_1.tbz... Done.
[nyissz]
To run apache www server from startup, add apache22_enable="YES"
in your /etc/rc.conf. Extra options can be found in startup script.Ha a &os; valamelyik kiadását
használjuk (6.2, 6.3, 7.0 stb., tehát
CD-ről telepítettük), akkor a
pkg_add -r az adott kiadáshoz
tartozó csomagokat fogja letölteni. Ezek a
csomagok azonban nem
feltétlenül az alkalmazás
legújabb verziójához tartoznak. Ezt az
alapértelmezett viselkedést felül tudjuk
bírálni, ha a PACKAGESITE
környezeti változót az ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-6-stable/Latest/
értékre állítjuk, és
így például a 6.X sorozathoz
készült legfrissebb csomagokat
tölthetjük le.A &os; különböző
változatairól a Válasszuk ki a nekünk igazán megfelelő &os; verziót!
című cikkben
olvashatunk bővebben.A csomagok használatával kapcsolatban a &os;
kézikönyvében kaphatunk részletesebb
felvilágosítást, lásd A csomagrendszer használata.PortokA &os;-ben az alkalmazások
telepítésének másik módja a
Portgyűjtemény használata. A
Portgyűjtemény lényegében
Makefile állományok és
javítások gyűjteménye, amelyek a
különféle alkalmazások
forráskódját készítik fel
arra, hogy a &os;-n is használhatóak legyenek.
Amikor telepítünk egy portot, akkor a rendszer
először letölti az alkalmazás
forráskódját, elvégzi a
szükséges módosításokat,
lefordítja a forrást és végül
telepíti az alkalmazást (valamint mindezt megteszi
az összes függősége
esetében).A Portgyűjtemény, vagy gyakran egyszerűen
csak a portfa, a /usr/ports
könyvtárban található. Itt
nyilván feltételezzük, hogy a
Portgyűjteményt is kiválasztottuk a &os;
telepítése során. Amennyiben a
Portgyűjteményt még nem
telepítettük volna, a &man.sysinstall.8;
segítségével feltehetjük a
telepítőlemezről, vagy esetleg a &man.csup.1;,
illetve &man.portsnap.8; használatával
letölthetjük a &os; Projekt valamelyik
szerveréről. A Portgyűjtemény
telepítésének részletes
bemutatása megtalálható a
kézikönyv 4.5.1. szakaszában.A telepítéshez (általában) csak
be kell lépnünk az adott port
könyvtárába és el kell
indítanunk a fordítást. A
következő példában az
Apache 2.2 alkalmazást
telepítjük a
Portgyűjteményből:&prompt.root; cd /usr/ports/www/apache22
&prompt.root; make install cleanA portok alkalmazásának egyik legnagyobb
előnye, hogy a szoftverek telepítése
során testre tudjuk szabni azok
beállításait. Például amikor
az Apache 2.2 alkalmazást
portként telepítjük, a
WITH_LDAP &man.make.1; változó
megadásával engedélyezhetjük a
mod_ldap
használatát:&prompt.root; cd /usr/ports/www/apache22
&prompt.root; make WITH_LDAP="YES" install cleanA Portgyűjteménnyel kapcsolatos további
információk tekintetében olvassuk el a
&os; kézikönyv A Portgyűjtemény használata
című szakaszát.Portok vagy csomagok, mégis melyiket
használjam?A csomagok tulajdonképpen előre
lefordított portok, ezért igazából
csak abban van köztük különbség, hogy
forrásból (portok) vagy binárisan
telepítjük-e az alkalmazásokat. Mindegyik
módszernek megvannak a maga előnyei:Csomagok (bináris)Gyorsabb telepítés (a nagyobb
alkalmazások lefordítása viszont nagyon
sokáig is eltarthat).Nem szükséges
megértenünk a szoftverek
lefordításának
mikéntjét.Nem kell fordítóprogramokat
telepítenünk a
rendszerünkre.Portok (forrás)A telepítés
beállításait tetszőlegesen
szabályozhatjuk. (A csomagok általában
szabványos beállításokkal
készülnek. A portok esetében azonban
lehetőségünk van ezeket kedvünk szerint
megváltoztatni, mint például
további modulok fordítását
kérni, vagy átállítani a
telepítés alapértelmezett
helyét.)Ha késztetést
érzünk, akkor akár a saját
javításainkat is beletehetjük a
forráskódba.Ha nincsenek különös igényeink, akkor
a csomagok minden bizonnyal tökéletesen megfelelnek
számunkra. Amikor viszont valamit külön be
szeretnénk állítani, akkor ahhoz a portokat
érdemes választanunk. (Ne felejtsük el
azonban, hogy ha elsősorban a csomagokhoz ragaszkodunk, de
mégis módosítanunk kell valamit
bennük, akkor a make
package parancs
kiadásával a portokból is tudunk csomagot
készíteni, majd átmásolni azokat
más szerverekre.)A rendszer indítása: hova lettek a
futási szintek?A &linux; a SysV rendszerindítási
sémáját alkalmazza, miközben a &os; a
hagyományos BSD típusú &man.init.8;
megoldást. A BSD típusú &man.init.8;
esetén nincsenek futási szintek és nem
létezik /etc/inittab
állomány. Helyette az &man.rc.8; vezérli a
rendszer indítását. Az
/etc/rc szkript beolvassa az
/etc/defaults/rc.conf és
/etc/rc.conf állományokat,
amelyekből megállapítja, hogy milyen
szolgáltatásokat indítson el. A megadott
szolgáltatásokat ezután az
/etc/rc.d és a
/usr/local/etc/rc.d könyvtárakban
található megfelelő
indítószkriptek segítségével
indítja el. Ezek a szkriptek hasonlóak a &linux;
rendszereken az /etc/init.d
könyvtárban található
szkriptekhez.A szolgáltatások
indításáért felelős szkriptek
miért két különböző helyen
találhatóak? Az
/etc/rc.d könyvtárban
található szkriptek az alaprendszer
részei (mint például a &man.cron.8;,
&man.sshd.8;, &man.syslog.3; és a többi). A
/usr/local/etc/rc.d könyvtárban
pedig a felhasználó által
telepíthető alkalmazások,
például az Apache,
Squid stb. szkriptjei
találhatóak.Mi a különbség az
alaprendszerben található és
a felhasználó által telepített
alkalmazások között? A &os;-t egy
összefüggő operációs
rendszerként fejlesztik. Ezt másképpen
úgy lehetne fogalmazni, hogy a rendszermagot, a
rendszerszintű függvénykönyvtárakat
és a hozzájuk tartozó programokat (mint
például a &man.ls.1;, &man.cat.1;, &man.cp.1;
stb.) együtt fejlesztik és adják ki. Ezt
nevezzük az alaprendszernek. A
felhasználó által telepíthető
alkalmazások lényegében azok, amelyek nem
részei ennek az alaprendszernek,
például az Apache,
X11,
Mozilla Firefox stb. Ezek
általában a &os; Csomag- és Portgyűjteményéből
telepíthetőek. Mivel a felhasználók
által telepített alkalmazásokat
igyekszünk elkülöníteni az
alaprendszertől, ezért ezek a
/usr/local/ könyvtárba
kerülnek. Ennek következtében a
felhasználók által telepített
binárisok a /usr/local/bin
könyvtárban, míg a hozzájuk
tartozó konfigurációs
állományok a /usr/local/etc
könyvtárban találhatóak, és
így tovább.A szolgáltatásokat az
/etc/rc.conf állományban
(lásd &man.rc.conf.5;) tudjuk engedélyezni a
SzolgáltatásNév_enable="YES"
sor megadásával. A rendszer alapértelmezett
beállításait az
/etc/defaults/rc.conf
állományban találhatjuk meg, ezeket az
/etc/rc.conf állományban tudjuk
felülbírálni. Az alkalmazásokhoz
tartozó szolgáltatások
engedélyezésének lépéseihez
pedig a telepítésük után ne
felejtsük el átolvasni a hozzájuk
tartozó dokumentációt.Az /etc/rc.conf
állományból származó most
következő rövid kódrészlet az
&man.sshd.8; és Apache 2.2
szolgáltatásokat engedélyezi, valamint az
Apache számára
beállítja az SSL használatát.# az SSHD engedélyezése
sshd_enable="YES"
# az Apache és benne az SSL támogatásának engedélyezése
apache22_enable="YES"
apache22_flags="-DSSL"Miután az /etc/rc.conf
állományban engedélyeztük a
szolgáltatásokat, a parancssorból el is
tudjuk indítani ezeket (a rendszer
újraindítása nélkül):&prompt.root; /etc/rc.d/sshd startHa egy szolgáltatást nem
engedélyeztünk, akkor a parancssorból a
paraméter
megadásával tudjuk elindítani:&prompt.root; /etc/rc.d/sshd forcestartA hálózat
beállításaHálózati interfészekA hálózati csatolófelületekre a
Linux esetén alkalmazott általános
ethX alakú azonosítók
helyett a &os; az adott hálózati kártya
meghajtójának nevével és
utána egy sorszámmal hivatkozik. Az
&man.ifconfig.8; itt látható kimenetében
két &intel; Pro 1000 hálózati
kártya jelenik meg (em0 és em1):&prompt.user; ifconfig
em0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
options=b<RXCSUM,TXCSUM,VLAN_MTU>
inet 10.10.10.100 netmask 0xffffff00 broadcast 10.10.10.255
ether 00:50:56:a7:70:b2
media: Ethernet autoselect (1000baseTX <full-duplex>)
status: active
em1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
options=b<RXCSUM,TXCSUM,VLAN_MTU>
inet 192.168.10.222 netmask 0xffffff00 broadcast 192.168.10.255
ether 00:50:56:a7:03:2b
media: Ethernet autoselect (1000baseTX <full-duplex>)
status: activeAz IP-cím beállításaAz interfészekhez az &man.ifconfig.8; paranccsal
tudunk IP-címet rendelni. Az IP-címek
beállítása azonban csak akkor marad meg az
újraindítást követően is, ha
felvesszük az /etc/rc.conf
állományba. A most következő
példában megadunk egy hálózati
nevet, IP-címet és egy alapértelmezett
átjárót:hostname="szerver1.minta.com"
ifconfig_em0="inet 10.10.10.100 netmask 255.255.255.0"
defaultrouter="10.10.10.1"DHCP esetén használjuk a
következőt:hostname="szerver1.minta.com"
ifconfig_em0="DHCP"TűzfalakHasonlóan a Linuxban található
IPTABLES megoldáshoz, a &os; is
kínál fel rendszermagszintű
tűzfalazást. A &os; jelen pillanatban három
tűzfalat támogat:IPFIREWALLIPFILTERPFAz IPFIREWALL, avagy
IPFW (az
IPFW szabályrendszereit az
&man.ipfw.8; paranccsal tudjuk kezelni) a &os; fejlesztői
által készített és karbantartott
tűzfal. A forgalomszabályozás
megvalósításához és
különböző típusú
hálózati kapcsolatok
szimulációjához az
IPFW kiegészíthető a
&man.dummynet.4; használatával.Ez az IPFW szabály
engedélyezi a beérkező
SSH-kapcsolatokat:ipfw add allow tcp from any to me 22 in via $ext_ifAz IPFILTER tűzfalat
Darren Reed dolgozta ki. Nem csak &os; alatt
találkozhatunk vele, több operációs
rendszerre is portolták, többek közt NetBSD-re,
OpenBSD-re, SunOS-re, HP/UX-ra és Solarisra.Ez az IPFILTER parancs
engedélyezi a beérkező
SSH-kapcsolatokat:pass in on $ext_if proto tcp from any to any port = 22Az utolsó tűzfal, a PF,
az OpenBSD Projekt fejlesztése. A
PF eredetileg az
IPFILTER
leváltására készült. Emiatt a
PF szabályainak megadási
módja nagyon hasonlít az
IPFILTER esetében
megismertekhez. A minőségalapú (QoS)
forgalomszabályozás
létrehozásához a
PF az &man.altq.4;
megoldásával egészíthető
ki.Ez a PF parancs engedélyezi
a beérkező
SSH-kapcsolatokat:pass in on $ext_if inet proto tcp from any to ($ext_if) port 22A &os; frissítéseA &os; rendszer háromféleképpen
frissíthető: forráskódból,
binárisan és telepítőlemezek
használatával.A forráskódon keresztüli
frissítés ugyan a legbonyolultabb ezek
közül, azonban ez kínálja fel egyben a
legnagyobb rugalmasságot is. Ennek során
szinkronizálnunk kell a &os;
forráskódjának nálunk levő
(helyi) másolatát a &os;
CVS (Concurrent Versioning System)
szervereivel. Miután ez megtörtént, le tudjuk
fordítani a rendszermagot és a hozzá
tartozó programokat. A források
frissítésével kapcsolatban olvassuk el a
&os; kézikönyv frissítésről
szóló fejezetét.A bináris frissítés a &linux;
típusú rendszereken elérhető
yum vagy apt-get parancsok
esetén megszokottakhoz hasonló. A
&man.freebsd-update.8; parancs letölti a
frissítéseket és telepíti ezeket. Ez
a frissítési folyamat a &man.cron.8;
használatával ütemezhető.Amikor a &man.cron.8; segítségével
ütemezzük a frissítéseket, a
&man.crontab.1; állományban lehetőség
szerint a freebsd-update cron parancsot
használjuk, ezáltal igyekezzünk
csökkenteni annak
valószínűségét, hogy egyszerre
több számítógép is ugyanakkor
terhelje a szervert.0 3 * * * root /usr/sbin/freebsd-update cronAz utolsó frissítési módszer, a
telepítőlemezek használata
lényegében egy egyértelmű folyamat.
Indítsuk el
számítógépünket a
telepítőlemezről, és a
telepítőben válasszuk a frissítés
(upgrade) opciót.procfs: eltűnt, de nem nyomtalanulA &linux; alatt a
/proc/sys/net/ipv4/ip_forward
használatával tudjuk megmondani, hogy az IP-csomagok
továbbítása engedélyezett-e
rendszerünkben. Mivel a &man.procfs.5; a &os; jelenlegi
verzióiban már elavultnak számít,
ezért ezt a &man.sysctl.8; paranccsal nézhetjük
meg a rendszer egyéb beállításai
mellett. (A sysctl viszont &linux; alatt is
egyaránt megtalálható.)Ha az IP-csomagok
továbbításáról
szóló példánál maradunk, akkor
az alábbi módon kérdezhetjük le,
hogy engedélyezett-e a &os; rendszerünkön:&prompt.user; sysctl net.inet.ip.forwarding
net.inet.ip.forwarding: 0Az paraméter
megadásával a rendszer összes jelenlegi
beállítását le tudjuk
kérdezni:&prompt.user; sysctl -a
kern.ostype: FreeBSD
kern.osrelease: 6.2-RELEASE-p9
kern.osrevision: 199506
kern.version: FreeBSD 6.2-RELEASE-p9 #0: Thu Nov 29 04:07:33 UTC 2007
root@i386-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC
kern.maxvnodes: 17517
kern.maxproc: 1988
kern.maxfiles: 3976
kern.argmax: 262144
kern.securelevel: -1
kern.hostname: server1
kern.hostid: 0
kern.clockrate: { hz = 1000, tick = 1000, profhz = 666, stathz = 133 }
kern.posix1version: 200112
...Bizonyos sysctl-értékek
írásvédettek.Adódhatnak olyan alkalmak, amikor mégis
szükségünk lehet a procfs
használatára, mint például régi
szoftverek futtatása, a rendszerhívások
nyomkövetése a &man.truss.1;
segítségével, vagy a bináris Linux kompatibilitás
használata. (Noha a bináris Linux kompatibilitás
egy saját procfs állományrendszert, egy
&man.linprocfs.5; rendszert használ.) A procfs
típusú állományrendszerek
csatlakoztatásához a következőt kell megadnunk
az /etc/fstab állományban:proc /proc procfs rw,noauto 0 0A beállítás
megadásával megakadályozzuk, hogy a
/proc a rendszerindítás
során magától
csatlakoztatódjon.A procfs típusú
állományrendszereket így lehet
csatlakoztatni:&prompt.root; mount /procGyakori parancsokA csomagok kezeléseLinuxos parancs (Red Hat/Debian)A &os;-s megfelelőjeLeírásyum install csomag / apt-get install csomagpkg_add -r csomagA csomag
telepítése egy távoli
számítógéprőlrpm -ivh csomag / dpkg -i csomagpkg_add -v csomagCsomag telepítéserpm -qa / dpkg -lpkg_infoA telepített csomagok
megjelenítéseA rendszer kezeléseLinuxos parancsA &os;-s megfelelőjeLeíráslspcipciconfA PCI-os eszközök
megjelenítéselsmodkldstatA betöltött rendszermagmodulok
felsorolásamodprobekldload / kldunloadModulok betöltése és
eltávolításastracetrussA rendszerhívások
nyomkövetéseLezárásBízunk benne, hogy ez a leírás eleget
mutatott be ahhoz, hogy elkezdjünk ismerkedni a &os;-vel. Ha
az érintett témák még jobban
érdekelnek minket, vagy olyanról szeretnénk
többet megtudni, ami itt nem szerepelt, akkor
mindenképpen olvassunk bele a &os; kézikönyvbe.