Saját szerverek
Linux
A Linux kernel adja az operációs rendszer magját, a disztribúció pedig a csomagkezelést, az init rendszert és a jogosultsági modellt. Nálunk ez a szerverek alapja.
A Linux kernel az operációs rendszer magja: az a réteg, amely a hardvert és az erőforrásokat kezeli, és amelyre a felhasználói tér épül. A kernel saját leírása szerint a Unix klónja, POSIX és Single UNIX Specification megfelelőségre törekszik, és GPLv2 alatt terjesztik.
Önmagában azonban a kernel nem használható rendszer. Amit futtatunk, az disztribúció: a kernel és a köré épülő felhasználói tér együtt, csomagkezeléssel, init rendszerrel és frissítési csatornákkal. A kernel.org ezt élesen elválasztja: ha az uname -r kimenetében a kötőjel után bármi áll, disztribúciós kernelt futtatunk, amelyet a kernel.org nem hosztol, és amelynek a jelentése a disztribúció csatornáira tartozik.
A kernel és a disztribúció
A kernel a folyamatok, a memória, a fájlrendszerek és a hálózat kezeléséért felel, alkalmazásokat nem tartalmaz. A disztribúció adja hozzá a csomagkezelést, az init rendszert, a jogosultsági modellt és a frissítési csatornákat, ezért a rendszer viselkedésének nagy része a disztribúció döntése.
Kiadások és frissítések
A kernel kiadási rendje kiszámítható. A mainline ág 9-10 hetente kap új verziót: két hét merge window után heti kiadásjelöltekkel nagyjából hét hét stabilizálás következik. Az ezt követő stable ágba a mainline-ból visszaportolt hibajavítások kerülnek, hetente; a longterm ágak régebbi fákat tartanak életben, csak fontos javításokkal, és a támogatás várható végét a kernel.org dátummal teszi közzé.
A stable szabályok szűkek: a javításnak már léteznie kell a mainline-ban, igazoltan helyesnek és teszteltnek kell lennie, nem lehet nagyobb száz sornál, és valódi hibát kell orvosolnia: oopsot, lefagyást, adatsérülést vagy biztonsági hibát. Elméleti versenyhelyzetek és kozmetikai javítások nem kerülnek be, ezért egy régi ág nem kapja meg az összes új fejlesztést.
A disztribúciós frissítés csomagokon keresztül megy, és a bizalom kriptográfiai láncon nyugszik: a csomagkezelő a nyilvános kulcsokkal ellenőrzi a tároló aláírását, a hash-ek pedig a csomagok érintetlenségét bizonyítják.
- A frissítés nem azonnali. Az új kernel kép telepítése nem cseréli le a futó kernelt, az új a következő indításig nem él, és a rendszerindító dönti el, melyik kép indul.
- Saját kernelhez eszközverziók kellenek. A dokumentáció konkrét minimumokat sorol fel, és figyelmeztet, hogy az elavult build-függőségek közvetett hibákat okozhatnak.
Szolgáltatások és az init
Az init rendszer indítja el a felhasználói teret. A systemd az első folyamatként (PID 1) fut, és nem csak elindítja, hanem életben is tartja a szolgáltatásokat. A vezérlés egységeken keresztül történik: a service egységek démonokat indítanak, a target egységek csoportosítanak, a socket egységek pedig igény szerinti indítást tesznek lehetővé. A rendszerindítás végén a default.target aktiválódik, ami általában a konzolos multi-user.target vagy a grafikus graphical.target álneve.
A systemd minden szolgáltatást saját control groupba tesz, így a folyamatok egységenként követhetők. Az állapotot a systemctl mutatja, a naplót a journalctl. Nálunk ez a réteg az, ahol egy szolgáltatás újraindítása egy egység újraindítását jelenti, nem kézi folyamatkezelést.
Jogosultságok: felhasználók, root, sudo
A jogosultsági modell felhasználó- és csoportazonosítókra épül: minden folyamatnak van valós, effektív és mentett azonosítója, a fájlhozzáférést pedig ezek és a csoportok döntik el. A kiemelt root fiók azonosítója 0. Az /etc/passwd mindenki számára olvasható, mert több eszköz is ebből képezi le az azonosítókat, de írni csak a superuser tudja; a jelszó-hash-ek jellemzően külön fájlban, kizárólag a superuser számára olvashatóan vannak.
A root minden jogosultságellenőrzést megkerül, ezért a Linux 2.2 óta a superuserhez kötött jogosultságokat külön egységekre, capability-kre bontja, amelyek egymástól függetlenül adhatók meg vagy tilthatók meg. Ez teszi lehetővé, hogy egy szolgáltatás csak azt kapja meg, amire szüksége van, például az alacsony portra kötést.
A mindennapi munkában a sudo a fő eszköz: engedélyezett felhasználóként egy parancsot más felhasználó, jellemzően root jogosultságával futtathatunk. A szabályokat a sudoers politika írja le az /etc/sudoers fájlban, és a sudo a futtató felhasználó hitelesítő adatait ellenőrzi, nem a rootét. A hitelesítés eredménye alapértelmezésben öt percig gyorsítótárazódik, a kísérletek pedig naplózódnak.
- A sudoers hibája súlyos. Szintaktikai hiba a politikában a kiemelt hozzáférést is elviheti, ezért a szerkesztés a visudo eszközön keresztül történik.
- A jogosultság a legszélesebb felület. Ezért szűk capability-készlet és külön szolgáltatásfiókok a járható irány.
Hol van a helye nálunk
A szervereink Linuxon futnak, a munkafolyamatok gépei Windows munkaállomások. A konténerek, adatbázisok és háttérszolgáltatások a Linux hoszton élnek, és a két világot összekötjük, hogy az ügynökök mindkét oldalon elérjék a szükséges erőforrásokat. A konténerek a Docker felé futnak, a szolgáltatásréteget az init rendszer tartja kézben, az automatizálás a n8n felé kapcsolódik, az ügynökök munkája pedig a Hermes Agent köré szerveződik.
A CyberElectro szerveroldala ezen a rétegen áll: Linux host, szűk jogosultságok, és a disztribúció csatornáin végigvitt frissítések.
Tovább olvasás
- Active kernel releases - a mainline, stable és longterm ágak, a támogatás várható végével.
- The Linux Kernel documentation - a kernel saját dokumentációjának belépője.
- Linux man pages - a man-pages projekt oldalai, köztük a sudo és a systemd leírásai.