- A root teljes hozzáférést biztosít, de az Ubuntu és más disztribúciók alapértelmezés szerint letiltják a kockázatok csökkentése érdekében.
- A Sudo lehetővé teszi a jogosultságok eseti emelését, és nyilvántartást vezet arról, hogy ki hajtja végre az egyes parancsokat.
- Grafikus alkalmazásokhoz léteznek segítők, mint például a kdesu, gksu, gksudo vagy pkexec, amelyek .desktop indítófájlokban használhatók.
- A biztonság a minimális jogosultságok használatától, a nem megbízható szkriptek elkerülésétől és a megemelt hozzáférés naplózásától függ.

Windows rendszerben sokan a Shift+Enter vagy a Shift+bal egérgomb billentyűkombinációval szoktak megnyitni egy programot emelt jogosultságokkal a Start menüből. Linux alatt ez nem mindig egyszerű, mivel a biztonság a root, a sudo és a grafikus segítők használatára támaszkodik , és minden asztali környezetnek megvannak a saját eszközei. Ennek ellenére meglehetősen egyszerű módokon lehet alkalmazásokat root felhasználóként elindítani egy indítóból, egy parancsikonból vagy az alkalmazások menüjéből, bár fontos megérteni, hogy ez mit is jelent.
A lényeg az, hogy a root felhasználó abszolút ellenőrzéssel rendelkezik a rendszer felett , és a modern disztribúciók, különösen az Ubuntu és származékai, jellemzően letiltják a közvetlen bejelentkezést. Ezért nem gyakori a root felhasználóként való bejelentkezés, hanem alkalmanként a jogosultságok emelése a `sudo` vagy egy grafikus program használatával, amely bekéri a jelszót. Ha azt szeretnénk, hogy egy indító ikon elindítson egy alkalmazást ezekkel a jogosultságokkal, módosítanunk kell a végrehajtott parancsot, vagy létre kell hoznunk egy speciális indítót.
Mit jelent valójában rootként futtatni valamit?

Linuxban a root egy 0 UID-vel és korlátlan jogosultságokkal rendelkező fiók . Bármely fájlt olvashat, módosíthat vagy törölhet, szoftvert telepíthet, megváltoztathatja a kernel konfigurációját, és vezérelheti bármely felhasználóhoz tartozó folyamatokat. Ez hihetetlenül hatékony eszközzé teszi, de gondatlan használat esetén hatalmas kockázatot is jelent. Egy egyszerű elgépelés az `rm` vagy `mv` paranccsal használhatatlanná teheti a rendszert, és egy root felhasználóként futtatott rosszindulatú szkript hátsó ajtókat telepíthet, módosíthatja a biztonsági intézkedéseket, vagy gyakorlatilag nyomtalanul ellophat adatokat.
Az Ubuntuban a root fióknak nincs alapértelmezett jelszava, és a közvetlen bejelentkezés sem engedélyezett. A filozófia az, hogy a szokásos felhasználói fiókoddal dolgozol, és a `sudo` parancsot használod bizonyos feladatokhoz . A `sudo` lényegében azt jelenti, hogy egy parancsot egy másik felhasználóként, általában rootként futtatsz, miután hitelesítetted magad a saját jelszavaddal, ha a `sudo` csoporthoz tartozol. Ez korlátozza a kitettség időtartamát, és nyilvántartást vezet arról, hogy ki mit csinált.
Azonban nagyon speciális helyzetekben, például sérült rendszer helyreállításakor, korlátozott környezetekben való munkavégzéskor vagy olyan szolgáltatások konfigurálásakor, amelyek állandó hozzáférést igényelnek, érdemes lehet ideiglenesen engedélyezni a root hozzáférést. Az általános ajánlás az, hogy amint szükségessé válik, azonnal tiltsa le. Minél kevesebb időt tölt rootként, annál jobb a gép stabilitása és biztonsága szempontjából.
A root óvatos használatának kockázatai
Az egyik legnyilvánvalóbb veszély a létfontosságú fájlok véletlen törlése . Root felhasználóként nincsenek jogosultsági korlátozások; egy olyan parancs, mint a `sudo rm -rf /` figyelmeztetés nélkül törölheti a rendszert. Általában nincs lomtár sem ezekhez a törlésekhez, így a helyreállításhoz összetett forenzikus eszközökre vagy akár teljes rendszer újratelepítésre lehet szükség.
Egy másik kockázat a nem megbízható szkriptek futtatása. Ha emelt jogosultságokkal rendelkező webhelyről letöltött kódot futtatsz, lényegében a saját otthonod kulcsait adod neki . Még ha a szkript ártalmatlannak is tűnik, tartalmazhat káros utasításokat, vagy root jogosultságokkal telepíthet rosszindulatú programokat. Ezért ajánlott a kódot áttekinteni, hivatalos forrásokat használni, ellenőrző összegeket ellenőrizni, és virtuális gépen vagy konténerben tesztelni, mielőtt éles környezetben futtatnád.
Van egy nyomonkövethetőségi probléma is. A `sudo` parancs használatakor a rendszer naplózza a parancsot, a kiadó felhasználót és az időpontot a `/var/log/auth.log`, `/var/log/secure` vagy `journalctl` fájlokba . Ha közvetlenül root felhasználóként jelentkezel be, minden root felhasználóként jelenik meg, és elveszíted a képességedet, hogy lásd, melyik személy végezte az egyes módosításokat. Több rendszergazdával rendelkező vagy ISO 27001, PCI DSS vagy más auditálási szabványokat alkalmazó környezetekben a nyomonkövethetőség hiánya jelentős gyengeség.
Módszerek jogosultságok megszerzésére a terminálból

A leggyakoribb és ajánlott módszer, ha egy adott parancs elé a `sudo` parancsot írjuk. Például csomagok frissítéséhez, szolgáltatás újraindításához vagy védett fájl szerkesztéséhez a `sudo` a felhasználói jelszót fogja kérni, nem a root jelszót, és a hitelesítés után emelt jogosultságokkal hajtja végre a parancsot. Ha másik felhasználóként kell futtatnia, használhatja a `sudo -u username command` parancsot . Ha pedig rájön, hogy elfelejtette használni a `sudo` parancsot, megismételheti az utolsó parancsot a `sudo !! ` paranccsal.
Amikor egymás után több adminisztratív feladatot fogsz végrehajtani, kényelmes lehet egy ideiglenes root shell megnyitása. A `sudo -i` parancs egy teljes root bejelentkezést szimulál, betölti a root környezetet, és a saját könyvtárba helyez. A `sudo su` vagy a `sudo su -` parancs is működik, bár a `sudo -i` általában megbízhatóbb. A munkamenetből való kilépéshez egyszerűen írd be az `exit` parancsot. Nem ajánlott felügyelet nélkül hagyni a root shell-t.
A `su` parancs ezzel szemben felhasználókat vált. A `su - root` vagy egyszerűen a `su -` parancs szintén átveszi a célfelhasználó környezeti változóit, míg a `su root` vagy a kötőjel nélküli `su` megőrzi az előző környezet egy részét. Ez a különbség magyarázza az olyan hibákat, mint a `command not found`: az adminisztratív parancsok általában a `/usr/local/sbin`, `/usr/sbin` és `/sbin` könyvtárakban találhatók, amelyek nem mindig jelennek meg egy normál felhasználó PATH-jában. Ha a `su` parancsot kötőjel nélkül használod, akkor be kell írnod a teljes elérési utat, vagy át kell váltanod a `su -` parancsra a root PATH örökléséhez.
Ha jelszót szeretnél engedélyezni a root számára, ezt a `sudo passwd root` paranccsal teheted meg . Az Ubuntu ezt nem javasolja, de technikailag lehetővé teszi a root számára a jelszó használatát. A fiók zárolásához használd a `sudo passwd -l root` parancsot , a feloldásához pedig a `sudo passwd -u root` parancsot. SSH-n a közvetlen root hozzáférést a `PermitRootLogin` vezérli az `/etc/ssh/sshd_config` fájlban. A legbiztonságosabb, ha `no` vagy legfeljebb `prohibit-password` értékre van állítva, hogy csak az SSH jelszavakat engedélyezd. Utána újra kell indítanod az SSH szolgáltatást.
A pulóverek pontos konfigurálása
Az `/etc/sudoers` fájl határozza meg, hogy kik és milyen célra használhatják a `sudo` parancsot. A legjobb, ha nem szerkesztjük manuálisan; a helyes megközelítés a `sudo visudo` használata , amely zárolja a fájlt és ellenőrzi a szintaxist a mentés előtt. Az alapszabály formátuma `host user=(target_user)`. Például a `bob ALL=(ALL) ALL` lehetővé teszi a `bob` számára, hogy bármilyen parancsot végrehajtson root felhasználóként bármely gépen. Csoportok is használhatók, például `%admin ALL=(ALL) ALL`.
A finomabb jogosultságok megadásához aliasokat használunk. A `User_Alias ADMINS = alice, bob` a felhasználókat, a `Cmnd_Alias LOCATE = /usr/sbin/updateddb` pedig a parancsokat csoportosítja. Ezután az `ADMINS ALL = LOCATE` beállítást használjuk, hogy az adott felhasználók csak ezeket a parancsokat hajthassák végre. Az olyan parancsokhoz, mint a `NETWORKING`, létrehozhatók aliasok, mint a `route`, `ifconfig`, `ping`, `iptables` stb. Ez a minimális jogosultság elvét alkalmazza anélkül, hogy teljes root hozzáférést biztosítana bárkinek.
A NOPASSWD opció lehetővé teszi bizonyos parancsok jelszó nélküli futtatását, például a `pi ALL=(ALL)` parancsot. NOPASSWD: ALL. Ez kényelmes, de veszélyes, ha visszaélés történik. Továbbá a `sudo` minden egyes használatát naplózza a rendszer, ami segít a hozzáférés auditálásában és a problémák elhárításában. Ha valami elromlik, ezeknek a naplóknak az áttekintése megmutathatja, hogy melyik legutóbbi módosítás okozta a hibát.
Grafikus alkalmazások indítása root felhasználóként az indítóból

Grafikus felületű programok esetén a `sudo` egyszerű használata általában nem működik jól, mivel nincs terminál, amely bekérné a jelszót. Itt jönnek képbe a grafikus segítők . A KDE-ben létezik a `kdesu` : ha tudod, melyik parancs indítja el az alkalmazást, futtathatod a `kdesu that_command` parancsot. A KDE menüben a `Parancs futtatása` opció lehetővé teszi egy alkalmazás elindítását egy másik felhasználóként a hitelesítő adatainak megadásával. GNOME és GTK környezetekben a `gksu` és a `gksudo` parancsokat széles körben használták ; ezek a `sudo` vagy a `su` frontendjei. Például a `gksu synaptic` vagy a `gksudo gparted` megnyitja az alkalmazást és kéri a jelszót.
A modern rendszerekben a gksu használata vagy nem javasolt, vagy elavult. Szokásos alternatívája a PolicyKit-en alapuló pkexec , amely lehetővé teszi a programok futtatását a meghatározott szabályzatoknak megfelelő jogosultságokkal. Sok jelenlegi indítóprogram adminisztratív feladatokhoz használja a pkexec-et. Az ötlet ugyanaz: a felhasználónak nem kell terminált megnyitnia, hanem a rendszer ellenőrzött módon ellenőrzi a jogosultságokat.
Parancsikon létrehozásához az indítóban egy .desktop fájlt kell szerkeszteni . Az `Exec` sor a kulcs. Ha root felhasználóként szeretnéd futtatni, használhatsz valami ilyesmit: `Exec=gksu /program/útvonal`, `Exec=kdesu /program/útvonal` vagy `Exec=pkexec /program/útvonal`. Ha közvetlenül a `sudo` parancsot használod, akkor az indítóban `Terminal=true` beállításra van szükség, vagy be kell állítani egy grafikus askpass-t. Megpróbálhatod megnyomni az Alt+F2 billentyűkombinációt, és beírni a segédprogramot és a program nevét, például `gksu synaptic`. KDE-ben a `kdesu synaptic` vagy a másik felhasználóként történő futtatás lehetősége hasonló funkciót lát el.
Létezik egy klasszikus alternatíva , a consolehelper , egy burkolóanyag grafikus alkalmazásokhoz. Létrehozol egy szimbolikus linket, például /usr/bin/xterm-root, amely a /usr/sbin/consolehelper fájlra mutat. Ezután konfigurálod a PAM-ot a /etc/pam.d/xterm-root fájl létrehozásával, amely tartalmazza a config-util által megadott hitelesítési, fiók- és munkamenet-adatokat. Ezután definiálod a /etc/security/console.apps/xterm-root fájlt a USER=root és a PROGRAM=/usr/bin/xterm paraméterekkel. Az xterm-root futtatásakor a consolehelper PAM hitelesítést kér, és rootként indítja el az xterm programot. Ha „Xlib kapcsolat a :0.0 címmel a kiszolgáló által elutasítva” hibát tapasztalsz, az xhost local:root futtatása segíthet.
Mindenesetre a grafikus alkalmazások root felhasználóként történő megnyitásának vannak hátrányai: keveri a környezeti változókat, megszakíthatja a munkamenet-buszt, hatással lehet a Waylandre vagy az X11-re, és root tulajdonú fájlokat hoz létre a saját könyvtáradban. A legjobb, ha csak bizonyos adminisztratív eszközökhöz használod, és amint elkészültél, bezárod őket. Ne böngéssz az interneten, és ne nyisson meg gyanús dokumentumokat root felhasználóként , mert bármilyen sérülékenység teljes jogosultságokat örökölne.
Gyakori példák root hozzáférést igénylő feladatokra
Sok mindennapi művelet emelt szintű jogosultságokat igényel. A csomagok apt, zypper, dnf vagy yum segítségével történő kezeléséhez gyakran sudo szükséges. Például: `sudo apt update` , `sudo apt install firefox` vagy `sudo zypper install docker-ce`. Ugyanez vonatkozik a rendszerszolgáltatásokra is: `sudo systemctl restart apache2`, `sudo systemctl restart ssh` vagy `sudo systemctl restart nginx`. Felhasználói fiókok módosításához használd a `sudo usermod` parancsot, a fájltulajdonos megváltoztatásához pedig a `sudo chown` parancsot. A kritikus konfigurációk, például az `/etc/ssh/sshd_config` szerkesztése szintén root jogosultságokat igényel, ha nano, vim vagy gedit segítségével végzed.
Nincs szükség a `sudo` parancsra azokhoz a parancsokhoz, amelyek csak információkat olvasnak, vagy nem módosítják a rendszert, mint például a `zypper repos` vagy a `systemctl status NetworkManager`. A `sudo` használata mindenre, csak megszokásból, rossz gyakorlat. Az ésszerű dolog az, hogy csak akkor emeljük meg a jogosultságokat, ha a feladat megköveteli , majd a lehető leghamarabb visszaváltsunk a normál felhasználóra.
Ajánlott gyakorlatok emelt szintű jogosultságokkal való munkavégzéshez

A minimális jogosultságok elvének kell mindent vezérelnie. Amikor csak lehetséges, használd a `sudo` parancsot az egyes parancsokhoz, kerüld az állandó root shelleket, kivéve, ha feltétlenül szükséges, és amint befejezted, lépj ki. Ne futtass ismeretlen forrásból származó szkripteket rootként; előtte nézd át a kódot, töltsd le hivatalos tárolókból vagy megbízható projektekből, ellenőrizd az ellenőrzőösszegeket, és teszteld egy elszigetelt környezetben, ha bármilyen kétséged van. Egy egészséges adag szkepticizmus erény, ha harmadik féltől származó, teljes jogosultságokkal rendelkező kóddal dolgozol.
Célszerű a sudoereket részletesen konfigurálni, nem kizárólag a sudo csoportra hagyatkozni mindenben, és a naplókat naplózni. Ha szervereket adminisztrálsz, ellenőrizd a `/var/log/auth.log`, `/var/log/secure` vagy `journalctl -xe` fájlokat a visszaélések észlelése érdekében. Többfelhasználós környezetekben az egyes parancsok futása előtti ismeret kulcsfontosságú az elszámoltathatóság és a biztonsági előírások betartása szempontjából.
Root engedélyezése és letiltása egy fejléccel
Ha úgy dönt, hogy engedélyezi a root hozzáférést, adjon hozzá egy jelszót a `sudo passwd root` paranccsal, csak a legszükségesebb feladatokhoz használja, majd zárolja újra a fiókot. A közvetlen SSH bejelentkezés letiltásához szerkessze az `sshd_config` fájlt, és állítsa be a `PermitRootLogin no` vagy a `prohibit-password` értéket, majd indítsa újra az SSH-t. A fiók helyi zárolásához használja a `sudo passwd -l root` parancsot. A feloldáshoz használja a `sudo passwd -u root` parancsot. Ezek az intézkedések csökkentik a támadási felületet, és megakadályozzák a nyers erővel történő támadásokat a legerősebb fiók ellen.
A legtöbb esetben a kezdeti kérdésre a gyakorlati válasz igen: root jogosultságokkal elindíthatsz egy programot az indítóból egy grafikus segítő, például a kdesu, gksu, gksudo vagy pkexec használatával, vagy egy .desktop fájl létrehozásával a megfelelő paranccsal. Ez azonban nem olyasmi, amit akármilyen alkalmazáshoz beállítva hagyhatsz. Jobb, ha vannak külön adminisztratív indítóik egyértelmű nevekkel, és csak szükség esetén használod őket.
A lényeg az, hogy a root nem játékszer, és a sudo pontosan azért létezik, hogy felhatalmazzon anélkül, hogy minden kattintást állandó kockázattá tenne. Ha grafikus alkalmazást kell elindítanod szuperfelhasználóként, akkor priorizáld a jelszót igénylő segédprogramokat, ellenőrizd, hogy az alkalmazásnak valóban szüksége van-e rá, és korlátozd a használatát adminisztratív feladatokra. Így élvezheted az indító kényelmét anélkül, hogy feláldoznád a Linuxot olyan erőssé tevő biztonságot.