Kako uporabljati sudo v Linuxu in ga varno upravljati

Zadnja posodobitev: 22/03/2026
Avtor: Isaac
  • Ukaz sudo vam omogoča izvajanje določenih skrbniških dejanj brez prijave kot root, kar zmanjšuje tveganja.
  • Konfiguracija dovoljenj in pooblaščenih uporabnikov se upravlja prek datoteke sudoers in imenika /etc/sudoers.d/.
  • Možnosti, kot so -u, -so, -i, vam omogočajo izvajanje ukazov ali odpiranje lupin kot drugi uporabniki, hkrati pa ohranjajo sledljivost.
  • Previdna uporaba ukaza sudo in omejevanje neposrednega dostopa do root-a sta ključnega pomena za ohranjanje stabilnosti in varnosti sistema Linux.

Uporaba ukaza sudo v Linuxu

Če Linux uporabljate vsak dan, boste prej ali slej naleteli na ukaz sudoTisti majhen ukaz, ki se pojavi v skoraj vsaki vadnici, ko se morate dotakniti nečesa občutljivega v sistemu. Dodajanje uporabnika, namestitev paketa, urejanje konfiguracijske datoteke ali ponovni zagon storitve ... takoj ko nekaj izgleda kot »administracija«, pride v poštev sudo, ki vam podeli posebna dovoljenja, ne da bi se morali trajno prijaviti kot root.

Razumevanje uporabe ukaza sudo v Linuxu je ključnega pomena za varno delo s sistemom.Ne gre samo za to, da pred ukazom vtipkate `sudo` in vnesete geslo: obstaja celoten sistem dovoljenj, skupin, časov poteka veljavnosti in konfiguracijske datoteke (sudoers), ki določa, kdo lahko kaj počne. Poglejmo si to mirno, v preprostem jeziku, vendar brez izpuščanja pomembnih podrobnosti.

Kaj točno je sudo v Linuxu in za kaj se uporablja?

Ukaz sudo v Linuxu vam omogoča zagon programov s privilegiji drugega uporabnika., običajno koren super uporabnikaNjegovo ime je običajno razloženo kot »superuporabnik naredi« ali »nadomestni uporabnik in naredi«, njegovo poslanstvo pa je preprosto: omogočiti vam izvajanje skrbniških nalog brez prijave kot root.

V večini sodobnih distribucij (Ubuntu, Debian, openSUSE itd.) je sudo vnaprej nameščen in konfiguriran tako, da ga lahko uporablja skupina uporabnikov. Zahvaljujoč temu ima običajni uporabnik omejena dovoljenja za vsakodnevno uporabo, vendar si lahko po potrebi "izposodi" korenska dovoljenja.

Ta pristop je veliko varnejši kot vedno delati kot root.Če brskate po internetu, zaženete grafične aplikacije ali odprete priloge z običajnim računom, je morebitni napad bistveno bolj omejen. Le ko morate resnično spremeniti sistem, dodate ukazu `sudo` in se overite.

Pomembno: sudo vam ne bo za vedno dal absolutnega rootaOdvisno od konfiguracije vam podeli povišane privilegije samo za ukaz, ki ga izvedete, ali za določen časovni interval znotraj te terminalske seje. Po tem času vas bo znova vprašal za geslo.

Skratka, sudo je nadzorovan most med običajnim uporabnikom in skrbniškimi nalogami.Omogoča vam namestitev programske opreme, spreminjanje kritičnih dovoljenj ali upravljanje storitev, vendar vedno pod nadzorom pravilnika, določenega v sistemu.

Kako deluje sudo interno in kakšna je njegova osnovna sintaksa?

ukaz sudo, izveden v terminalu Linux

Osnovna uporaba ukaza sudo je zelo preprosta: postavite ga pred ukaz, ki ga želite izvesti s privilegiji.Splošna oblika je:

sudo comando argumentos

Ko pritisnete Enter, sistem najprej preveri, ali je vaš uporabnik pooblaščen za uporabo ukaza sudo.To pooblastilo je definirano v datoteki /etc/sudoers in v datotekah imenika /etc/sudoers.dČe imate dovoljenje, vas bo sistem vprašal za geslo.

Geslo, ki ga vnesete s sudo, je običajno vaše običajno uporabniško geslo in ne geslo root.Razen v določenih konfiguracijah ali določenih distribucijah za podjetja, ko ga vtipkate v terminal, ne boste videli zvezdic ali znakov; vnaša se »na slepo«, čeprav je to vedenje mogoče spremeniti, kot bomo videli kasneje.

Ko se uspešno overite, sudo izvede ukaz, kot da bi bili ciljni uporabnik. (običajno root). Poleg tega se v sistemskih dnevnikih običajno pusti zapis, da lahko skrbnik preveri, kaj je bilo storjeno s sudo.

Privzeto ima overjanje sudo začasno obdobje veljavnosti. (običajno približno 15 minut). Dokler ne zaprete terminala in ta čas ni minil, naslednji ukazi z ukazom `sudo` ne bodo več zahtevali vašega gesla. Ta čas lahko prisilno osvežite ali ponastavite z določenimi možnostmi.

Pogoste možnosti in parametri ukaza sudo

Poleg tega, da služi kot preprosta predpona, ima sudo številne zelo uporabne možnosti Te vam omogočajo ogled informacij, obnovitev poverilnic ali upravljanje računov kot drugi uporabniki. Nekatere najpomembnejše so:

  • -h: prikaže kratko sporočilo s pomočjo s sintakso in vsemi razpoložljivimi možnostmi za sudo.
  • -V: prikaže nameščeno različico programa sudo in podrobnosti o prevajanju.
  • -v: Obnovi "obdobje mirovanja" za preverjanje pristnosti brez izvajanja kakršnih koli ukazov. Uporablja se za osvežitev obdobja veljavnosti gesla. in preprečite, da bi potekla, medtem ko nadaljujete z delom.
  • -k: takoj razveljavi predpomnjene poverilnice. Po uporabi -k vas bo naslednji sudo znova vprašal za geslo.čeprav še ni minilo 15 minut.
  • -l: prikaže seznam privilegijev, ki jih ima vaš uporabnik s sudo. Zelo uporabno je za vedenje, katere ukaze lahko izvajate. glede na konfiguracijo puloverjev.
  • -s: Odpre lupino z uporabo sudo in podeduje okolje vašega trenutnega uporabnika.
  • -i: odpre "čisto" prijavno lupino za ciljnega uporabnika, podobno kot pri neposredni prijavi kot ta uporabnik.
  • -u UPORABNIK: označuje, da želite ukaz izvesti kot uporabnik, ki ni root, na primer sudo -u pedro whoami.

Z združevanjem teh možnosti lahko kadar koli prilagodite vedenje ukaza sudo svojim potrebam., od ogleda seznama dovoljenj do pridobitve lupine z okoljem drugega uporabnika.

  Kako skenirati sumljive datoteke, povezave in domene z VirusTotal

Razlike med sudo in su: dva načina za pridobitev dovoljenj

V Linuxu obstajata dva klasična načina za pridobitev skrbniških pravic: sudo in suPogosto jih zamenjujejo, vendar v resnici pokrivajo različne potrebe in pomembno je, da je razlika jasna.

Ukaz `su` (nadomestni uporabnik) omogoča preklapljanje med uporabniki v istem terminalu.Če ne določite, na koga naj se preklopi, bo program predvideval, da se želite prijaviti kot root. Zahteval bo geslo uporabnika, na katerega želite preklopiti:

su pedro
Contraseña: **

Ko uporabite `su`, seja izvirnega uporabnika ne zapre.Preprosto začnete novo sejo, "gnezdeno" v prejšnjo. Če povežete več ukazov `su`, lahko dobite nenavaden kup sej, vgnezdenih druga v drugo. Če se želite vrniti nazaj, vtipkate exit tolikokrat, kot je potrebno.

Praktična težava uporabe vašega za vse Težava je v tem, da ljudje na koncu delajo kot root uporabniki dlje časa, z vsemi tveganji, ki jih to prinaša: vsak slabo napisan ukaz lahko uniči polovico sistema.

Zdi se, da Sudo prav to rešuje.Namesto popolne zamenjave uporabnikov ohranite svojo običajno sejo in povečate privilegije le za specifične ukaze, ki to zahtevajo. Številne distribucije niti ne priporočajo prijave kot root prek grafičnega vmesnika.

Če povzamemo ključno idejo: uporabnike preklopite (običajno na root), hkrati pa ohranite to identiteto, dokler ne zaprete sistema.sudo, medtem ko izvede določen ukaz (ali omejeno serijo) s povišanimi dovoljenji, nato pa se samodejno vrnete v stanje običajnega uporabnika.

Praktični primeri: uporaba ukaza sudo s pogostimi skrbniškimi ukazi

Najboljši način, da vidite moč ukaza sudo, je skozi vsakodnevne primere sistemske administracije.kjer bi običajen uporabnik naletel na klasično sporočilo »Dovoljenje zavrnjeno«.

Namestitev ali posodobitev paketovČe poskušate uporabiti upravitelja paketov brez privilegijev, bo običajno spodletel pri pisanju v sistemske imenike. Na primer v Debianu ali Ubuntuju:

apt-get update

Brez ukaza sudo sistem ne bo mogel odpreti zaklenjenih datotek v /var/lib/apt/ Videli boste napake v dovoljenjih. Če ukaz ponovite z `sudo`, boste pozvani k vnosu uporabniškega gesla (če ste pooblaščeni) in postopek bo deloval.

sudo apt-get update

Upravljajte uporabnikeUstvarjanje novega uporabnika, spreminjanje njegovega gesla ali spreminjanje njegovih skupin zahteva privilegije. Tipičen primer bi bil:

sudo useradd edward

Brez predpone sudo navaden uporabnik ne more dostopati do sistema računov. in ukaz ne bi uspel. Enako velja za pripomočke, kot je usermod o deluser.

Urejanje konfiguracijskih datotek sistemaŠtevilne nastavitve so shranjene v besedilnih datotekah v /etcČe želite eno od teh datotek odpreti z urejevalnikom, potrebujete sudo. Na primer, za urejanje /etc/hosts:

sudo nano /etc/hosts

V sistemih, ki uporabljajo systemd, boste za upravljanje storitev potrebovali tudi sudo.Na primer, ponovni zagon Apacheja:

sudo systemctl restart apache2

Upoštevajte, da to velja za dejanja, ki samo berejo informacije in ne spreminjajo sistema. (na primer preverjanje stanja storitve), v mnogih primerih sudo ni potreben, na primer:

systemctl status NetworkManager

Zaženite ukaze kot drug uporabnik s sudo (-u, -s, -i)

Poleg tega, da se lahko izvaja kot root, vam sudo omogoča tudi delovanje kot drug sistemski uporabnik.To je zelo uporabno, če želite preizkusiti dovoljenja, pregledati datoteke, ki pripadajo drugemu računu, ali zagnati procese z drugo identiteto.

Najbolj neposreden način je uporaba -u, ki mu sledi uporabniško ime In nato ukaz, ki ga želite izvesti:

whoami
sudo -u pedro whoami

V prvi vrstici whoami vrne vaše pravo uporabniško ime.; v drugem, zahvaljujoč sudo -u pedroUkaz se izvede z identiteto »pedro«. Seveda za to potrebujete tudi dovoljenje v konfiguraciji sudoers.

Če želite polno lupino kot drug uporabnik, imate dve možnosti. zelo pomembno:

  • Sudo-sOdpre privilegirano lupino in podeduje vaše trenutno okolje. Ciljni uporabnik (privzeto root) se zažene v istem imeniku in z vašimi okoljskimi spremenljivkami.
  • sudo -i: odpre prijavno lupino za ciljnega uporabnika. V tem primeru se naloži njegovo "čisto" okolje., se izvedejo njegovi zagonski skripti (kot na primer .profile o .bash_profile) in se začne v svojem $HOME.

Obe metodi pustita sled v zgodovini ukazovkar je zanimivo z vidika revizije in za spomin na to, kaj je bilo storjeno v prejšnjih sejah.

  7 najboljših programov za vdor v igre

Datoteka sudoers: srce konfiguracije sudo

Vse delovanje ukaza sudo (kdo ga lahko uporablja, s katerimi ukazi in pod kakšnimi pogoji) je nadzorovano iz datoteke sudoers., ki se nahaja v /etc/sudoers in dopolnjeno z datotekami v imeniku /etc/sudoers.d/.

Te datoteke ne smete urejati s standardnim urejevalnikom.Ker lahko sintaktična napaka povzroči, da je sudo neuporaben in resno zaplete stvari. Pravilen način je uporaba ukaza visudo, ki odpre datoteko s konfiguriranim urejevalnikom in pred shranjevanjem preveri njeno vsebino.

Za urejanje glavne datoteke sudoers običajno uporabite:

sudo visudo -f /etc/sudoers

V datoteki boste videli več ključnih vrstic, na primer:

  • koren VSE=(VSE:VSE) VSE: označuje, da lahko uporabnik root izvede kateri koli ukaz na katerem koli gostitelju, tako kot kateri koli drug uporabnik in skupina.
  • %admin VSE=(VSE) VSESimbol % pred imenom se nanaša na skupino. Uporabniki v skupini administratorjev imajo enakovredne pravice kot root..
  • %sudo VSE=(VSE:VSE) VSE: enako, vendar za skupino sudo, ki se pogosto uporablja v Debianu in Ubuntuju.
  • #include /etc/sudoers.dTa direktiva samodejno vključi vse konfiguracijske datoteke v tem imeniku.

Priporočena praksa je, da se izogibate pretiranemu poseganju v glavno koreninsko linijo. in namesto tega ustvarite posebne datoteke v /etc/sudoers.d/ za določene skupine ali uporabnike. To olajša organiziranost konfiguracije in zmanjša tveganja.

Dodelitev dovoljenj sudo uporabniku: skupine in vnosi po meri

V mnogih distribucijah prvi uporabnik, ustvarjen med namestitvijo, že pripada skupini sudo (ali admin), zato lahko od začetka uporabljajo sudo. Če želite podeliti dovoljenja več uporabnikom, je običajno najlažji način, da jih dodate v to skupino.

Če želite videti, kateri uporabniki pripadajo skupini sudo, lahko uporabite:

grep 'sudo' /etc/group

Če želite, da ima uporabnik z imenom »bill« polne pravice sudoPreprosto ga dodajte v ustrezno skupino:

sudo adduser bill sudo

Po tem bo Bill lahko izvedel kateri koli ukaz s sudo. (razen posebnih omejitev, dodanih v sudoers). Če želite kasneje odstraniti te privilegije, ga odstranite iz skupine:

sudo deluser bill sudo

Ko potrebujete natančnejši nadzor, vam sudoers omogoča definiranje zelo podrobnih pravil.Na primer, lahko ustvarite posebno skupino (netadmin) in jo omejite na določene omrežne ukaze z uporabo vzdevkov ukazov:

Cmnd_Alias CAPTURE = /usr/sbin/tcpdump
Cmnd_Alias SERVERS = /usr/sbin/apache2ctl, /usr/bin/htpasswd
Cmnd_Alias NETALL = CAPTURE, SERVERS
%netadmin ALL=NETALL

S to konfiguracijo bo lahko vsak, ki pripada skupini netadmin, uporabljal tcpdump. in nekaj ukazov Apache s sudo, vendar ne bo imel proste roke nad celotnim sistemom. Za dokončanje namestitve bi dodali bill skupini netadmin:

sudo adduser bill netadmin

Konfigurirajte "varno" in "udobno" sudo (z geslom ali brez)

Ena najpogostejših praktičnih odločitev je, ali naj sudo vedno zahteva geslo ali ne.Obe metodi sta možni in sta konfigurirani v sudoerjih ali v datotekah. /etc/sudoers.d/.

"Varni" način: vedno zahteva gesloTo je najbolj preudarna možnost: uporabnik lahko izvede kateri koli ukaz kot root z ukazom `sudo`, vendar mora vsakič, ko to stori, vnesti svoje geslo. Tipičen vnos za to bi bil:

usuario ALL=(ALL:ALL) ALL

"Priročen" način: brez gesla (NOPASSWD)V namiznih okoljih ali testnih računalnikih nekateri uporabniki raje vidijo, da jih sudo ne pozove k geslu vsakič. To lahko storite takole:

usuario ALL=(ALL) NOPASSWD: ALL

V obeh primerih je ideja enaka: avtorizacijska datoteka se ustvari v /etc/sudoers.d. Za zadevnega uporabnika je to mogoče storiti ročno z Visudo ali prek skripte. Nekateri ljudje to avtomatizirajo z majhnimi bash skripti, ki kopirajo ustrezno vrstico v ta imenik z uporabo su -c pisati kot root.

Upoštevajte, da onemogočanje pozivov za geslo zmanjša varnost.Ukaz, ki ga nenamerno zaženete (ali zlonamerni skript), bo lahko uporabljal sudo brez dodatnih ovir.

Prilagodi vnos gesla: Prikaži zvezdice s pwfeedback

Geslo, vneseno s sudo, po zasnovi ne prikaže ničesar na zaslonu.Brez črk ali zvezdic. To je bil mišljen kot varnostni ukrep, da se prepreči razkritje dolžine ključa, vendar se mnogim uporabnikom zdi neprijazno.

  Blokirajte vrata USB z regedit in drugimi metodami v sistemu Windows

Sudo je že leta omogočal spreminjanje tega vedenja z možnostjo pwfeedback.Če ga omogočite, boste pri vnosu gesla za vsak vneseni znak videli zvezdico.

Če ga želite omogočiti, uredite nastavitve z ukazom visudo:

sudo visudo

Znotraj datoteke dodajte vrstico, kot je ta:

Defaults pwfeedback

Shrani spremembe in zapriOd takrat naprej se bodo ob zagonu ukaza `sudo` in pozivu k vnosu gesla prikazale zvezdice. Če se boste kdaj raje vrnili na tiho delovanje, preprosto odstranite to vrstico iz `sudoers`.

Tveganja neprevidne uporabe sudo in root

Delo s sudo ali kot root je neverjetno močno, lahko pa je tudi katastrofalno. Če niste previdni. Linux je privzeto zasnovan tako, da je varen, toda ko povišate privilegije, se veliko teh zaščitnih ukrepov odstrani.

Eno najbolj očitnih tveganj je brisanje kritičnih sistemskih datotekUkazi, kot so rm -rf / ali različice z napačno črkovanimi potmi lahko sistem naredijo popolnoma neuporabnega. Tudi nekaj na videz nedolžnega, kot je rm -rf "$directorio"/* Če je spremenljivka prazna, je lahko smrtonosno.

Druga resna nevarnost je zagon skriptov ali binarnih datotek, prenesenih z interneta, s sudo, brez preverjanja.S privilegiji superuporabnika lahko namestijo rootkite, zadnja vrata in vse vrste zlonamerne programske opreme, ki jo je pozneje zelo težko odkriti.

Sistem lahko vdrete tudi s spreminjanjem dovoljenj bistvenih datotek.Noro igranje takšnih stvari /etc/passwd, /boot ali sam GRUB z chmod o chown Lahko celo prepreči zagon naprave, zaradi česar boste morali znova namestiti sistem ali uporabiti napredna orodja za obnovitev.

Zlato pravilo je jasno: ko uporabljate sudo ali kot root, dvakrat premislite, preden pritisnete Enter.In kadar koli je mogoče, kopirajte ukaze iz zanesljivih virov, jih preberite in razumite, kaj počnejo.

Onemogočite ali omejite root račun tako, da pridržite ukaz sudo

V mnogih deljenih okoljih je zaželeno omejiti neposredno uporabo root računa.Če si root geslo deli preveč ljudi, lahko kdorkoli v sistem vnese velike spremembe brez kakršne koli sledljivosti.

Pogosta strategija je blokiranje root računa. tako da se ga ni mogoče neposredno prijaviti ali uporabiti su z njim, vendar še vedno dovolite določenim uporabnikom uporabo sudo. Na primer:

sudo passwd -l root

Ta ukaz zaklene geslo root.Brez veljavnega gesla se ne boste mogli prijaviti kot root iz uporabniškega imena in preklopiti nanj z ukazom su, vendar bodo uporabniki, ki so pooblaščeni v skupini sudo (ali s pravili v sudoers), še vedno lahko izvajali skrbniške ukaze.

Če želite pozneje ponovno omogočiti root dostopPreprosto dodelite novo geslo z uporabo passwd root iz okolja z ustreznimi privilegiji (na primer iz načina obnovitve).

Alternativni ukazi in sorodna orodja: your in doas

Poleg ukazov sudo in su postaja na nekaterih sistemih (in run0, nadomestek za sudo), navdihnjen z OpenBSD in s preprostejšo in bolj minimalistično filozofijo.

Doas običajno ni privzeto nameščen.Zato je običajen postopek, da ga vključimo iz repozitorijev in nato ustvarimo njegovo konfiguracijsko datoteko. /etc/doas.conf. Osnovni primer bi bil:

sudo apt-get install doas
sudo nano /etc/doas.conf

V tej datoteki lahko definirate zelo preprosta pravila, na primer:

permit nopass manz

Ta vrstica označuje, da lahko uporabnik »manz« uporablja DOAS brez gesla.. Lahko tudi uporabite deny blokirati ali konfigurirati natančnejša dovoljenja, vendar je filozofija, da bi morala biti sintaksa bolj neposredna kot pri sudoerjih.

Kljub temu v večini distribucij Linuxa ostaja dejanski standard sudo., zaradi svoje prilagodljivosti, velike količine razpoložljive dokumentacije in integracije z orodji za revizijo.

Obvladovanje uporabe ukaza sudo v Linuxu vam omogoča nemoteno preklapljanje med običajnimi uporabniškimi nalogami in administrativnimi dolžnostmi.Vzdrževanje varnosti sistema z izogibanjem trajnim sejam root in prilagajanjem dovoljenj vsakega računa njegovim dejanskim potrebam; razumevanje razlike med ukazoma `sudo` in `sudo`, poznavanje upravljanja ukaza `sudo` z ukazom `visudo`, nadzor nad možnostmi, kot sta `pwfeedback` ali `NOPASSWD`, in zavedanje tveganj slabo izvedenega ukaza so tisto, kar loči "zgolj preizkušanje ukazov" od odgovornega upravljanja sistema Linux.

Ustvarite varno okolje WSL
Povezani članek:
Kako ustvariti varno in dobro konfigurirano okolje WSL 2