Kā palaist programmas kā root no palaišanas programmas Linux sistēmā

Pēdējā atjaunošana: 15 oktobris 2026
  • Saknes piekļuve piedāvā pilnīgu kontroli, taču Ubuntu un citas distribūcijas to pēc noklusējuma atspējo, lai samazinātu riskus.
  • Sudo ļauj paaugstināt privilēģijas katrā gadījumā atsevišķi un reģistrē, kas izpilda katru komandu.
  • Grafiskām lietojumprogrammām ir tādi palīgrīki kā kdesu, gksu, gksudo vai pkexec, kurus var izmantot .desktop palaidējos.
  • Drošība ir atkarīga no minimālo privilēģiju izmantošanas, neuzticamu skriptu novēršanas un paaugstinātas piekļuves auditēšanas.

Sistēmu inženieris, kas pārvalda serverus modernā datu centrā.

Operētājsistēmā Windows daudzi cilvēki ir pieraduši nospiest taustiņu kombināciju Shift+Enter vai Shift+kreisais klikšķis, lai atvērtu programmu ar paaugstinātām privilēģijām no izvēlnes Sākt. Operētājsistēmā Linux tas ne vienmēr ir vienkārši, jo drošība balstās uz root, sudo un grafiskajiem palīgrīkiem , un katrai darbvirsmas videi ir savi rīki. Tomēr ir diezgan vienkārši veidi, kā palaist lietojumprogrammas kā root no palaišanas programmas, saīsnes vai lietojumprogrammu izvēlnes, lai gan ir svarīgi saprast, ko tas nozīmē.

Svarīgākais ir tas, ka root lietotājam ir absolūta kontrole pār sistēmu , un mūsdienu distribūcijas, īpaši Ubuntu un tā atvasinājumi, parasti atspējo tiešu pieteikšanos. Tāpēc nav ierasts pieteikties kā root lietotājam, bet gan laiku pa laikam paaugstināt privilēģijas, izmantojot `sudo` vai grafisku programmu, kas prasa paroli. Ja vēlamies, lai palaišanas ikona palaistu lietotni ar šīm privilēģijām, mums būs jāmodificē tās izpildītā komanda vai jāizveido īpašs palaišanas programma.

Ko īsti nozīmē palaist kaut ko kā root?

Sistēmas administrēšanas darbstacija ar vairākiem monitoriem, kuros redzami Linux termināļi.

Linux sistēmā root ir konts ar UID 0 un neierobežotām privilēģijām . Tas var lasīt, modificēt vai dzēst jebkuru failu, instalēt programmatūru, mainīt kodola konfigurāciju un kontrolēt procesus, kas pieder jebkuram lietotājam. Tas padara to par neticami spēcīgu rīku, taču arī par milzīgu risku, ja to lieto neuzmanīgi. Vienkārša drukas kļūda ar `rm` vai `mv` var padarīt sistēmu nelietojamu, un ļaunprātīgs skripts, kas izpildīts kā root, var instalēt aizmugurējās durvis, modificēt drošības pasākumus vai nozagt datus praktiski bez pēdām.

Ubuntu sistēmā root kontam nav noklusējuma paroles, un tieša pieteikšanās nav atļauta. Filozofija ir tāda, ka strādājat ar savu parasto lietotāja kontu un konkrētiem uzdevumiem izmantojat `sudo` . `sudo` būtībā nozīmē komandas palaišanu kā citam lietotājam, parasti root, pēc autentifikācijas ar savu paroli, ja piederat `sudo` grupai. Tas ierobežo laiku, cik ilgi esat pakļauts informācijai, un saglabā ierakstu par to, kas ko darīja.

Tomēr ļoti specifiskās situācijās, piemēram, atkopjot bojātu sistēmu, strādājot ierobežotās vidēs vai konfigurējot pakalpojumus, kuriem nepieciešama pastāvīga piekļuve, varat apsvērt iespēju īslaicīgi iespējot root tiesības. Vispārējais ieteikums ir tās atkal atspējot, tiklīdz rodas nepieciešamība. Jo mazāk laika pavadīsiet kā root, jo labāk datora stabilitātei un drošībai.

Riski, kas saistīti ar saknes izmantošanu bez piesardzības

Viens no acīmredzamākajiem draudiem ir svarīgu failu nejauša dzēšana . Kā root lietotājam nav atļauju ierobežojumu; tāda komanda kā `sudo rm -rf /` var bez brīdinājuma notīrīt sistēmu. Parasti šāda veida dzēšanai nav arī atkritnes, tāpēc atkopšanai var būt nepieciešami sarežģīti forenzikas rīki vai pat pilnīga sistēmas atkārtota instalēšana.

Vēl viens risks ir neuzticamu skriptu palaišana. Ja palaižat kodu, kas lejupielādēts no jebkuras vietnes ar paaugstinātām privilēģijām, jūs būtībā piešķirat tam savas mājas atslēgas . Pat ja skripts šķiet nekaitīgs, tas var saturēt destruktīvas instrukcijas vai instalēt ļaunprogrammatūru ar root privilēģijām. Tāpēc ieteicams pārskatīt kodu, izmantot oficiālus avotus, pārbaudīt kontrolsummas un pārbaudīt to virtuālajā mašīnā vai konteinerā, pirms to palaist ražošanas vidē.

  Linux ielāpi RAS atbalstam Qualcomm platformās

Pastāv arī izsekojamības problēma. Izmantojot `sudo`, sistēma reģistrē komandu, lietotāju, kas to izdevis, un laiku failā `/var/log/auth.log`, `/var/log/secure` vai `journalctl` . Ja piesakāties tieši kā root lietotājs, viss tiek parādīts kā root lietotājs, un jūs zaudējat iespēju zināt, kura persona veica katru izmaiņu. Vidēs ar vairākiem administratoriem vai ISO 27001, PCI DSS vai citiem audita standartiem šis izsekojamības trūkums ir būtisks trūkums.

Veidi, kā iegūt privilēģijas no termināļa

Ubuntu termināļu ekrānuzņēmuma detaļas, kurās redzami sistēmas žurnāli un procesu uzraudzība.

Visizplatītākais un ieteicamākais veids ir pirms konkrētas komandas pievienot `sudo`. Piemēram, lai atjauninātu pakotnes, restartētu pakalpojumu vai rediģētu aizsargātu failu, `sudo` pieprasīs jūsu lietotāja paroli, nevis root paroli, un pēc jūsu autentifikācijas tā izpildīs komandu ar paaugstinātām privilēģijām. Ja jums tā jāpalaiž kā citam lietotājam, varat izmantot `sudo -u username command` . Un, ja saprotat, ka esat aizmirsis izmantot `sudo`, varat atkārtot pēdējo komandu ar `sudo !! `.

Ja plānojat veikt vairākus administratīvus uzdevumus pēc kārtas, var būt ērti atvērt pagaidu saknes čaulu. `sudo -i` simulē pilnu root pieteikšanos, ielādē saknes vidi un novieto jūs mājas direktorijā. Darbojas arī `sudo su` vai `sudo su -` , lai gan `sudo -i` parasti ir uzticamāka. Lai izietu no šīs sesijas, vienkārši ierakstiet `exit`. Nav ieteicams atstāt saknes čaulu atvērtu bez uzraudzības.

Savukārt komanda `su` pārslēdz lietotājus. Arī komanda `su - root` vai vienkārši `su -` pārņem mērķa lietotāja vides mainīgos, savukārt komanda `su root` vai `su` bez defises saglabā daļu no iepriekšējās vides. Šī atšķirība izskaidro tādas kļūdas kā `komanda nav atrasta`: administratīvās komandas parasti atrodas mapēs `/usr/local/sbin`, `/usr/sbin` un `/sbin` — ceļos, kas ne vienmēr parādās parasta lietotāja PATH. Ja izmantojat komandu `su` bez defises, jums būs jāievada pilns ceļš vai jāpārslēdzas uz `su -`, lai mantotu root PATH.

Ja vēlaties iespējot paroli root lietotājam, varat to izdarīt, izmantojot komandu `sudo passwd root` . Ubuntu to neiesaka, bet tehniski atļauj root lietotājam iegūt paroli. Lai bloķētu kontu, izmantojiet komandu `sudo passwd -l root` , bet, lai to atbloķētu, izmantojiet komandu `sudo passwd -u root`. SSH tiešo root piekļuvi kontrolē `PermitRootLogin` failā `/etc/ssh/sshd_config`. Visdrošāk ir atstāt to iestatītu uz `no` vai, augstākais, uz `prohibit-password`, lai atļautu tikai SSH paroles. Pēc tam ir jārestartē SSH pakalpojums.

Precīzi konfigurējiet džemperus

Fails `/etc/sudoers` nosaka, kas un kādam nolūkam var izmantot komandu `sudo`. Vislabāk to manuāli nerediģēt; pareizā pieeja ir izmantot komandu `sudo visudo` , kas bloķē failu un pirms saglabāšanas pārbauda sintaksi. Pamatnoteikums ir formāts `host user=(target_user)`. Piemēram, `bob ALL=(ALL) ALL` ļauj `bob` izpildīt jebkuru komandu kā root jebkurā datorā. Var izmantot arī grupas, piemēram, `%admin ALL=(ALL) ALL`.

  Liquorix kodols Linux sistēmā: optimizēts kodols darbvirsmai un spēlēm

Lai piešķirtu precīzākas atļaujas, tiek izmantoti aizstājvārdi. `User_Alias ​​​​ADMINS = alice, bob` grupē lietotājus, un `Cmnd_Alias ​​​​LOCATE = /usr/sbin/updatedb` grupē komandas. Pēc tam tiek izmantots `ADMINS ALL = LOCATE`, lai šie lietotāji varētu izpildīt tikai šīs komandas. Aizstājvārdus, piemēram, `NETWORKING`, var izveidot tādām komandām kā `route`, `ifconfig`, `ping`, `iptables` utt. Tas piemēro mazāko privilēģiju principu, nepiešķirot nevienam pilnīgas root piekļuves.

NOPASSWD opcija ļauj palaist noteiktas komandas bez paroles, piemēram, `pi ALL=(ALL)`. NOPASSWD: ALL. Tas ir ērti, bet bīstami , ja tiek ļaunprātīgi izmantots. Turklāt katra `sudo` lietošana tiek reģistrēta, kas palīdz auditēt piekļuvi un novērst problēmas. Ja kaut kas nedarbojas, šo žurnālu pārskatīšana var norādīt, kura nesenā izmaiņa izraisīja kļūmi.

Grafisko lietojumprogrammu palaišana kā root no palaišanas programmas

Linux termināļa skats, kurā redzams saknes direktorija / failu saraksts.

Programmām ar grafisko saskarni vienkārša `sudo` lietošana parasti nedarbojas labi, jo nav termināļa, kas prasītu paroli. Šeit noder grafiskie palīgi . KDE vidē ir `kdesu` : ja zināt, kura komanda palaiž lietojumprogrammu, varat palaist `kdesu that_command`. KDE izvēlnes opcija `Palaist komandu` ļauj arī palaist lietojumprogrammu kā citam lietotājam, ievadot viņa akreditācijas datus. GNOME un GTK vidēs plaši tika izmantotas `gksu` un `gksudo` ; tās ir `sudo` vai `su` lietotāja saskarnes. Piemēram, `gksu synaptic` vai `gksudo gparted` atver lietotni un prasa paroli.

Mūsdienu sistēmās gksu vai nu netiek ieteikts, vai arī tas ir novecojis. Tā parastā alternatīva ir pkexec , kas balstīta uz PolicyKit, kas ļauj programmām darboties ar privilēģijām saskaņā ar definētajām politikām. Daudzi pašreizējie palaidēji izmanto pkexec administratīviem uzdevumiem. Ideja ir tāda pati: lietotājam nav jāatver terminālis, bet sistēma kontrolētā veidā pārbauda autorizāciju.

Lai izveidotu saīsni palaišanas programmā, rediģējiet .desktop failu . Atslēga ir rinda `Exec`. Ja vēlaties, lai tā darbotos kā root lietotājs, varat izmantot kaut ko līdzīgu `Exec=gksu /path/to/program`, `Exec=kdesu /path/to/program` vai `Exec=pkexec /path/to/program`. Ja izmantojat tieši `sudo`, palaišanas programmā jābūt `Terminal=true` vai jākonfigurē grafisks askpass. Varat arī mēģināt nospiest Alt+F2 un ierakstīt palīgprogrammu un programmas nosaukumu, piemēram, `gksu synaptic`. KDE vidē `kdesu synaptic` vai opcija palaist kā citam lietotājam veic līdzīgu funkciju.

Pastāv klasiska alternatīva, ko sauc par consolehelper — apvalku GUI lietojumprogrammām. Jūs izveidojat simbolisku saiti, piemēram, /usr/bin/xterm-root, kas norāda uz /usr/sbin/consolehelper. Pēc tam konfigurējat PAM, izveidojot /etc/pam.d/xterm-root ar autentifikācijas, konta un sesijas iekļautajiem datiem no config-util. Pēc tam definējat /etc/security/console.apps/xterm-root ar USER=root un PROGRAM=/usr/bin/xterm. Palaižot xterm-root, consolehelper pieprasa PAM autentifikāciju un palaiž xterm kā root lietotājs. Ja rodas kļūda "Xlib savienojums ar :0.0 atteikts no servera", varētu palīdzēt xhost local:root palaišana.

Jebkurā gadījumā grafisko lietojumprogrammu atvēršanai kā root lietotājam ir trūkumi: tā sajauc vides mainīgos, var sabojāt sesijas kopni, ietekmēt Wayland vai X11 un izveidot root lietotājam piederošus failus jūsu mājas direktorijā. Vislabāk to izmantot tikai noteiktiem administratīvajiem rīkiem un aizvērt tos, tiklīdz esat pabeidzis. Nepārlūkojiet internetu un neatveriet aizdomīgus dokumentus kā root lietotājam , jo ​​jebkura izmantošana mantotu pilnas privilēģijas.

Biežāk sastopamie uzdevumu piemēri, kuriem nepieciešama root piekļuve

Daudzām ikdienas darbībām ir nepieciešamas paaugstinātas privilēģijas. Pakotņu pārvaldībai ar apt, zypper, dnf vai yum bieži vien ir nepieciešama komanda sudo. Piemēram, `sudo apt update` , `sudo apt install firefox` vai `sudo zypper install docker-ce`. Tas pats attiecas uz sistēmas pakalpojumiem: `sudo systemctl restart apache2`, `sudo systemctl restart ssh` vai `sudo systemctl restart nginx`. Lai modificētu lietotāju kontus, izmantojiet `sudo usermod`, un, lai mainītu faila īpašumtiesības, izmantojiet `sudo chown`. Kritisku konfigurāciju, piemēram, `/etc/ssh/sshd_config`, rediģēšanai ir nepieciešamas arī root privilēģijas, ja to veic ar nano, vim vai gedit.

  Kā soli pa solim labot GRUB bez LiveCD

Komandām, kas tikai nolasa informāciju vai nemodificē sistēmu, piemēram, `zypper repos` vai `systemctl status NetworkManager`, nav nepieciešams `sudo`. Izmantot `sudo` visam aiz ieraduma ir slikta prakse. Saprātīgāk ir paaugstināt privilēģijas tikai tad, kad tas ir nepieciešams uzdevumam, un pēc iespējas ātrāk atgriezties pie parastā lietotāja.

Labākā prakse, strādājot ar paaugstinātām privilēģijām

Servera plaukta tuvplāns ar zilu apgaismojumu datu centrā.

Visā jāvadās pēc mazāko privilēģiju principa. Atsevišķām komandām, kad vien iespējams, izmantojiet `sudo`, izvairieties no pastāvīgām root čaulām, ja vien tas nav absolūti nepieciešams, un izejiet, tiklīdz esat pabeidzis. Nepalaidiet skriptus no nezināmiem avotiem kā root lietotājs; iepriekš pārskatiet kodu, lejupielādējiet no oficiālām krātuvēm vai cienījamiem projektiem, pārbaudiet kontrolsummas un, ja rodas šaubas, pārbaudiet izolētā vidē. Veselīga skepticisma deva ir tikums, strādājot ar trešo pušu kodu, kam ir pilnas privilēģijas.

Ieteicams arī detalizēti konfigurēt sudoerus, nepaļaujoties tikai uz sudo grupu visam, un nodrošināt žurnālu auditēšanu. Ja administrējat serverus, pārbaudiet `/var/log/auth.log`, `/var/log/secure` vai `journalctl -xe`, lai atklātu ļaunprātīgu izmantošanu. Vairāku lietotāju vidēs ir svarīgi zināt, kurš izpildīja katru komandu, lai nodrošinātu atbildību un atbilstību drošības noteikumiem.

Iespējot un atspējot sakni ar galvu

Ja nolemjat iespējot root piekļuvi, piešķiriet paroli ar `sudo passwd root`, izmantojiet to tikai svarīgākajiem uzdevumiem un pēc tam atkārtoti bloķējiet kontu. Lai atspējotu tiešo SSH pieteikšanos, rediģējiet `sshd_config` un iestatiet `PermitRootLogin no` vai `prohibit-password`, pēc tam restartējiet SSH. Lai bloķētu kontu lokāli, izmantojiet `sudo passwd -l root`. Lai to atbloķētu, izmantojiet `sudo passwd -u root`. Šie pasākumi samazina uzbrukuma virsmu un novērš brutāla spēka uzbrukumus visspēcīgākajam kontam.

Vairumā gadījumu praktiskā atbilde uz sākotnējo jautājumu ir apstiprinoša: programmu var palaist no palaišanas programmas ar root privilēģijām, izmantojot grafisko palīgu, piemēram, kdesu, gksu, gksudo vai pkexec, vai izveidojot .desktop failu ar atbilstošo komandu. Tomēr to nevajadzētu atstāt iestatītu tikai jebkurai lietojumprogrammai. Labāk ir izmantot īpašus administratīvos palaišanas programmas ar skaidriem nosaukumiem un izmantot tās tikai nepieciešamības gadījumā.

Galvenais secinājums ir tāds, ka root nav rotaļlieta, un sudo pastāv tieši tāpēc, lai dotu jums iespēju, nepārvēršot katru klikšķi par pastāvīgu risku. Ja jums ir jāpalaiž grafiska lietotne kā superlietotājam, prioritizējiet palīgprogrammas, kurām nepieciešama parole, pārliecinieties, vai lietojumprogrammai tā patiešām ir nepieciešama, un ierobežojiet tās izmantošanu administratīviem uzdevumiem. Tādā veidā jūs varat baudīt palaišanas programmas ērtības, neupurējot drošību, kas padara Linux tik spēcīgu.