Kako zagnati programe kot root iz zaganjalnika v Linuxu

Zadnja posodobitev: 15 oktober 2026
  • Root ponuja popoln nadzor, vendar ga Ubuntu in druge distribucije privzeto onemogočijo, da zmanjšajo tveganja.
  • Sudo vam omogoča, da zvišate privilegije za vsak primer posebej in vodi evidenco o tem, kdo izvede vsak ukaz.
  • Za grafične aplikacije obstajajo pomočniki, kot so kdesu, gksu, gksudo ali pkexec, ki jih je mogoče uporabiti v zaganjalnikih .desktop.
  • Varnost je odvisna od uporabe najmanjših privilegijev, izogibanja nezaupanja vrednim skriptom in nadzora povišanih pravic dostopa.

Sistemski inženir, ki upravlja strežnike v sodobnem podatkovnem centru.

V sistemu Windows so mnogi navajeni pritiskati Shift+Enter ali Shift+klik z levo tipko miške, da odprejo program s povišanimi privilegiji iz menija Start. V Linuxu to ni vedno preprosto, saj varnost temelji na root-u, sudo-u in grafičnih pomočnikih , vsako namizno okolje pa ima svoja orodja. Kljub temu obstajajo dokaj preprosti načini za zagon aplikacij kot root iz zaganjalnika, bližnjice ali menija aplikacij, čeprav je pomembno razumeti, kaj to pomeni.

Ključno je, da ima uporabnik root popoln nadzor nad sistemom , sodobne distribucije, zlasti Ubuntu in njegove izpeljanke, pa običajno onemogočajo neposredno prijavo. Zato se ni običajno prijaviti kot root, temveč občasno zvišati privilegije z ukazom `sudo` ali grafičnim programom, ki zahteva geslo. Če želimo, da ikona zaganjalnika zažene aplikacijo s temi privilegiji, bomo morali spremeniti ukaz, ki ga izvaja, ali ustvariti poseben zaganjalnik.

Kaj pravzaprav pomeni zagnati nekaj kot root?

Delovna postaja za sistemsko administracijo z več monitorji, ki prikazujejo Linux terminale.

V Linuxu je root račun z UID 0 in neomejenimi privilegiji . Lahko bere, spreminja ali briše katero koli datoteko, namešča programsko opremo, spreminja konfiguracije jedra in nadzoruje procese, ki pripadajo kateremu koli uporabniku. Zaradi tega je neverjetno zmogljivo orodje, a hkrati tudi veliko tveganje, če se uporablja neprevidno. Preprosta tipkarska napaka z `rm` ali `mv` lahko sistem naredi neuporabnega, zlonamerni skript, ki se izvaja kot root, pa lahko namesti zadnja vrata, spremeni varnostne ukrepe ali ukrade podatke praktično brez sledi.

V Ubuntuju root račun nima privzetega gesla in neposredna prijava ni dovoljena. Filozofija je, da delate z običajnim uporabniškim računom in za določena opravila uporabljate `sudo` . `sudo` v bistvu pomeni izvajanje ukaza kot drug uporabnik, običajno root, po overjanju z lastnim geslom, če pripadate skupini `sudo`. To omejuje čas, ko ste izpostavljeni, in vodi evidenco o tem, kdo je kaj storil.

Vendar pa v zelo specifičnih situacijah, kot so obnovitev poškodovanega sistema, delo v omejenih okoljih ali konfiguriranje storitev, ki zahtevajo trajen dostop, lahko razmislite o začasni omogočenju root dostopa. Splošno priporočilo je, da ga ponovno onemogočite takoj, ko se pojavi potreba. Manj časa kot ste root uporabnik, boljše je za stabilnost in varnost računalnika.

Tveganja uporabe roota brez previdnosti

Ena najbolj očitnih nevarnosti je nenamerno brisanje vitalnih datotek . Kot root uporabnik ni omejitev dovoljenj; ukaz, kot je `sudo rm -rf /`, lahko brez opozorila izbriše sistem. Za te izbrise običajno ni koša, zato lahko obnovitev zahteva kompleksna forenzična orodja ali celo popolno ponovno namestitev sistema.

Drugo tveganje je izvajanje nezaupanja vrednih skriptov. Če zaženete kodo, preneseno s katerega koli spletnega mesta s povišanimi privilegiji, ji v bistvu dajete ključe svoje hiše . Tudi če se skript zdi neškodljiv, lahko vsebuje škodljiva navodila ali namesti zlonamerno programsko opremo s korenskimi pravicami. Zato je priporočljivo, da pred zagonom v produkciji pregledate kodo, uporabite uradne vire, preverite kontrolne vsote in jo preizkusite v virtualnem stroju ali vsebniku.

  Popravki za Linux za podporo RAS na platformah Qualcomm

Obstaja tudi težava s sledljivostjo. Ko uporabljate ukaz `sudo`, sistem zabeleži ukaz, uporabnika, ki ga je izdal, in čas do `/var/log/auth.log`, `/var/log/secure` ali `journalctl` . Če se prijavite neposredno kot root, se vse prikaže kot root in izgubite možnost vedenja, katera oseba je izvedla posamezno spremembo. V okoljih z več skrbniki ali standardi ISO 27001, PCI DSS ali drugimi revizijskimi standardi je to pomanjkanje sledljivosti pomembna slabost.

Načini pridobivanja privilegijev iz terminala

Posnetek zaslona terminalov Ubuntu, ki prikazuje sistemske dnevnike in spremljanje procesov.

Najpogostejši in priporočen način je, da pred določenim ukazom dodate `sudo`. Na primer, za posodobitev paketov, ponovni zagon storitve ali urejanje zaščitene datoteke bo `sudo` zahteval vaše uporabniško geslo, ne gesla root, in po preverjanju pristnosti bo ukaz izvedel s povišanimi privilegiji. Če ga morate zagnati kot drug uporabnik, lahko uporabite `sudo -u username command` . In če ugotovite, da ste pozabili uporabiti `sudo`, lahko zadnji ukaz ponovite z `sudo !! `.

Ko boste zaporedoma izvajali več skrbniških nalog, je lahko priročno odpreti začasno korensko lupino. `sudo -i` simulira polno prijavo korenskega uporabnika, naloži korensko okolje in vas postavi v domači imenik. `sudo su` ali `sudo su -` delujeta tudi, čeprav je `sudo -i` običajno bolj zanesljiv. Za izhod iz te seje preprosto vnesite `exit`. Ni priporočljivo, da korenske lupine pustite odprte brez nadzora.

Ukaz `su` pa preklopi uporabnike. `su - root` ali preprosto `su -` prav tako prevzame okoljske spremenljivke ciljnega uporabnika, medtem ko `su root` ali `su` brez vezaja ohrani del prejšnjega okolja. Ta razlika pojasnjuje napake, kot je `ukaza ni bilo mogoče najti`: skrbniški ukazi se običajno nahajajo v `/usr/local/sbin`, `/usr/sbin` in `/sbin`, poteh, ki se ne pojavijo vedno v poti običajnega uporabnika. Če uporabite `su` brez vezaja, boste morali vnesti celotno pot ali preklopiti na `su -`, da podedujete korensko pot.

Če želite omogočiti geslo za root-a, lahko to storite z ukazom `sudo passwd root` . Ubuntu to ne odsvetuje, vendar tehnično dovoljuje root-u geslo. Za zaklepanje računa uporabite `sudo passwd -l root` , za odklepanje pa `sudo passwd -u root`. V SSH neposredni dostop root-a nadzira `PermitRootLogin` v `/etc/ssh/sshd_config`. Najvarneje je, da nastavitev ostane nastavljena na `no` ali kvečjemu na `prohibit-password`, da dovolite samo gesla SSH. Nato morate znova zagnati storitev SSH.

Natančno konfigurirajte puloverje

Datoteka `/etc/sudoers` določa, kdo lahko uporablja `sudo` in za kakšen namen. Najbolje je, da je ne urejate ročno; pravilen pristop je uporaba `sudo visudo` , ki zaklene datoteko in pred shranjevanjem preveri sintakso. Osnovno pravilo ima obliko `host user=(target_user)`. Na primer, `bob ALL=(ALL) ALL` omogoča `bobu`, da izvede kateri koli ukaz kot root na katerem koli računalniku. Uporabijo se lahko tudi skupine, kot je `%admin ALL=(ALL) ALL`.

  Jedro Liquorix v Linuxu: optimizirano jedro za namizne računalnike in igre

Za dodelitev natančnejših dovoljenj se uporabljajo vzdevki. `User_Alias ​​​​ADMINS = alice, bob` združuje uporabnike, `Cmnd_Alias ​​​​LOCATE = /usr/sbin/updateddb` pa združuje ukaze. Nato se uporabi `ADMINS ALL = LOCATE`, tako da lahko ti uporabniki izvajajo samo te ukaze. Vzdevke, kot je `NETWORKING`, je mogoče ustvariti za ukaze, kot so `route`, `ifconfig`, `ping`, `iptables` itd. To uporablja načelo najmanjših privilegijev, ne da bi se nikomur podelil poln root dostop.

Možnost NOPASSWD vam omogoča izvajanje določenih ukazov brez gesla, na primer `pi ALL=(ALL)`. NOPASSWD: ALL. To je priročno, vendar nevarno, če se zlorabi. Poleg tega se vsaka uporaba ukaza `sudo` beleži, kar pomaga pri nadzoru dostopa in odpravljanju težav. Če se kaj pokvari, lahko pregled teh dnevnikov pokaže, katera nedavna sprememba je povzročila napako.

Zagon grafičnih aplikacij kot root iz zaganjalnika

Pogled na terminal Linux, ki prikazuje seznam datotek v korenskem imeniku /.

Pri programih z grafičnim vmesnikom preprosta uporaba ukaza `sudo` običajno ne deluje dobro, ker ni terminala, ki bi zahteval geslo. Tukaj pridejo na vrsto grafični pomočniki . V KDE je na voljo ukaz `kdesu` : če veste, kateri ukaz zažene aplikacijo, lahko zaženete ukaz `kdesu that_command`. Možnost `Zaženi ukaz` v meniju KDE vam omogoča tudi zagon aplikacije kot drug uporabnik z vnosom njegovih poverilnic. V okoljih GNOME in GTK sta bila pogosto uporabljena ukaza `gksu` in `gksudo` ; to sta vmesnika za `sudo` ali `su`. Na primer, `gksu synaptic` ali `gksudo gparted` odpreta aplikacijo in zahtevata geslo.

V sodobnih sistemih je gksu bodisi odsvetovan bodisi zastarel. Njegova običajna alternativa je pkexec , ki temelji na PolicyKitu in omogoča programom zagon s privilegiji v skladu z določenimi pravilniki. Številni trenutni zaganjalniki uporabljajo pkexec za skrbniška opravila. Ideja je enaka: uporabniku ni treba odpreti terminala, vendar sistem na nadzorovan način preveri avtorizacijo.

Če želite ustvariti bližnjico v zaganjalniku, uredite datoteko .desktop . Ključna je vrstica `Exec`. Če želite, da se zažene kot root, lahko uporabite nekaj takega, kot je `Exec=gksu /pot/do/programa`, `Exec=kdesu /pot/do/programa` ali `Exec=pkexec /pot/do/programa`. Če neposredno uporabljate `sudo`, boste potrebovali, da ima zaganjalnik `Terminal=true` ali konfigurirate grafično geslo za zahtevo. Lahko pa poskusite pritisniti Alt+F2 in vnesti pomočnika in ime programa, na primer `gksu synaptic`. V KDE-ju `kdesu synaptic` ali možnost zagona kot drug uporabnik opravlja podobno funkcijo.

Obstaja klasična alternativa, imenovana consolehelper , ovoj za aplikacije z grafičnim uporabniškim vmesnikom. Ustvarite simbolno povezavo, na primer /usr/bin/xterm-root, ki kaže na /usr/sbin/consolehelper. Nato konfigurirate PAM tako, da ustvarite /etc/pam.d/xterm-root z vključitvami auth, account in session iz config-util. Nato definirate /etc/security/console.apps/xterm-root z USER=root in PROGRAM=/usr/bin/xterm. Ko zaženete xterm-root, consolehelper pozove k preverjanju pristnosti PAM in zažene xterm kot root. Če naletite na napako »Xlib connection to :0.0 refused by server« (strežnik je zavrnil povezavo Xlib z :0.0), vam lahko pomaga zagon xhost local:root.

V vsakem primeru ima odpiranje grafičnih aplikacij kot root pomanjkljivosti: meša okoljske spremenljivke, lahko prekine vodilo seje, vpliva na Wayland ali X11 in ustvari datoteke v lasti root v vašem domačem imeniku. Najbolje je, da ga uporabljate le za določena skrbniška orodja in jih zaprete takoj, ko končate. Ne brskajte po internetu ali odpirajte sumljivih dokumentov kot root , ker bi vsaka izkoriščanje podedovalo polne privilegije.

Pogosti primeri opravil, ki zahtevajo root dostop

Številne vsakodnevne operacije zahtevajo povečane privilegije. Upravljanje paketov z apt, zypper, dnf ali yum pogosto zahteva sudo. Na primer, `sudo apt update` , `sudo apt install firefox` ali `sudo zypper install docker-ce`. Enako velja za sistemske storitve: `sudo systemctl restart apache2`, `sudo systemctl restart ssh` ali `sudo systemctl restart nginx`. Za spreminjanje uporabniških računov uporabite `sudo usermod`, za spremembo lastništva datotek pa `sudo chown`. Urejanje kritičnih konfiguracij, kot je `/etc/ssh/sshd_config`, zahteva tudi root pravice, če se izvaja z nano, vim ali gedit.

  Kako popraviti GRUB brez LiveCD-ja korak za korakom

Za ukaze, ki samo berejo informacije ali ne spreminjajo sistema, kot sta `zypper repos` ali `systemctl status NetworkManager`, ne potrebujete ukaza `sudo`. Uporaba ukaza `sudo` za vse iz navade je slaba praksa. Smiselno je, da privilegije povečate le, ko to zahteva naloga, in nato čim prej preklopite nazaj na običajnega uporabnika.

Najboljše prakse pri delu s povišanimi privilegiji

Posnetek od blizu strežniške omare z modro osvetlitvijo v podatkovnem centru.

Načelo najmanjših privilegijev bi moralo voditi vse. Kadar koli je mogoče, za posamezne ukaze uporabljajte `sudo`, izogibajte se trajnim korenskim lupinam, razen če je to nujno potrebno, in zapustite program takoj, ko končate. Ne zaganjajte skriptov iz neznanih virov kot root; predhodno preglejte kodo, prenesite jo iz uradnih repozitorijev ali uglednih projektov, preverite kontrolne vsote in preizkusite v izoliranem okolju, če imate kakršne koli dvome. Zdrava mera skepticizma je vrlina pri delu s kodo tretjih oseb, ki ima polne privilegije.

Priporočljivo je tudi, da sudoerje konfigurirate podrobno, ne da se za vse zanašate izključno na skupino sudo, in da vodite revizijo dnevnikov. Če upravljate strežnike, preverite `/var/log/auth.log`, `/var/log/secure` ali `journalctl -xe`, da odkrijete zlorabo. V večuporabniških okoljih je poznavanje izvajalca posameznih ukazov ključnega pomena za odgovornost in skladnost z varnostnimi predpisi.

Omogočanje in onemogočanje root-a z glavo

Če se odločite omogočiti root dostop, dodelite geslo z ukazom `sudo passwd root`, uporabljajte ga le za nujna opravila in nato račun ponovno zaklenite. Če želite onemogočiti neposredno prijavo prek SSH, uredite `sshd_config` in nastavite `PermitRootLogin no` ali `prohibit-password`, nato pa znova zaženite SSH. Če želite račun lokalno zakleniti, uporabite `sudo passwd -l root`. Če ga želite odkleniti, uporabite `sudo passwd -u root`. Ti ukrepi zmanjšajo površino napada in preprečijo napade z grobo silo na najmočnejši račun.

V večini primerov je praktični odgovor na začetno vprašanje pritrdilen: program lahko zaženete iz zaganjalnika s korenskimi pravicami z uporabo grafičnega pomočnika, kot je kdesu, gksu, gksudo ali pkexec, ali z ustvarjanjem datoteke .desktop z ustreznim ukazom. Vendar to ni nekaj, kar bi morali pustiti nastavljenega za kar katero koli aplikacijo. Bolje je imeti posebne skrbniške zaganjalnike z jasnimi imeni in jih uporabljati le, kadar je to potrebno.

Ključni zaključek je, da root ni igrača in da obstaja prav zato, da vas opolnomoči, ne da bi vsak klik spremenil v trajno tveganje. Če morate zagnati grafično aplikacijo kot superuporabnik, dajte prednost pomočnikom, ki zahtevajo geslo, preverite, ali ga aplikacija resnično potrebuje, in omejite njegovo uporabo na skrbniška opravila. Na ta način boste uživali v udobju zaganjalnika, ne da bi pri tem žrtvovali varnost, zaradi katere je Linux tako močan.