- Root tarjoaa täyden hallinnan, mutta Ubuntu ja muut jakelut pitävät sen oletusarvoisesti poissa käytöstä riskien vähentämiseksi.
- Sudon avulla voit nostaa käyttöoikeuksia tapauskohtaisesti ja pitää kirjaa siitä, kuka suorittaa kunkin komennon.
- Graafisiin sovelluksiin on olemassa apuohjelmia, kuten kdesu, gksu, gksudo tai pkexec, joita voidaan käyttää .desktop-käynnistysohjelmissa.
- Turvallisuus riippuu mahdollisimman vähäisten käyttöoikeuksien käyttämisestä, epäluotettavien komentosarjojen välttämisestä ja laajennettujen käyttöoikeuksien auditoinnista.

Windowsissa monet ihmiset ovat tottuneet avaamaan ohjelman Käynnistä-valikosta painamalla Shift+Enter tai Shift+vasen painike -näppäinyhdistelmää. Linuxissa tämä ei ole aina suoraviivaista, koska tietoturva perustuu root-, sudo- ja graafisiin apuohjelmiin , ja jokaisella työpöytäympäristöllä on omat työkalunsa. Silti on olemassa melko yksinkertaisia tapoja käynnistää sovelluksia root-käyttäjänä käynnistysohjelmasta, pikakuvakkeesta tai sovellusvalikosta, vaikka on tärkeää ymmärtää, mitä tämä tarkoittaa.
Olennaista on, että pääkäyttäjällä on täydellinen hallinta järjestelmään , ja nykyaikaiset jakelut, erityisesti Ubuntu ja sen johdannaiset, tyypillisesti estävät suoran kirjautumisen. Siksi ei ole yleistä kirjautua sisään pääkäyttäjänä, vaan oikeuksia korotetaan toisinaan käyttämällä `sudo`-komentoa tai graafista ohjelmaa, joka pyytää salasanaa. Jos haluamme käynnistysohjelman kuvakkeen käynnistävän sovelluksen näillä oikeuksilla, meidän on muokattava sen suorittamaa komentoa tai luotava erityinen käynnistysohjelma.
Mitä root-käyttäjänä ajaminen oikeastaan tarkoittaa?

Linuxissa root on käyttäjätili, jonka UID on 0 ja jolla on rajattomat oikeudet . Se voi lukea, muokata tai poistaa mitä tahansa tiedostoja, asentaa ohjelmistoja, muuttaa ytimen asetuksia ja hallita mille tahansa käyttäjälle kuuluvia prosesseja. Tämä tekee siitä uskomattoman tehokkaan työkalun, mutta myös valtavan riskin, jos sitä käytetään huolimattomasti. Yksinkertainen kirjoitusvirhe `rm`- tai `mv`-komennoilla voi tehdä järjestelmästä käyttökelvottoman, ja root-käyttäjänä suoritettu haitallinen komentosarja voi asentaa takaportteja, muokata turvatoimenpiteitä tai varastaa tietoja käytännössä ilman jälkiä.
Ubuntussa pääkäyttäjätilillä ei ole oletussalasanaa, eikä suora kirjautuminen ole sallittua. Filosofian mukaan työskennellään tavallisella käyttäjätilillä ja käytetään `sudo`-komentoa tiettyihin tehtäviin . `sudo` tarkoittaa pohjimmiltaan komennon suorittamista toisena käyttäjänä, yleensä pääkäyttäjänä, todennuksen jälkeen omalla salasanalla, jos kuulut `sudo`-ryhmään. Tämä rajoittaa altistumisaikaa ja pitää kirjaa siitä, kuka teki mitäkin.
Hyvin erityisissä tilanteissa, kuten vaurioituneen järjestelmän palauttamisessa, rajoitetuissa ympäristöissä työskentelyssä tai jatkuvaa pääsyä vaativien palveluiden määrittämisessä, voit kuitenkin harkita rootin väliaikaista käyttöönottoa. Yleinen suositus on poistaa se käytöstä heti, kun tarvetta ilmenee. Mitä vähemmän aikaa vietät rootina, sitä parempi koneen vakaus ja turvallisuus.
Root-käyttöoikeuden varomattoman käytön riskit
Yksi ilmeisimmistä vaaroista on tärkeiden tiedostojen vahingossa tapahtuva poistaminen . Pääkäyttäjänä ei ole käyttöoikeusrajoituksia; komento, kuten `sudo rm -rf /`, voi tyhjentää järjestelmän ilman varoitusta. Näille poistoille ei myöskään yleensä ole roskakoria, joten palauttaminen saattaa vaatia monimutkaisia rikosteknisiä työkaluja tai jopa koko järjestelmän uudelleenasennuksen.
Toinen riski on epäluotettavien komentosarjojen suorittaminen. Jos suoritat sivustolta ladattua koodia, jolla on korotetut käyttöoikeudet, annat sille käytännössä avaimet kotiisi . Vaikka komentosarja vaikuttaisi vaarattomalta, se voi sisältää haitallisia ohjeita tai asentaa haittaohjelmia pääkäyttäjän oikeuksilla. Siksi on suositeltavaa tarkistaa koodi, käyttää virallisia lähteitä, tarkistaa tarkistussummat ja testata sitä virtuaalikoneessa tai säilössä ennen sen suorittamista tuotannossa.
Myös jäljitettävyydessä on ongelma. Kun käytät `sudo`-komentoa, järjestelmä kirjaa komennon, sen antaneen käyttäjän ja ajan tiedostoon `/var/log/auth.log`, `/var/log/secure` tai `journalctl` . Jos kirjaudut sisään suoraan root-käyttäjänä, kaikki näkyy root-käyttäjänä, etkä voi tietää, kuka teki kunkin muutoksen. Ympäristöissä, joissa on useita järjestelmänvalvojia tai jotka noudattavat ISO 27001-, PCI DSS- tai muita auditointistandardeja, tämä jäljitettävyyden puute on merkittävä heikkous.
Tapoja saada käyttöoikeuksia terminaalista

Yleisin ja suositelluin tapa on käyttää tietyn komennon eteen komentoa `sudo`. Esimerkiksi pakettien päivittämiseksi, palvelun uudelleenkäynnistämiseksi tai suojatun tiedoston muokkaamiseksi `sudo` kysyy käyttäjän salasanaa, ei pääkäyttäjän salasanaa, ja todennuksen jälkeen se suorittaa komennon laajennetuilla oikeuksilla. Jos sinun on suoritettava se eri käyttäjänä, voit käyttää komentoa `sudo -u username command` . Ja jos huomaat unohtaneesi käyttää `sudo`-komentoa, voit toistaa viimeisen komennon komennolla `sudo !! `.
Kun aiot suorittaa useita hallinnollisia tehtäviä peräkkäin, voi olla kätevää avata väliaikainen pääkäyttäjän komentotulkki. `sudo -i` simuloi täyden pääkäyttäjän kirjautumisen, lataa pääkäyttäjän ympäristön ja sijoittaa sinut kotihakemistoon. `sudo su` tai `sudo su -` toimivat myös, vaikka `sudo -i` on yleensä luotettavampi. Voit poistua tästä istunnosta kirjoittamalla `exit`. Pääkäyttäjän komentotulkkia ei suositella jätettäväksi auki ilman valvontaa.
Komento `su` puolestaan vaihtaa käyttäjää. `su - root` tai yksinkertaisesti `su -` omaksuu myös kohdekäyttäjän ympäristömuuttujat, kun taas `su root` tai `su` ilman yhdysviivaa säilyttää osan edellisestä ympäristöstä. Tämä ero selittää virheet, kuten `komentoa ei löydy`: hallintakomennot sijaitsevat yleensä hakemistoissa `/usr/local/sbin`, `/usr/sbin` ja `/sbin`, jotka eivät aina näy tavallisen käyttäjän polussa. Jos käytät `su`-komentoa ilman yhdysviivaa, sinun on kirjoitettava koko polku tai vaihdettava `su -`-komentoon periäksesi juuripolun.
Jos haluat ottaa käyttöön salasanan root-käyttäjälle, voit tehdä sen komennolla `sudo passwd root` . Ubuntu ei suosittele tätä, mutta teknisesti ottaen sallii rootin salasanan käytön. Tilin lukitsemiseksi käytä komentoa `sudo passwd -l root` ja lukituksen avaamiseksi käytä komentoa `sudo passwd -u root`. SSH:ssa suoraa root-käyttöä hallitaan `PermitRootLogin`- komennolla tiedostossa `/etc/ssh/sshd_config`. Turvallisinta on pitää se asetuksella `no` tai korkeintaan `prohibit-password`, jolloin sallitaan vain SSH-salasanat. Tämän jälkeen sinun on käynnistettävä SSH-palvelu uudelleen.
Määrittele neulepuserot tarkasti
`/etc/sudoers` -tiedosto määrittää, kuka voi käyttää `sudo`-komentoa ja mihin tarkoitukseen. Sitä ei kannata muokata manuaalisesti; oikea lähestymistapa on käyttää `sudo visudo` -komentoa , joka lukitsee tiedoston ja tarkistaa syntaksin ennen tallennusta. Perussääntö on muotoa `host user=(target_user)`. Esimerkiksi `bob ALL=(ALL) ALL` sallii `bobin` suorittaa minkä tahansa komennon pääkäyttäjänä millä tahansa koneella. Myös ryhmiä voidaan käyttää, kuten `%admin ALL=(ALL) ALL`.
Tarkempien oikeuksien myöntämiseen käytetään aliaksia. `User_Alias ADMINS = alice, bob` ryhmittelee käyttäjät ja `Cmnd_Alias LOCATE = /usr/sbin/updateddb` ryhmittelee komennot. Tällöin käytetään `ADMINS ALL = LOCATE`, jotta kyseiset käyttäjät voivat suorittaa vain kyseisiä komentoja. Komennoille, kuten `route`, `ifconfig`, `ping`, `iptables` jne., voidaan luoda aliaksia, kuten `NETWORKING`. Tämä soveltaa pienimpien oikeuksien periaatetta myöntämättä täyttä pääkäyttäjän oikeutta kenellekään.
NOPASSWD - asetus mahdollistaa tiettyjen komentojen suorittamisen ilman salasanaa, esimerkiksi `pi ALL=(ALL)`. NOPASSWD: ALL. Tämä on kätevää, mutta vaarallista väärinkäytettynä. Lisäksi jokainen `sudo`-komennon käyttö kirjataan lokiin, mikä auttaa tarkastamaan käyttöoikeuksia ja vianmäärityksessä. Jos jokin menee rikki, näiden lokien tarkastelu voi osoittaa, mikä viimeaikainen muutos aiheutti virheen.
Graafisten sovellusten käynnistäminen root-käyttäjänä käynnistysohjelmasta

Graafisella käyttöliittymällä varustetuissa ohjelmissa pelkkä `sudo`-komento ei yleensä toimi hyvin, koska salasanaa pyytävää päätettä ei ole. Tässä kohtaa graafiset apuohjelmat tulevat mukaan kuvaan . KDE:ssä on `kdesu` : jos tiedät, mikä komento käynnistää sovelluksen, voit ajaa komennon `kdesu that_command`. KDE-valikon `Suorita komento` -vaihtoehto mahdollistaa myös sovelluksen käynnistämisen toisena käyttäjänä syöttämällä hänen tunnistetietonsa. GNOME- ja GTK-ympäristöissä `gksu` ja `gksudo` olivat laajalti käytössä ; nämä ovat `sudo`- tai `su`-komentojen käyttöliittymiä. Esimerkiksi `gksu synaptic` tai `gksudo gparted` avaavat sovelluksen ja kysyvät salasanaa.
Nykyaikaisissa järjestelmissä gksu:ta joko ei suositella tai se on vanhentunut. Sen tavallinen vaihtoehto on pkexec , joka perustuu PolicyKitiin ja jonka avulla ohjelmat voivat suorittaa toimintoja määriteltyjen käytäntöjen mukaisesti. Monet nykyiset käynnistysohjelmat käyttävät pkexeciä hallinnollisiin tehtäviin. Ajatus on sama: käyttäjän ei tarvitse avata päätettä, vaan järjestelmä vahvistaa valtuutuksen hallitusti.
Pikakuvakkeen luominen käynnistysohjelmaan tapahtuu muokkaamalla .desktop- tiedostoa . Avainsana on `Exec`-rivi. Jos haluat ohjelman toimivan root-käyttäjänä, voit käyttää esimerkiksi komentoa `Exec=gksu /polku/ohjelmaan`, `Exec=kdesu /polku/ohjelmaan` tai `Exec=pkexec /polku/ohjelmaan`. Jos käytät suoraan `sudo`-komentoa, käynnistysohjelmassa on oltava `Terminal=true` tai on määritettävä graafinen askpass-komento. Voit myös kokeilla painaa Alt+F2 ja kirjoittaa apuohjelman ja ohjelman nimen, esimerkiksi `gksu synaptic`. KDE:ssä `kdesu synaptic` tai vaihtoehto suorittaa ohjelman toisena käyttäjänä suorittaa samanlaisen toiminnon.
On olemassa klassinen vaihtoehto nimeltä consolehelper , graafisten sovellusten kääre. Luot symbolisen linkin, esimerkiksi /usr/bin/xterm-root, joka osoittaa hakemistoon /usr/sbin/consolehelper. Sitten konfiguroit PAMin luomalla tiedoston /etc/pam.d/xterm-root, johon sisällytetään config-util-komennon todennus, tili ja istunto. Seuraavaksi määrittelet tiedoston /etc/security/console.apps/xterm-root muuttujalla USER=root ja PROGRAM=/usr/bin/xterm. Kun suoritat xterm-rootin, consolehelper pyytää PAM-todennusta ja käynnistää xtermin root-käyttäjänä. Jos kohtaat virheen "Xlib connection to :0.0 refused by server" (Xlib-yhteys osoitteeseen :0.0 palvelin kieltäytyi), xhost local:root -komennon suorittaminen saattaa auttaa.
Joka tapauksessa graafisten sovellusten avaamisessa root-käyttäjänä on haittoja: se sekoittaa ympäristömuuttujia, voi rikkoa istuntoväylän, vaikuttaa Waylandiin tai X11:een ja luoda rootin omistamia tiedostoja kotihakemistoosi. On parasta käyttää sitä vain tiettyihin hallintatyökaluihin ja sulkea ne heti, kun olet valmis. Älä selaa internetiä tai avaa epäilyttäviä dokumentteja root-käyttäjänä , koska mikä tahansa hyväksikäyttö perisi täydet oikeudet.
Yleisiä esimerkkejä tehtävistä, jotka vaativat pääkäyttäjän oikeudet
Monet jokapäiväiset toiminnot vaativat laajennettuja käyttöoikeuksia. Pakettien hallinta apt-, zypper-, dnf- tai yum-komennoilla vaatii usein sudon. Esimerkiksi `sudo apt update` , `sudo apt install firefox` tai `sudo zypper install docker-ce`. Sama pätee järjestelmäpalveluihin: `sudo systemctl restart apache2`, `sudo systemctl restart ssh` tai `sudo systemctl restart nginx`. Käyttäjätilien muokkaamiseen käytetään `sudo usermod`-komentoa ja tiedoston omistajuuden vaihtamiseen `sudo chown`-komentoa. Kriittisten kokoonpanojen, kuten `/etc/ssh/sshd_config`-tiedoston, muokkaaminen vaatii myös pääkäyttäjän oikeudet, jos se tehdään nano-, vim- tai gedit-komennoilla.
Et tarvitse `sudo`-komentoa komennoille, jotka vain lukevat tietoa tai eivät muokkaa järjestelmää, kuten `zypper repos` tai `systemctl status NetworkManager`. `sudo`-komennon käyttäminen kaikkeen vain tottumuksesta on huono käytäntö. Järkevää on nostaa oikeuksia vain silloin, kun tehtävä sitä vaatii , ja vaihtaa sitten takaisin normaaliin käyttäjätunnukseen mahdollisimman pian.
Parhaat käytännöt työskenneltäessä laajennetuilla oikeuksilla

Kaikessa tulisi noudattaa pienimpien oikeuksien periaatetta. Käytä `sudo`-komentoa yksittäisille komennoille aina kun mahdollista, vältä pysyviä root-komentotulkkeja, ellei se ole ehdottoman välttämätöntä, ja poistu heti, kun olet valmis. Älä suorita tuntemattomista lähteistä tulevia skriptejä root-käyttäjänä; tarkista koodi etukäteen, lataa virallisista arkistoista tai luotettavista projekteista, tarkista tarkistussummat ja testaa erillisessä ympäristössä, jos sinulla on epäilyksiä. Terveellinen annos skeptisyyttä on hyve käsiteltäessä kolmannen osapuolen koodia, jolla on täydet oikeudet.
On myös suositeltavaa määrittää sudoerit yksityiskohtaisesti, ei pelkästään sudo-ryhmään luottaen kaikessa, ja pitää lokit auditoituina. Jos hallinnoit palvelimia, tarkista `/var/log/auth.log`, `/var/log/secure` tai `journalctl -xe` väärinkäytösten havaitsemiseksi. Usean käyttäjän ympäristöissä on tärkeää tietää, kuka suoritti kunkin komennon, jotta voidaan varmistaa vastuullisuus ja noudattaa turvallisuusmääräyksiä.
Ota pääkäyttäjän käyttöoikeus käyttöön ja poista se käytöstä pään avulla
Jos päätät ottaa pääkäyttäjän oikeudet käyttöön, määritä salasana komennolla `sudo passwd root`, käytä sitä vain välttämättömiin tehtäviin ja lukitse tili uudelleen. Voit poistaa suoran SSH-kirjautumisen käytöstä muokkaamalla `sshd_config`-tiedostoa ja asettamalla arvoksi `PermitRootLogin no` tai `prohibit-password` ja käynnistämällä sitten SSH:n uudelleen. Voit lukita tilin paikallisesti komennolla `sudo passwd -l root`. Voit avata lukituksen komennolla `sudo passwd -u root`. Nämä toimenpiteet pienentävät hyökkäyspinta-alaa ja estävät raa'an voiman hyökkäykset tehokkainta tiliä vastaan.
Useimmissa tapauksissa käytännön vastaus alkuperäiseen kysymykseen on kyllä: voit käynnistää ohjelman käynnistysohjelmasta pääkäyttäjän oikeuksilla käyttämällä graafista apuohjelmaa, kuten kdesu, gksu, gksudo tai pkexec, tai luomalla .desktop-tiedoston sopivalla komennolla. Tätä ei kuitenkaan kannata jättää mille tahansa sovellukselle. On parempi, että käytössä on erityisiä järjestelmänvalvojan käynnistysohjelmia selkeillä nimillä ja että niitä käytetään vain tarvittaessa.
Keskeinen pointti on, että root ei ole lelu, ja sudo on olemassa juuri sitä varten, että se antaisi sinulle mahdollisuuksia tehdä jokaisesta klikkauksesta pysyvän riskin. Jos sinun on käynnistettävä graafinen sovellus pääkäyttäjänä, priorisoi salasanaa vaativat apuohjelmat, varmista, että sovellus todella tarvitsee sitä, ja rajoita sen käyttö hallinnollisiin tehtäviin. Tällä tavoin nautit käynnistysohjelman kätevyydestä tinkimättä Linuxin vahvaa turvallisuutta.