Mis on sudo? Linuxi sudo käsu tähendus, kasutusjuhend ja turvaline seadistamine algajatele

目次

1. Sissejuhatus: Mis on sudo?

sudo põhisisu ja roll

Linuxi ja Unixi süsteemides on 「sudo」 üks tähtsamaid käske.
sudo」on lühend sõnadest「superuser do」ning see on tööriist, mis võimaldab ajutiselt kasutada administraatori (root) õigusi teatud käskude täitmiseks. Tavakasutajal puuduvad tavaliselt õigused teha süsteemitasemel muudatusi (näiteks tarkvara paigaldamine või süsteemi seadistuste muutmine). Kuid kasutades sudo käsku, on võimalik piiratud ulatuses neid õigusi ajutiselt kasutada.

Näiteks saab järgmise käsu abil käivitada apt käsu root-õigustega:

sudo apt update

Seega toimib sudo turvalise administraatori õiguste kasutamise mehhanismina, võimaldades ühendada süsteemi turvalisuse ja kasutusmugavuse.

Erinevus su käsuga

Lisaks sudo-le on olemas veel su käsk, millel on sarnane eesmärk, kuid selged erinevused.

  • su on lühend sõnast “substitute user” ja see võimaldab lülituda teise kasutaja (peamiselt root) peale. Sellega muutud täielikult teiseks kasutajaks.
  • Seevastu sudo võimaldab jäädes oma kasutajaks, ajutiselt täita käsku administraatori õigustes.

Teisisõnu, su vahetab kasutajat kogu sessiooniks, samal ajal kui sudo annab õigusi vaid konkreetsele käsule. See on oluline erinevus ka turvalisuse mõttes, mistõttu enamik tänapäevaseid Linuxi distributsioone eelistab vaikimisi kasutada sudo-t.

Sudo kasutatavad peamised Linuxi distributsioonid

sudo on vaikimisi kasutusel paljudes Linuxi distributsioonides, eriti järgmistes:

  • Ubuntu-põhised (nt Ubuntu, Linux Mint)
    → Algseadistuses ei logita otse root kasutajana sisse, vaid kasutatakse sudo.
  • Debiani-põhised
    → Sudo saab lubada vajadusel, kuid sageli soovitatakse seda turvakaalutlustel.
  • Fedora, CentOS, Red Hat-põhised
    → Võimalik kasutada root kasutajat, kuid sudo kasutamine on samuti levinud.

Eriti Ubuntu puhul on root kasutaja algselt keelatud ning kogu süsteemi haldamine toimub sudo kaudu. Seetõttu on sudo mõistmine Ubuntu kasutajatele vältimatu.

Miks otsitakse “sudo sudo”?

Otsingusõna “sudo sudo” võib tunduda üleliigne, kuid sellel võib olla järgmine taust:

  • Algajad, kes soovivad rõhutada või lihtsalt teada saada, mis on sudo ja kuidas seda kasutada
  • Vigade otsing, nt sudo: sudo: command not found
  • Juhtumid, kus skriptis või torustikus kasutatakse kogemata topelt-sudo, ning tahetakse teada, mis see tähendab

Järgmistes peatükkides selgitame põhjalikult sudo õiget kasutamist, seadistamist ja probleemide lahendamist.

年収訴求

2. Sudo käsu põhiline kasutamine

sudo põhisüntaks

sudo süntaks on väga lihtne.

sudo [valikud] käsk

Näiteks süsteemi paketiteabe uuendamiseks:

sudo apt update

See tähendab, et “apt update” täidetakse root-õigustes.

Parooli küsimise mehhanism ja vahemälu

Kui kasutad sudo-t esimest korda või pärast teatud ajavahemikku, küsib süsteem kasutaja parooli. See suurendab turvalisust ja takistab väärkasutust.

Pärast parooli sisestamist jääb see lühikeseks ajaks (Ubuntu vaikimisi 5 minutit) vahemällu ning selle aja jooksul ei küsita uuesti. Seda ajavahemikku saab muuta sudoers failis.

Levinumad valikud

sudo-l on palju valikuid, mis muudavad käsu kasutamise paindlikumaks. Siin on mõned enimkasutatavad:

-u (teise kasutajana käivitamine)

Vaikimisi täidetakse käsk root-õigustega, kuid -u võimaldab käivitada käsku mõne teise kasutajana.

sudo -u www-data whoami

Väljundiks on www-data, mis näitab, et käsk käivitati selle kasutaja alt.

-s (shelli avamine)

Järgmise käsuga saab ajutiselt avada shelli root-õigustes:

sudo -s

Ole root-shellis töötades ettevaatlik.

-i (täielik root seanss)

See avab täieliku root-keskkonna, sealhulgas root’i keskkonnamuutujad.

sudo -i

-l (lubatud käskude kuvamine)

Saad näha, milliseid käske tohib sudo kaudu täita.

sudo -l

See aitab kontrollida õigusi ning testida seadistusi.

Algajatele olulised tähelepanekud

  • sudo järel peab olema tühik. Nt sudoapt on vale.
  • Mitu käsku saab täita, kui need tsitaatidesse panna või semikooloniga eraldada.
  • sudo abil GUI rakendusi käivitades võib seadistusfailide kahjustumine tekkida (nt sudo gedit), seega ole ettevaatlik.

3. sudoers fail ja juurdepääsu kontroll

Mis on sudoers fail?

sudo töö käitumist määrab süsteemis asuv /etc/sudoers fail. Seal on kirjas, millised kasutajad võivad sudo kaudu milliseid käske käivitada.

Võimalik on anda kasutajatele õigused ainult teatud käskude jaoks.
See tagab minimaalsete õiguste põhimõtte ja suurendab turvalisust.

Turvaline redigeerimine visudo abil

/etc/sudoers faili ei tohi otse tekstiredaktoriga muuta.

Vale süntaks võib muuta sudo kasutamatuks, mistõttu soovitatakse alati kasutada visudo käsku.

sudo visudo

visudo kontrollib süntaksi enne salvestamist ning võimaldab ohutult teha muudatusi.

Põhisüntaks ja näited

sudoers faili põhisüntaks on järgmine:

kasutajanimi hostinimi = (käitaja) käsk

Näide:

alice ALL=(ALL:ALL) ALL

See lubab kasutajal “alice” täita kõiki käske kõigi kasutajate nimel kõigis hostides.

Paremini piiratud näide:

bob ALL=(ALL) /usr/bin/systemctl restart nginx

See võimaldab kasutajal “bob” käivitada ainult “nginx taaskäivitamist” sudo kaudu.

Grupipõhine kontroll: sudo grupp

Enamikus distributsioonides, sh Ubuntus, saavad sudo õigused kõik kasutajad, kes kuuluvad sudo gruppi.

%sudo   ALL=(ALL:ALL) ALL

%sudo abil saab õigusi anda tervele grupile.

Kasutaja lisamiseks sudo gruppi kasuta:

sudo usermod -aG sudo kasutajanimi

NOPASSWD valiku kasutamine ja ohud

Kui soovid, et sudo ei küsiks iga kord parooli, lisa NOPASSWD valik.

alice ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart nginx

Nii saab kasutaja “alice” taaskäivitada nginx-i ilma paroolita.

See on turvarisk, seega kasuta ainult hädavajalike käskude jaoks ja mitte koos ALL õigustega.

4. Sudo edasijõudnud kasutusviisid

Käsu täitmine teise kasutajana

Vaikimisi täidab sudo käsu root-õigustes, aga sobiva valikuga saad täita käsu teise kasutajana.

Näiteks veebiserveri “www-data” kasutajana:

sudo -u www-data whoami

Tulemus on www-data – käsk täideti selle kasutaja alt.

See võimaldab mugavalt testida erinevaid õigusi ja keskkondi.

Töö torude ja ümbersuunamistega

Algajad võivad hätta jääda sudo koos ümbersuunamise (>) või torudega (|).

sudo echo "test" > /etc/test.conf

Siin käivitatakse echo sudo õigustes, kuid ümbersuunamine toimub tavalise kasutaja õigustes, mistõttu kirjutamine ebaõnnestub.

Õige viis on kasutada tee käsku:

echo "test" | sudo tee /etc/test.conf

Nii toimub kirjutamine sudo õigustes.

sudo skriptides

Skriptides, kus on vaja administraatoriõigusi, lisa sudo vajalikule käsule.
Kui skripti peaks käivitama tavakasutaja, lisa sudo ainult sinna, kuhu on vaja.

Näide (install.sh):

#!/bin/bash

echo "Installing package..."
sudo apt install -y nginx

Võid skripti alguses kontrollida, kas oled root:

if [ "$EUID" -ne 0 ]; then
  echo "See skript peab jooksma root kasutajana"
  exit 1
fi

Nii on skriptide kasutamine turvalisem.

Kasulikud käsklused

  • sudo !!
    → Korrake viimast käsku sudo abil. Näiteks:
  apt update
  sudo !!

See vastab sudo apt update-le.

  • sudo -k
    → Kustuta sudo paroolivahemälu käsitsi. Kasulik enne pausi või süsteemi lahkumist.
  • sudo -v
    → Pikendab sudo õigusi jooksvaks sessiooniks – kasulik pika töö puhul.

5. Turvalisus ja parimad praktikad

Minimaalsete õiguste põhimõte

sudo suurim eesmärk on töötada ainult hädavajalike õigustega.
Ehk siis, ära kasuta pidevalt root’i, vaid ainult siis, kui vaja.

Näiteks:

  • Luba kasutajal sudo kaudu täita ainult teatud käskusid (nt systemctl restart nginx)
  • Kasuta NOPASSWD ainult siis, kui see on vältimatu
  • Halda õigusi grupipõhiselt (sudo grupp)

Logimine ja auditeerimine

sudo logib kõik käsud. See võimaldab jälgida, kes ja millal mida tegi.

Põhilised logifailid (distro järgi):

  • /var/log/auth.log (Ubuntu, Debian-põhised)
  • journalctl (systemd-põhised)

Sudo ajaloo vaatamiseks Ubuntus:

grep 'sudo' /var/log/auth.log

Või:

journalctl _COMM=sudo

See aitab tuvastada nii vigu kui ka pahatahtlikku tegevust.

sudo turvaviga (CVE-2021-3156)

sudo on usaldusväärne tööriist, kuid ka sellel on olnud tõsiseid turvavigu.

Üks kuulsamaid näiteid on CVE-2021-3156 (“Baron Samedit”), mis võimaldas teatud tingimustel tavalisel kasutajal saada root-õigusi.

See viga on parandatud, kuid see näitab, et:

  • sudo ja muud kriitilised paketid peavad alati olema uuendatud
  • Kontrolli regulaarselt ametlikke saite ja turvaandmebaase

sudo alternatiiv: doas

Mõnes minimaalses või turvalisusele orienteeritud Linuxi keskkonnas kasutatakse sudo asemel doas käsku.

doas on OpenBSD-st pärit lihtne tööriist, mille seadistus on oluliselt lühem ja selgem kui sudo-l.

Näide:

doas apt update

Seadistusfail /etc/doas.conf on lihtne, näiteks:

permit nopass :wheel

Linuxis pole doas alati vaikimisi saadaval, seega võib vaja minna lisapaigaldamist.

Vali sudo või doas vastavalt oma vajadustele ja poliitikale.

6. Levinumad vead ja probleemide lahendamine

“Kasutaja pole sudoers failis” viga

kasutajanimi is not in the sudoers file. This incident will be reported.

See viga tekib, kui kasutajal pole õigust sudo kasutada, tihti uute kasutajate puhul, kes pole veel sudo gruppi lisatud.

Lahendus:

  1. Logi sisse teise root-õigustega kasutajana
  2. Lisa vajalik kasutaja sudo gruppi
sudo usermod -aG sudo kasutajanimi

Pärast seda logi uuesti sisse, et õigused kehtiksid.

Ümbersuunamise/toru “Permission denied” viga

Permission denied

See viga tekib, kui üritad sudo abil käivitada käsku, mis kirjutab faili, kuid ümbersuunamine toimub tavalise kasutaja õigustes.

Vale näide:

sudo echo "test" > /etc/test.conf

Õige viis:

echo "test" | sudo tee /etc/test.conf

Mitmerealiste kirjutuste jaoks kasuta sudo tee või sudo bash -c:

sudo bash -c 'echo "line1" > /etc/test.conf'

sudoers faili vigane muutmine

Kui muudat sudoers faili valesti, võib sudo muutuda kasutamatuks – see on väga ohtlik.

Lahendus:

  1. Logi sisse root-kasutajana (Ubuntus on root vaikimisi keelatud)
  2. Korrigeeri fail järgmise käsuga:
pkexec visudo

Kui pkexec pole saadaval, käivita süsteem taasterežiimis ja paranda /etc/sudoers fail käsitsi.

Vigade vältimiseks kasuta alati:

sudo visudo

“sudo: command not found”

sudo: command not found

See viga tekib siis, kui sudo pole paigaldatud või seda ei leita PATH-ist.

Lahendus:

  • Logi sisse rootina ja paigalda sudo uuesti:
apt update
apt install sudo
  • Või kasuta otseteed /usr/bin/sudo:
/usr/bin/sudo ls

7. KKK: sagedased sudo küsimused

K1. Mis vahe on sudo ja su käsul?

Vastus:
sudo annab ajutiselt õigused konkreetse käsu jaoks, su lülitab kasutajat täielikult (peamiselt root’iks).

  • sudo: jääd enda kasutajaks, õigusi tõstetakse vaid vajadusel
  • su: lülitud täielikult teiseks kasutajaks

Turvalisuse ja auditeerimise tõttu soovitatakse tänapäeval kasutada sudo-t.

K2. Kas sudo kasutamiseks on vaja root parooli?

Vastus:
Ei, tavaliselt tuleb sisestada omaenda kasutaja parool, mitte root’i parool.
See vähendab parooli lekkimise riski ja muudab tegevuste jälgimise lihtsamaks.

K3. Kuhu sudo logid salvestatakse?

Vastus:
Enamikes distributsioonides salvestatakse sudo tegevuslogid järgmistes kohtades:

  • Ubuntu/Debian: /var/log/auth.log
  • RHEL/CentOS: /var/log/secure
  • systemd süsteemid: journalctl _COMM=sudo

Nii saab alati tuvastada, kes ja mida tegi.

K4. Muutsin sudoers faili valesti – mida teha?

Vastus:
Muuda alati sudoers faili sudo visudo kaudu.
Kui sudo muutub kasutamatuks, proovi järgmist:

  • Logi sisse root’ina ja paranda visudo kaudu
  • Ubuntus käivita süsteem taasterežiimis ning paranda fail
  • pkexec visudo (kui polkit on lubatud)

Kontrolli alati süntaksit ja testi muudatused läbi.

K5. Kas on võimalik saada root-õigusi ilma sudo-ta?

Vastus:
See on võimalik, kuid see pole soovitatav turvariskide tõttu.

Näiteks:

  • Kasutades su käsku ja sisestades root’i parooli
  • Logides otse sisse root kasutajana (Ubuntu puhul vaikimisi keelatud)

Enamik Linuxi distributsioone eelistab root’i otsekasutust vältida ja kasutada sudo-t.

K6. Kas sudo abil võib käivitada GUI rakendusi?

Vastus:
Üldiselt seda ei soovitata. Näiteks sudo gedit võib rikkuda seadistusfaile või tekitada õiguste konflikte.

GUI jaoks on parem kasutada gksudo või pkexec (sõltuvalt keskkonnast):

pkexec gedit

8. Kokkuvõte

Mõista sudo rolli õigesti

Selles artiklis selgitasime põhjalikult sudo käsku, selle rolli, kasutamist, seadistusi, parimaid praktikaid, levinumaid vigu ja KKK-d Linuxi/Unixi süsteemides.

sudo pole lihtsalt “midagi, mida lisada käsu ette”, vaid oluline ligipääsu juhtimise mehhanism, mis kaitseb süsteemi turvalisust.

Õige kasutus aitab vältida probleeme

Tähtsamad punktid turvaliseks sudo kasutamiseks:

  • Kasuta minimaalset vajalikke õigusi (minimaalsete õiguste põhimõte)
  • Halda seadistusi alati visudo kaudu
  • Kinnita ja jälgi logisid
  • Ole ettevaatlik torude/ümbersuunamiste kasutamisel
  • Väldi sudo kasutamist GUI rakenduste puhul

Neid põhimõtteid eirates võib tulla ette olukordi, kus failid saavad rikutud, seaded kaovad või sudo muutub kasutamatuks.

Vali endale sobiv haldusstiil

Linux on väga paindlik süsteem. Sa võid kasutada sudo’t või alternatiive nagu doas.
Vali endale sobiv stiil vastavalt haldus- ja turvapoliitikale.

Lõpetuseks

sudo mõistmine on esimene samm Linuxi mõistmisel.
Tegemist pole lihtsalt mugava käsuga, vaid süsteemi “võtmega”, mis aitab kõike turvaliselt hallata. Õpi seda kasutama õigesti!

Loodan, et järgmisel korral, kui Linuxit kasutad, teed seda suurema kindlusega ning teadmistega.