Kuinka käyttää sudoa Linuxissa ja hallita sudoers-tiedosto

  • sudon avulla voit suorittaa komentoja toisena käyttäjänä (yleensä root) hallitusti ja väliaikaisesti.
  • Käyttöoikeusasetukset määritellään tiedostossa /etc/sudoers ja tiedostoissa /etc/sudoers.d visudo-komennolla.
  • Ryhmät, kuten sudo tai wheel, ja aliakset sudoersissa helpottavat tiettyjen oikeuksien myöntämistä tietyille käyttäjille.
  • NOPASSWD:n kaltaiset asetukset mahdollistavat turvallisuuden ja käyttömukavuuden säätämisen sudoa käytettäessä eri tilanteissa.

sudon käyttö Linuxissa

Jos työskentelet Linuxin kanssa päivittäinEnnemmin tai myöhemmin törmäät komentoon sudoSe on avain, jonka avulla voit suorittaa hallinnollisia tehtäviä kirjautumatta sisään käyttäjänä. root Jatkuvasti, mikä on paitsi hankalaa myös melko vaarallista. Sen toiminnan, sen vaihtoehtojen ja konfiguroinnin ymmärtäminen on ratkaisevan tärkeää, jos et halua vahingossa rikkoa järjestelmää tai jättää tietoturvahaavoittuvuutta huomaamattasi.

Tässä artikkelissa aiomme mennä yksityiskohtiin. mistä tarkalleen ottaen on kyse? sudoMillainen on sen suhde käyttäjään? root ja tiedoston kanssa /etc/sudoersMitä eroja on niiden käytössä su y sudoja miten voit hienosäätää asetuksia myöntääksesi tietyille käyttäjille tai ryhmille hyvin erityisiä käyttöoikeuksia (jopa ilman salasanaa). Ajatuksena on, että kun olet lukenut tämän loppuun, tiedät jo hyvin, milloin käyttää sudoMitä se tekee pinnan alla ja miten sitä voi hallita ilman pelkoa.

Mikä on sudo ja miksi se on niin tärkeä Linuxissa?

Komento sudo Se on yksi keskeisistä osista minkä tahansa nykyaikaisen Linux-järjestelmän. Sen nimi selitetään yleensä muodossa ”superuser do” tai ”substitute user and do”, ja sen toiminto on yksinkertainen mutta tehokas: se antaa valtuutetulle käyttäjälle mahdollisuuden suorittaa komentoja ikään kuin he olisivat toinen käyttäjä järjestelmässä, normaalisti rootrajoitetun ajan.

Käytännössä tämä tarkoittaa että tavallinen käyttäjä voi suorittaa hallinnollisia tehtäviä – asentaa paketteja, muokata järjestelmäasetuksia, hallita palveluita, muuttaa arkaluonteisten tiedostojen käyttöoikeuksia – ilman kirjaudu sisään suoraan nimellä rootTämä tavallisen käyttäjän ja superkäyttäjän välinen ero on yksi Linuxin tietoturvan pilareista.

Nykyisimmät jakelut (Debian, Ubuntu, monet johdannaiset, SLE-tyyppiset järjestelmät jne.) tuovat mukanaan sudo Se on esiasennettu, eikä sen poistamista tai muokkaamista kevyesti suositella. Lisäksi monissa järjestelmissä asennuksen aikana luotu käyttäjä lisätään automaattisesti järjestelmänvalvojaryhmään, jolla on oikeudet käyttää sitä. sudo, josta tulee oletusarvoinen käyttöoikeutettu käyttäjä.

Hyvin tärkeää pitää mielessä on se sudo Se ei "muunna" käyttäjää root Se ei myönnä täyttä pääsyä järjestelmään, vaan antaa käyttäjille mahdollisuuden suorittaa tiettyjä komentoja toisena käyttäjänä sen asetuksissa määriteltyjen sääntöjen mukaisesti. Tällä tavoin voidaan myöntää hyvin erityisiä käyttöoikeuksia antamatta täyttä pääsyä järjestelmään.

Miten sudo toimii sisäisesti

Perustoiminto sudo Käyttäjän näkökulmasta se on hyvin yksinkertaista: sijoitat sanan sudo ennen komentoa, jonka haluamme suorittaa oikeuksilla. Esimerkiksi pakettiluettelon päivittämiseksi apt-get Debianissa tai Ubuntussa tavallisen käyttäjän on tehtävä jotain tällaista:

> sudo apt-get update

Jos yrität suorittaa järjestelmänvalvojan komennon ilman sudo-komentoaYleisimmin saat virheilmoituksia, kuten "Käyttöoikeus evätty" tai viestejä, jotka ilmoittavat, että tiettyä lukittua tiedostoa ei voida avata /var/lib tai toisessa järjestelmähakemistossa. Heti kun toistat saman komennon lisäämällä sudo Seuraavaksi järjestelmä kysyy salasanaasi ja jos kaikki on määritetty oikein, komento suoritetaan pääkäyttäjän oikeuksilla.

Kun suoritat komennon, jossa on sudoOhjelma tarkistaa ensin asetustiedostosta, onko käyttäjälläsi oikeus käyttää sitä ja mitä komentoja varten. /etc/sudoers ja monissa järjestelmissä hakemiston lisätiedostot /etc/sudoers.d/Jos säännöt sen sallivat, sudo Se kysyy salasanaa (yleensä sinun, ei heidän). root) ja nostaa oikeuksiasi väliaikaisesti, jotta voit suorittaa komennon kohdekäyttäjänä.

Kummallinen yksityiskohta, joka usein aluksi hämmentää Kun sinulta kysytään salasanaasi päätteessä, näytölle ei tule merkkejä, ei edes tähtiä, kirjoittaessasi. Tämä on täysin normaalia: syöttötapa on "sokko" ja osa turvatoimia, joilla estetään salasanasi pituuden näkeminen.

Lisäksi Sudo ylläpitää eräänlaista "luottamusistuntoa"Salasanan syöttämisen jälkeen laajennetut oikeudet pysyvät aktiivisina tietyn ajan (oletusarvoisesti noin 15 minuuttia monissa jakeluissa) samassa terminaalissa. Tänä aikana voit suorittaa lisää komentoja sudo ilman, että se kysyy salasanaa yhä uudelleen ja uudelleen.

Sudon perussyntaksi ja hyödyllisimmät asetukset

Kohteen yleinen syntaksi sudo Se on hyvin yksinkertainen:

> sudo-komento

Yleisin tapa käyttää sitä on yksinkertaisesti kuten sudo comandoSiinä on kuitenkin hyvä määrä mielenkiintoisia vaihtoehtoja. Joitakin käytetyimpiä (ja monissa virallisissa oppaissa korostettuja) ovat seuraavat:

  • -hNäyttää ohjeviestin, jossa on ohjelman syntaksi ja kaikki käytettävissä olevat asetukset. sudo.
  • -V: näyttää nykyisen version sudo ja joitakin kokoelman yksityiskohtia.
  • -vUudistaa todennuksen "lisäajan" eli päivittää laskurin, jotta oikeutesi eivät vanhene etkä joudu antamaan salasanaasi uudelleen pian.
  • -k: mitätöi tallennetut tunnistetiedot välittömästi; se on kuin kertoisi sudo joka "unohtaa", että olet jo todentanut itsesi, jolloin sinun on pyydettävä salasanaasi uudelleen seuraavalla kerralla.
  • -l: näyttää, mitä komentoja sinulla on oikeus suorittaa sudo nykyisen kokoonpanon mukaan sudoers.

Komentojen suorittamiseen muiden käyttäjien tavoin on myös erittäin hyödyllisiä vaihtoehtoja. erilainen kuin root. Esimerkiksi -u Voit määrittää kohdekäyttäjän tietylle komennolle:

> sudo -u pedro whoami

Tässä tapauksessa, vaikka istuntosi kuuluisikin toiselle käyttäjälle, käsky whoami Se palauttaa arvon "pedro", koska se suoritettiin ikään kuin sinä olisit kyseinen käyttäjä. Tämä on erittäin kätevää käyttöoikeuksien testaamiseen tai palvelutileihin liittyvien tehtävien suorittamiseen ilman, että istuntoa tarvitsee vaihtaa manuaalisesti.

sudo vs. su ja pääkäyttäjä

Linuxissa on useita mekanismeja rinnakkain. Saadaksesi järjestelmänvalvojan oikeudet: rekisteröidy suoraan nimellä root, käytä komentoa su ja käytä sudoJokaisella on hyvät ja huonot puolensa, ja niiden ymmärtäminen säästää sinulta paljon vaivaa.

Kirjaudu sisään suoraan pääkäyttäjänä (esimerkiksi, kanssa ssh root@servidorTämä antaa sinulle täyden pääsyn järjestelmään alusta alkaen. Tämä on erittäin kätevää, mutta myös erittäin vaarallista: mikä tahansa väärin kirjoitettu komento voi tyhjentää puolet järjestelmästä, muuttaa kriittisiä käyttöoikeuksia tai tehdä koneesta käyttökelvottoman. Siksi useimmissa tapauksissa kirjautumisistuntojen kanssa työskentelyä ei suositella. root avoinna pysyvästi.

Komento su (sijaiskäyttäjä) Sen avulla voit vaihtaa toiseen käyttäjään samassa terminaalissa. Alkuperäinen istunto pysyy taustalla ja "kapseloi" uuden. Jos suoritat su pedroSinulta kysytään salasanaasi. pedro ja jos kirjoitat sisään exit Palaat edelliseen käyttäjään. Jos et määritä käyttäjätunnusta, su Oletusarvoisesti se yrittää vaihtaa root.

On tärkeä vivahde, jossa su: jos et läpäise kirjautumisvaihtoehtoa (su -, su -l o su --login), muuttaa käyttäjää, mutta ei ympäristöä. Tämä tarkoittaa, että pysyt edellisen käyttäjän työhakemistossa ja muuttujien kanssa, mikä voi aiheuttaa käyttöoikeusvirheitä (esimerkiksi yritettäessä listata koti (alkuperäisen käyttäjän ja uuden käyttäjän tunnistetietojen).

Sen sijaan, sudo Se tarjoaa turvallisemman ja hallittavamman lähestymistavanSinun ei tarvitse tietää salasanaa, jos rootmutta oma salasanasi, ja järjestelmä päättää /etc/sudoersmitkä käyttäjät voivat suorittaa mitäkin komentoja, kuten mitkä käyttäjät ja miltä koneilta. Lisäksi jokainen käyttökerta sudo Se tallennetaan lokeihin, mikä helpottaa laajennetuilla oikeuksilla tehtyjen toimintojen tarkastamista.

Vuorovaikutteisia istuntoja varten "toisena käyttäjänä" sudon avullaOn olemassa joitakin erittäin käytännöllisiä muunnelmia:

  • Sudo -s: avaa komentotulkin kohdekäyttäjänä, joka perii nykyisen käyttäjän ympäristön.
  • sudo -i: käynnistää kohdekäyttäjän täyden kirjautumiskuoren, jonka ympäristö ja hakemisto ovat puhtaat. $HOME, lataa tiedostoja, kuten .profile o .bash_profile.

Molemmat vaihtoehdot ovat hyödyllisiä kertaluonteisessa työskentelyssä. toisena käyttäjänä (yleensä root tai millä tahansa palvelutilillä) ilman, että sinun tarvitsee muistaa ja käyttää salasanaasi, samalla säilyttäen hallinnan ja kirjaa suoritetuista toimista.

Tiedosto /etc/sudoers ja hakemisto /etc/sudoers.d

Sudo-konfiguraation ydin se on arkistossa /etc/sudoersSiinähän se määritellään, kuka sitä saa käyttää. sudomistä, kuten mikä käyttäjä ja mitkä tietyt komennot voidaan suorittaa. Lisäksi monet jakelut sisältävät direktiivin, joka lataa automaattisesti kaikki lisäasetukset, jotka sijaitsevat /etc/sudoers.d/.

On ratkaisevan tärkeää ymmärtää se /etc/sudoers Ei kannata muokata "ilman minkäänlaista muokkausta". millä tahansa tekstieditorilla. Se on aina muokattava komennolla visudo, joka avaa tiedoston editorilla (oletusarvoisesti vi o nano(kokoonpanosta riippuen), mutta se lisää suojauskerroksen: se tarkistaa syntaksin ennen tallentamista ja estää kahta henkilöä muokkaamasta sitä samanaikaisesti.

Tyypillinen käyttö sudoereiden muokkaamiseen on:

> sudo visudo -f /etc/sudoers

Voit myös luoda tiettyjä tiedostoja /etc/sudoers.d/ erotellaksesi kokoonpanot käyttäjäryhmien, palveluiden jne. mukaan. Voit esimerkiksi käyttää tiedostoa /etc/sudoers.d/networking erityisillä säännöillä verkon hallintaa varten sekoittamatta sitä muuhun yleiseen kokoonpanoon.

Kun avaat /etc/sudoers-tiedoston tyypillisessä järjestelmässäNäet tällaisia ​​rivejä (kommentteja lukuun ottamatta):

  • juuri KAIKKI=(KAIKKI:KAIKKI) KAIKKIkäyttäjä root Voit suorittaa minkä tahansa komennon millä tahansa isännöllä, käyttäjänä ja ryhmänä.
  • %admin KAIKKI=(KAIKKI) KAIKKI: kuka tahansa ryhmän jäsen admin on täydet käyttöoikeudet sudo.
  • %sudo ALL=(ALL:ALL) KAIKKISama pätee ryhmään sudo, joka Ubuntussa ja sen johdannaisissa on yleensä avainryhmä.
  • #include /etc/sudoers.d: osoittaa, että kyseisen hakemiston tiedostot tulisi myös lukea (vaikka a #(Tämä ei ole kommentti tässä nimenomaisessa yhteydessä.)

Käyttäjä- ja ryhmäsääntöjen lisäksi, sudoers Se mahdollistaa aliaksien määrittämisen monimutkaisten konfiguraatioiden yksinkertaistamiseksi: käyttäjäaliakset (User_Alias), komentoja (Cmnd_Alias), suoritusryhmistä (Runas_Alias) tai isännistä (Host_Alias).

Hallitse käyttäjiä ja ryhmiä sudoers-komennoilla

Yleinen käytäntö palvelimilla hallitsee pääsyä sudo ryhmien kautta. Esimerkiksi monissa järjestelmissä riittää, että käyttäjä lisätään ryhmään sudo o wheel jotta voit hankkia täydet hallinnolliset luvat.

Ryhmään kuuluvien käyttäjien tarkistaminen määrätty (esim. sudo), voit käyttää:

> grep 'sudo' /etc/group

Jos haluat antaa käyttäjälle sudo-oikeudetTavallinen käytäntö on lisätä se vastaavaan ryhmään. Esimerkiksi sisällyttää bill Ryhmään sudo:

> sudo adduser bill sudo

Kun sinun on peruutettava nuo oikeudetPoista se vain ryhmästä:

> sudo deluser bill sudo

Toinen, paljon hienompi mahdollisuus Se tarkoittaa oikeuksien myöntämistä vain tietyille komennoille antamatta vapaata kättä. Tätä varten tietyt tiedostot luodaan yleensä /etc/sudoers.d/Voit esimerkiksi määrittää tiedoston /etc/sudoers.d/networking jollain tällaisella:

Cmnd_Alias ​​​​CAPTURE = /usr/sbin/tcpdump
Cmnd_Alias ​​​​PALVELIMET = /usr/sbin/apache2ctl, /usr/bin/htpasswd
Cmnd_Alias ​​​​NETALL = KAAPPAUS, PALVELIMET
%netadmin KAIKKI = NETKAIKKI

Tällä määrityksellä kuka tahansa ryhmän käyttäjä netadmin voit suorittaa aliaksen alla määritellyt komennot NETALL (joka ryhmittelee aliakset) CAPTURE y SERVERSilman täyttä pääsyä kaikkeen sudoTarvitaan vain lisätä bill Ryhmään netadmin jotta voit käyttää tcpdump ja määritellyt palvelintyökalut.

Yleisiä komentoja, jotka vaativat sudon

Järjestelmien päivittäisessä hallinnassaOn olemassa useita erityyppisiä tehtäviä, jotka lähes aina kulkevat käsi kädessä sudokoska ne edellyttävät järjestelmän muokkaamista tai suojattujen tietojen käyttöä.

Pakettien hallintajakaumissa, jotka perustuvat zypper, apt tai muissa paketinhallitsijoissa kaikki ohjelmistoja asentavat, poistavat tai päivittävät toiminnot vaativat käyttöoikeuksia. Esimerkiksi:

> sudo zypper -asennuspaketti
> sudo apt-get install docker-ce

Kyselyt, jotka vain lukevat tietoa,, kuten tietovarastojen listaaminen, voidaan yleensä suorittaa ilman sudoKyse on testaamisesta ja siitä, milloin järjestelmä itse palauttaa käyttöoikeusvirheen.

Palvelunhallinta systemd:n ​​avulla Se tehdään yleensä läpi systemctlPalveluiden käynnistäminen, pysäyttäminen tai uudelleenkäynnistäminen vaatii yleensä sudo:

> sudo systemctl käynnistä apache2 uudelleen

Sitä vastoin harmittomammat komennot, kuten palvelun tilan tarkistaminen Ne voivat toimia ilman käyttöoikeuksia monissa järjestelmissä:

> systemctl-tila Verkonhallinnan

Myös käyttäjätilien hallinta vaatii huolellisuuttaKomentoja, kuten usermod, useradd o deluser Niiden pitäisi melkein aina mennä mukana sudo, koska ne muokkaavat järjestelmän käyttäjätietokantaa:

> sudo usermod -L -f 30 tux

Lopuksi tiedostojen käyttöoikeudet ja omistajuuden hallinta kanssa chown Ja yritys tarvitsee yleensä käyttöoikeuksia, kun se vaikuttaa järjestelmäpolkuihin tai muihin käyttäjiin. Esimerkiksi kaikkien tiedostojen ja alihakemistojen tekemiseen /home/test/tux-files tulee käyttäjän omaisuudeksi tux Voit käyttää:

> sudo chown -R tux:tux /home/test/tux-tiedostot

Käytännön esimerkkejä sudon käytöstä

Katsotaanpa joitakin todellisia tapauksia. Donde sudo Se tekee eron käyttöoikeusvirheen ja oikean hallinnollisen toiminnon välillä.

Paketti-indeksien päivittäminen Debianissa/Ubuntussa Ilman käyttöoikeuksia se antaa virheitä, koska se ei voi käsitellä tiedostoja. /var/lib/apt/listsKomento:

> apt-get update

Se päättyy "Käyttöoikeus evätty" -viesteihinHeti kun toistat sen noin, asiat muuttuvat:

> sudo apt-get update

Järjestelmä kysyy salasanaasi.ja jos käyttäjälläsi on käyttöoikeudet sudoersPäivitys toimii ongelmitta. Se on toistuva kaava: käyttöoikeusvirhe ilman sudooikea toteutus sudo.

Toinen hyvin yleinen esimerkki on tiedostojen kopioiminen järjestelmäpolkuihinKuin /usr/local/binJos yrität kopioida skriptin sinne yksinkertaisella komennolla:

> cp script.sh /usr/local/bin/

On normaalia, että terminaali valittaa että sinulla ei ole kirjoitusoikeutta kyseiseen hakemistoon. Jos toistat toiminnon lisäämällä sudo:

> sudo cp script.sh /usr/local/bin/

Sinulta kysytään salasanaasi, ja onnistuneen todennuksen jälkeenKopio tehdään ja tallennetaan suoritetuksi laajennetuilla oikeuksilla.

Voit myös yhdistää sudon vaihtoehdon kanssa -u suorittaa tiettyjä komentoja toisena käyttäjänä ilman istuntojen vaihtamista tai su. Esimerkiksi:

> kukapa
> sudo -u pedro whoami

Ensimmäisessä tilauksessa näytetään oikea käyttäjätunnuksesi., kun taas toinen palauttaa arvon ”pedro”, mikä osoittaa, että suoritus on suoritettu kyseisenä kohdekäyttäjänä.

Käyttöoikeuksien myöntäminen ilman salasanaa ja muut lisäasetukset

Yksi hikoilun voimakkaimmista ominaisuuksista Tämän ominaisuuden avulla voit säätää, missä määrin salasanaa pyydetään ja mille komennoille sitä pyydetään. Joskus saatat haluta, että tietyt käyttäjät voivat suorittaa tiettyjä komentoja antamatta salasanaansa joka kerta, esimerkiksi automaattisia komentosarjoja tai työpöytäympäristön sammutuspainikkeita varten.

Tämä saavutetaan etiketin avulla NOPASSWD säännöissä sudoersEsimerkiksi, jos haluat miusuario voi toteuttaa /bin/cat kanssa sudo Ilman salasanaa voit lisätä rivin:

käyttäjä KAIKKI = NOPASSWD: /bin/cat

Samoin voit antaa sen hallita laitteiden sammuttamista. ilman toistuvaa todennusta lisäämällä jotain seuraavanlaista:

käyttäjä KAIKKI = NOPASSWD: /sbin/shutdown, /sbin/halt, /sbin/reboot, /sbin/restart

Puhtaampia ja skaalautuvampia kokoonpanoja vartenOn suositeltavaa käyttää aliaksia. Tyypillinen esimerkki on käyttäjäryhmän, komentoryhmän ja tarvittaessa suorituskäyttäjäaliaksen määrittäminen:

User_Alias ​​​​GROUP = pepe, perico, andres
Cmnd_Alias ​​​​POWER = /sbin/shutdown, /sbin/halt, /sbin/reboot, /sbin/restart
Runas_Alias ​​​​WEB = www-data, apache

Näillä määritelmillä voisit sitten kirjoittaa Paljon luettavampia sääntöjä, kuten:

KAIKKI RYHMÄ = VOIMA

Näin ollen kaikki aliakseen sisältyvät käyttäjät GRUPO Voit sammuttaa tietokoneen tai käynnistää sen uudelleen käyttämällä sudoja voit säätää, haluatko vaatia salasanan vai et NOPASSWD o PASSWDVoit myös rajoittaa käyttöä tiettyihin isäntiin Host_Alias niin että se on voimassa vain tietystä verkosta.

ulkopuolella NOPASSWDOn muitakin merkintöjä kuten NOEXEC (estääksesi komentoa käynnistämästä muita ohjelmia, joilla on laajennetut käyttöoikeudet) tai pieniä kuriositeetteja, kuten lisääminen insults linjalle Defaults, jotta sudo Vitsailen englanniksi joka kerta, kun et anna salasanaa.

Kaikki tämä osoittaa, että sudoers on paljon enemmän kuin pelkkä "root switch"Oikein konfiguroituna se mahdollistaa erittäin yksityiskohtaisen käyttöoikeusmallin suunnittelun, joka on räätälöity tarpeisiisi ja jonka turvallisuustaso on paljon parempi kuin tyypillinen "kirjoita sisään pääkäyttäjänä ja tee mitä haluat".

Työkalun omistaminen, kuten sudooikein ymmärretty ja oikein konfiguroituSe on lähes pakollinen kaikissa moderneissa Linux-järjestelmissä, joissa työskentelee useita käyttäjiä tai joissa halutaan minimoida riskit, vaikka olisit ainoa käyttäjä. Hyödyntämällä yhdistelmää sudo, /etc/sudoers, grupos como sudo o wheel ja edistyneitä tunnisteita, kuten NOPASSWDVoit saavuttaa erittäin kohtuullisen tasapainon mukavuuden, hienon hallinnan ja turvallisuuden välillä ilman, että sinun tarvitsee jatkuvasti jumittua samaan harjoitussessioon. root eikä luottaa pelkästään hyvään tuuriin.

pääkäyttäjä Linuxissa
Aiheeseen liittyvä artikkeli:
Pääkäyttäjä Linuxissa: käyttöoikeudet, riskit ja parhaat käytännöt

Lisää ensisijaiseksi lähteeksi