Hvordan kontrollere sudo Access på Linux

Sudo-kommandoen lar deg kjøre kommandoer på Linux som om du var en annen, for eksempel root. sudo lar deg også kontrollere hvem som har tilgang til roots evner, med granularitet. Gi brukerne full tilgang eller la dem bruke et lite undersett av kommandoer. Vi viser deg hvordan.

sudo og root-tillatelser

Vi har alle hørt (overforenklingen) at alt i Linux er en fil. I sannhet snakker praktisk talt alt i operativsystemet fra prosesser, filer, kataloger, sockets og pipes til kjernen gjennom en filbeskrivelse. Så selv om alt ikke er en fil, håndteres de fleste operativsystemobjekter som om de var det. Der det er mulig, følger utformingen av Linux og Unix-lignende operativsystemer til dette prinsippet.

Konseptet «alt er en fil» er vidtrekkende i Linux. Da er det lett å se hvordan filtillatelser i Linux ble en av bærebjelkene i brukerprivilegier og rettigheter. Hvis du eier en fil eller katalog (en spesiell type fil), kan du gjøre hva du vil med den, inkludert å redigere, gi nytt navn, flytte og slette den. Du kan også angi tillatelsene for filen slik at andre brukere eller grupper av brukere kan lese, endre eller kjøre filen. Alle er styrt av disse tillatelsene.

Alle som er, bortsett fra superbrukeren, kjent som root. Rotkontoen er en spesielt privilegert konto. Den er ikke bundet av tillatelsene til noen av objektene i operativsystemet. Rotbrukeren kan gjøre hva som helst med hva som helst, og stort sett når som helst.

Selvfølgelig kan alle med tilgang til roots passord gjøre det samme. De kan skape kaos enten ondsinnet eller ved et uhell. Faktisk kan root-brukeren skape kaos ved å gjøre en feil også. Ingen er ufeilbarlige. Det er farlige greier.

Dette er grunnen til at det nå anses som beste praksis å ikke logge på som root i det hele tatt. Logg inn med en vanlig brukerkonto og bruk sudo til heve privilegiene dine for den korte varigheten du trenger dem. Ofte er det bare å gi en enkelt kommando.

Sudoers-listen

sudo var allerede installert på datamaskinene Ubuntu 18.04.3, Manjaro 18.1.0 og Fedora 31 som ble brukt til å undersøke denne artikkelen. Dette er ingen overraskelse. sudo har eksistert siden tidlig på 1980-tallet og har blitt standardmetoden for superbrukerdrift for nesten alle distribusjoner.

Når du installerer en moderne distro, blir brukeren du oppretter under installasjonen lagt til en liste over brukere kalt sudoers. Dette er brukerne som kan bruke sudo-kommandoen. Fordi du har sudo-krefter, kan du bruke dem til å legge til andre brukere til listen over sudoere.

Selvfølgelig er det hensynsløst å dele ut full superbrukerstatus frivillig, eller til alle som bare har et delvis eller spesifikt behov. Sudoers-listen lar deg spesifisere hvilke kommandoer de ulike brukerne har lov til å bruke sudo med. På den måten gir du dem ikke nøklene til riket, men de kan fortsatt oppnå det de trenger å gjøre.

  Hvordan bruke bash til å lage kataloger i Linux [Guide]

Kjøre en kommando som en annen bruker

Opprinnelig ble det kalt «superuser do», fordi du kunne gjøre ting som superbruker. Omfanget har blitt utvidet nå, og du kan bruke sudo til å utføre en kommando som om du var en hvilken som helst bruker. Den har fått nytt navn for å gjenspeile den nye funksjonaliteten. Det kalles nå «erstatningsbruker gjør.»

For å bruke sudo til å kjøre en kommando som en annen bruker, må vi bruke alternativet -u (bruker). Her skal vi kjøre hvem er jeg kommando som brukeren mary. Hvis du bruker sudo-kommandoen uten -u-alternativet, kjører du kommandoen som root.

Og selvfølgelig, fordi du bruker sudo, vil du bli bedt om passordet ditt.

sudo -u mary whoami

Svaret fra whoami forteller oss at brukerkontoen som kjører kommandoen er mary.

Du kan bruke sudo-kommandoen til å logge på som en annen bruker uten å vite passordet. Du vil bli bedt om ditt eget passord. Vi må bruke alternativet -i (pålogging).

sudo -i -u mary
pwd
whoami
ls -hl
exit

Du er logget inn som mary. «.bashrc», «.bash_aliases» og «.profile»-filene for mary-brukerkontoen behandles nøyaktig som om eieren av mary-brukerkontoen hadde logget på selv.

Ledeteksten endres for å gjenspeile dette er en økt for brukerkontoen mary.
Pwd-kommandoen gjengir at du nå er i Mary’s hjemmekatalog.
whoami forteller oss at du bruker brukerkontoen mary.
Filene i katalogen tilhører mary-brukerkontoen.
Avslutt-kommandoen returnerer deg til din vanlige brukerkontoøkt.

Redigering av sudoers-filen

For å legge til brukere på listen over personer som kan bruke sudo , må du redigere sudoers-filen. Det er svært viktig at du bare gjør det ved å bruke visudo-kommandoen. Visudo-kommandoen hindrer flere personer i å prøve å redigere sudoers-filen samtidig. Det også utfører syntakskontroll og analysering på filinnholdet når du lagrer dem.

Hvis redigeringene dine ikke består testene, lagres ikke filen blindt. Du får alternativer. Du kan avbryte og avbryte endringene, gå tilbake og redigere endringene på nytt, eller tvinge de uriktige endringene til å lagres. Det siste alternativet er en alvorlig dårlig idé. Ikke la deg friste til å gjøre det. Du kan komme i en situasjon der alle ved et uhell blir utestengt fra å bruke sudo.

Selv om du starter redigeringsprosessen ved å bruke visudo-kommandoen, er ikke visudo en editor. Den kaller opp en av dine eksisterende redaktører for å utføre filredigeringene. På Manjaro og Ubuntu ble visudo-kommandoen lansert den enkle redaktøren nano. På Fedora lanserte visudo den mer kapable-men mindre intuitivt-vim.

Hvis du foretrekker å bruke nano på Fedora, kan du gjøre det enkelt. Installer først nano:

sudo dnf installer nano

Og så måtte visudo påkalles med denne kommandoen:

sudo EDITOR=nano visudo

Det ser ut som en god kandidat for et alias. Nano-editoren åpnes med sudoers-filen lastet inn i den.

Legger til brukere i sudo-gruppen

Bruk visudo for å åpne sudoers-filen. Bruk enten denne kommandoen eller den som er beskrevet ovenfor for å spesifisere redigeringsprogrammet du ønsker:

sudo visudo

Bla gjennom sudoers-filen til du ser definisjonen av %sudo-oppføringen.

Prosenttegnet indikerer at dette er en gruppedefinisjon og ikke en brukerdefinisjon. På noen distribusjoner har %sudo-linjen en hash # ved starten av linjen. Dette gjør linjen til en kommentar. Hvis dette er tilfelle, fjern hashen og lagre filen.

  Hvordan spille Dead Rising 2 på Linux

%sudo-linjen brytes ned slik:

%sudo: Navnet på gruppen.
ALL=: Denne regelen gjelder for alle verter på dette nettverket.
(ALLE:ALLE): medlemmer av denne gruppen kan kjøre kommandoer som alle brukere og alle grupper.
Alle: medlemmer av denne gruppen kan kjøre alle kommandoer.

For å omformulere det litt, kan medlemmer av denne gruppen kjøre hvilken som helst kommando, som enhver bruker eller hvilken som helst gruppe, på denne datamaskinen eller på en hvilken som helst annen vert i dette nettverket. Så en enkel måte å gi noen root-privilegier og muligheten til å bruke sudo, er å legge dem til sudo-gruppen.

Vi har to brukere, Tom og Mary, med brukerkontoer henholdsvis tom og mary. Vi legger til brukerkonto tom til sudo-gruppen med kommandoen usermod. Alternativet -G (grupper) spesifiserer gruppen vi skal legge til tom-kontoen til. Alternativet -a (legg til) legger til denne gruppen i listen over grupper brukerkontoen tom allerede er i. Uten dette alternativet ville brukerkonto tom blitt plassert i den nye gruppen, men fjernet fra andre grupper.

sudo usermod -a -G sudo tom

La oss sjekke hvilke grupper Mary er i:

groups

Brukerkontoen mary er kun i mary-gruppen.

La oss sjekke med Tom:

groups

Tom-brukerkontoen – og derfor Tom – er i gruppene tom og sudo.

La oss prøve å få Mary til å gjøre noe som krever sudo-privilegier.

sudo less /etc/shadow

Mary kan ikke se inn i den begrensede filen «/etc/shadow.» Hun får en mild avskjed for å prøve å bruke sudo uten tillatelse. La oss hvordan det går med Tom:

sudo less /etc/shadow

Så snart Tom skriver inn passordet, får han vist filen /etc/shadow.

Bare ved å legge ham til sudo-gruppen, har han blitt hevet til eliterekker av de som kan bruke sudo. Helt ubegrenset.

Gir brukere begrensede sudo-rettigheter

Tom har fått fulle sudo-rettigheter. Han kan gjøre alt som root – eller noen andre i sudo-gruppen – kan gjøre. Det kan gi ham mer makt enn du er glad for å overlate. Noen ganger er det et krav for en bruker å utføre en funksjon som krever root-privilegier, men det er ikke en forsvarlig sak for dem å ha full sudo-tilgang. Du kan oppnå den balansen ved å legge dem til sudoers-filen og liste opp kommandoene de kan bruke.

La oss møte Harry, eieren av brukerkontoen harry. Han er ikke i sudo-gruppen, og han har ingen sudo-privilegier.

groups

Det er nyttig for Harry å kunne installere programvare, men vi vil ikke at han skal ha fulle sudo-rettigheter. Ok ikke noe problem. la oss fyre opp visudo:

sudo visudo

Rull ned gjennom filen til du kommer forbi gruppedefinisjonene. Vi skal legge til en linje for Harry. Fordi dette er en brukerdefinisjon og ikke en gruppedefinisjon, trenger vi ikke å starte linjen med et prosenttegn.

Oppføringen for brukerkontoen harry er:

harry    ALL=/usr/bin/apt-get

Merk at det er en fane mellom «harry» og «ALL=.»

Dette leses som brukerkontoen harry kan bruke de oppførte kommandoene på alle verter som er koblet til dette nettverket. Det er en kommando oppført, som er «/usr/bin/apt-get.» Vi kan gi Harry tilgang til mer enn én kommando ved å legge dem til kommandolisten, atskilt med komma.

  Slik fjerner du Wine fra Linux

Legg til linjen i sudoers-filen, og lagre filen. Hvis du vil dobbeltsjekke at linjen er syntaktisk korrekt, kan vi be visudo om å skanne filen og sjekke syntaksen for oss, ved å bruke alternativet -c (kun sjekk):

sudo visudo -c

Kontrollene finner sted og visudo melder at alt er bra. Harry skal nå kunne bruke apt-get å installere programvare men bør nektes hvis han prøver å bruke en annen kommando som krever sudo.

sudo apt-get install finger

De riktige sudo-rettighetene har blitt gitt til Harry, og han er i stand til å installere programvaren.

Hva skjer hvis Harry prøver å bruke en annen kommando som krever sudo?

sudo shutdown now

Harry er forhindret fra å kjøre kommandoen. Vi har gitt ham spesifikk, begrenset tilgang. Han kan bruke den nominerte kommandoen og ingenting annet.

Bruke sudoers brukeraliaser

Hvis vi ønsker å gi Mary de samme privilegiene, kan vi legge til en linje i sudoers-filen for brukerkontoen mary på nøyaktig samme måte som vi gjorde med Harry. En annen, penere måte å oppnå det samme på er å bruke et User_Alias.

i sudoers-filen inneholder et User_Alias ​​en liste over brukerkontonavn. Navnet på User_Alias ​​kan deretter brukes i en definisjon for å representere alle disse brukerkontoene. Hvis du vil endre rettighetene for disse brukerkontoene, har du bare én linje å redigere.

La oss lage et User_Alias ​​og bruke det i sudoers-filen vår.

sudo visudo

Scroll down in the file until you come to the User_Alias specification line.


Legg til User_Alias ​​ved å skrive:

User_Alias INSTALLERS = harry, mary

Hvert element er atskilt med et mellomrom, ikke en tabulator. Logikken brytes ned som:

User_Alias: Dette forteller visudo at dette kommer til å bli et User_Alias.
INSTALLATØRER: Dette er et vilkårlig navn for dette aliaset.
= harry, mary: Listen over brukere som skal inkluderes i dette aliaset.

Nå skal vi redigere linjen som vi la til tidligere for brukerkontoen harry:

harry    ALL=/usr/bin/apt-get

Endre det slik at det står:

INSTALLERS    ALL=/usr/bin/apt-get

Dette sier at alle brukerkontoer i definisjonen av «INSTALLERS» User_Alias ​​kan kjøre apt-get-kommandoen. Vi kan teste dette med Mary, som nå skal kunne installere programvare.

sudo apt-get install colordiff

Mary er i stand til å installere programvaren fordi hun er i «INSTALLERS» User_Alias, og at User_Alias ​​har blitt tildelt disse rettighetene.

Tre raske sudo-triks

Når du glemmer å legge til sudo i en kommando, skriv

sudo !!

Og den siste kommandoen vil bli gjentatt med sudo lagt til starten av linjen.

Når du har brukt sudo og autentisert med passordet ditt, trenger du ikke bruke passordet med flere sudo-kommandoer på 15 minutter. Hvis du vil ha autentiseringen din glemt med en gang, bruk:

sudo -k

Har du noen gang lurt på hvor du kan se mislykkede sudo-kommandoforsøk? De går til filen «/var/log/auth.log». Du kan se den med:

less /var/log/auth.log

Vi kan se oppføringen for brukerkontoen mary som var logget på TTY pts/1 da hun prøvde å kjøre avslutningskommandoen som bruker «root.»

Med stor kraft…

…kommer muligheten til å delegere deler av det til andre. Nå vet du hvordan du kan styrke andre brukere selektivt.