Sådan kontrollerer du sudo Access på Linux

Sudo-kommandoen lader dig køre kommandoer på Linux, som om du var en anden, såsom root. sudo lader dig også kontrollere, hvem der kan få adgang til roots muligheder, med granularitet. Giv brugerne fuld adgang, eller lad dem bruge en lille undergruppe af kommandoer. Vi viser dig hvordan.

sudo og root-tilladelser

Vi har alle hørt (oversimplifikationen), at alt i Linux er en fil. I sandhed taler stort set alt i operativsystemet fra processer, filer, mapper, sockets og rør til kernen gennem en filbeskrivelse. Så selvom alt ikke er en fil, håndteres de fleste operativsystemobjekter, som om de var det. Hvor det er muligt, overholder designet af Linux og Unix-lignende operativsystemer dette princip.

Begrebet “alt er en fil” er vidtrækkende i Linux. Det er nemt at se, hvordan filtilladelser i Linux blev en af ​​grundpillerne i brugerrettigheder og rettigheder. Hvis du ejer en fil eller et bibliotek (en særlig type fil), kan du gøre, hvad du vil med den, herunder redigere, omdøbe, flytte og slette den. Du kan også indstille tilladelserne til filen, så andre brugere eller grupper af brugere kan læse, ændre eller udføre filen. Alle er underlagt disse tilladelser.

Alle, der er, bortset fra superbrugeren, kendt som root. Root-kontoen er en særligt privilegeret konto. Det er ikke bundet af tilladelserne på nogen af ​​objekterne i operativsystemet. Rootbrugeren kan gøre hvad som helst ved hvad som helst og stort set til enhver tid.

Selvfølgelig kan alle med adgang til roots adgangskode gøre det samme. De kunne skabe kaos enten ondsindet eller ved et uheld. Faktisk kan root-brugeren skabe kaos ved også at lave en fejl. Ingen er ufejlbarlig. Det er farlige ting.

Dette er grunden til, at det nu anses for at være bedste praksis slet ikke at logge ind som root. Log ind med en almindelig brugerkonto og brug sudo til forhøje dine privilegier i den korte varighed du har brug for dem. Ofte er det bare at udstede en enkelt kommando.

Sudoers Listen

sudo var allerede installeret på Ubuntu 18.04.3, Manjaro 18.1.0 og Fedora 31 computere, der blev brugt til at undersøge denne artikel. Dette er ikke en overraskelse. sudo har eksisteret siden begyndelsen af ​​1980’erne og er blevet standardmetoden til superbrugerdrift for næsten alle distributioner.

Når du installerer en moderne distro, tilføjes den bruger, du opretter under installationen, til en liste over brugere kaldet sudoers. Det er de brugere, der kan bruge sudo-kommandoen. Fordi du har sudo-kræfter, kan du bruge dem til at tilføje andre brugere til listen over sudoere.

Selvfølgelig er det hensynsløst at uddele fuld superbrugerstatus frivilligt eller til enhver, der kun har et delvist eller specifikt behov. Sudoers-listen giver dig mulighed for at angive, hvilke kommandoer de forskellige brugere må bruge sudo med. På den måde giver du dem ikke nøglerne til riget, men de kan stadig nå det, de skal.

  Sådan administrerer du grupper og brugere på Linux

Køre en kommando som en anden bruger

Oprindeligt hed det “superbruger do”, fordi man kunne gøre ting som superbruger. Dens omfang er blevet udvidet nu, og du kan bruge sudo til at udføre en kommando, som om du var en hvilken som helst bruger. Det er blevet omdøbt for at afspejle den nye funktionalitet. Det kaldes nu “erstatningsbruger gør.”

For at bruge sudo til at køre en kommando som en anden bruger, skal vi bruge muligheden -u (bruger). Her skal vi køre hvem er jeg kommando som brugeren mary. Hvis du bruger sudo-kommandoen uden -u-indstillingen, kører du kommandoen som root.

Og selvfølgelig, fordi du bruger sudo, bliver du bedt om din adgangskode.

sudo -u mary whoami

Svaret fra whoami fortæller os, at brugerkontoen, der kører kommandoen, er mary.

Du kan bruge sudo-kommandoen til at logge på som en anden bruger uden at kende deres adgangskode. Du bliver bedt om din egen adgangskode. Vi skal bruge muligheden -i (login).

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

Du er logget ind som mary. Filerne “.bashrc”, “.bash_aliases” og “.profile” for mary-brugerkontoen behandles nøjagtigt, som om ejeren af ​​mary-brugerkontoen selv havde logget på.

Kommandoprompten ændres for at afspejle dette er en session for brugerkontoen mary.
Pwd-kommandoen gengiver, at du nu er i Mary’s hjemmemappe.
whoami fortæller os, at du bruger brugerkontoen mary.
Filerne i mappen tilhører mary-brugerkontoen.
Exit-kommandoen vender dig tilbage til din normale brugerkontosession.

Redigering af sudoers-filen

For at tilføje brugere til listen over personer, der kan bruge sudo , skal du redigere sudoers-filen. Det er meget vigtigt, at du kun gør det ved at bruge visudo-kommandoen. Visudo-kommandoen forhindrer flere personer i at forsøge at redigere sudoers-filen på én gang. Det også udfører syntakskontrol og parsing på filindholdet, mens du gemmer dem.

Hvis dine redigeringer ikke består testene, gemmes filen ikke blindt. Du får muligheder. Du kan annullere og opgive ændringerne, gå tilbage og redigere ændringerne igen eller tvinge de forkerte redigeringer til at blive gemt. Den sidste mulighed er en alvorligt dårlig idé. Lad dig ikke friste til at gøre det. Du kan komme i en situation, hvor alle ved et uheld bliver låst ude af at bruge sudo.

Selvom du starter redigeringsprocessen ved hjælp af visudo-kommandoen, er visudo ikke en editor. Det kalder en af ​​dine eksisterende redaktører til at udføre filredigeringerne. På Manjaro og Ubuntu blev visudo-kommandoen lanceret den simple redaktør nano. På Fedora lancerede visudo den mere dygtige-men mindre intuitiv— vim.

Hvis du foretrækker at bruge nano på Fedora, kan du nemt gøre det. Først skal du installere nano:

sudo dnf installer nano

Og så skulle visudo påkaldes med denne kommando:

sudo EDITOR=nano visudo

Det ligner en god kandidat til et alias. Nano-editoren åbnes med sudoers-filen indlæst i den.

Tilføjelse af brugere til sudo-gruppen

Brug visudo til at åbne sudoers-filen. Brug enten denne kommando eller den ovenfor beskrevne for at angive den editor du ønsker:

sudo visudo

Rul gennem sudoers-filen, indtil du ser definitionen af ​​%sudo-posten.

Procenttegnet angiver, at dette er en gruppedefinition og ikke en brugerdefinition. På nogle distributioner har %sudo-linjen en hash # i starten af ​​linjen. Dette gør linjen til en kommentar. Hvis dette er tilfældet, skal du fjerne hashen og gemme filen.

  Sådan opsætter du en SSH-nøgle på Linux

%sudo-linjen opdeles således:

%sudo: Navnet på gruppen.
ALL=: Denne regel gælder for alle værter på dette netværk.
(ALLE:ALLE): medlemmer af denne gruppe kan køre kommandoer som alle brugere og alle grupper.
Alle: medlemmer af denne gruppe kan køre alle kommandoer.

For at omformulere det lidt, kan medlemmer af denne gruppe køre enhver kommando, som enhver bruger eller enhver gruppe, på denne computer eller på en hvilken som helst anden vært i dette netværk. Så en simpel måde at give nogen root-privilegier og muligheden for at bruge sudo, er at tilføje dem til sudo-gruppen.

Vi har to brugere, Tom og Mary, med brugerkonti henholdsvis tom og mary. Vi tilføjer brugerkonto tom til sudo-gruppen med kommandoen usermod. Indstillingen -G (grupper) angiver den gruppe, vi vil tilføje tom-kontoen til. Valgmuligheden -a (tilføj) tilføjer denne gruppe til listen over grupper, som brugerkontoen tom allerede er i. Uden denne mulighed ville brugerkontoen tom blive placeret i den nye gruppe, men fjernet fra alle andre grupper.

sudo usermod -a -G sudo tom

Lad os se, hvilke grupper Mary er i:

groups

Brugerkontoen mary er kun i mary-gruppen.

Lad os tjekke med Tom:

groups

Tom-brugerkontoen – og derfor Tom – er i grupperne tom og sudo.

Lad os prøve at få Mary til at gøre noget, der kræver sudo-privilegier.

sudo less /etc/shadow

Mary kan ikke se inde i den begrænsede fil “/etc/shadow.” Hun får en mild afsløring for at prøve at bruge sudo uden tilladelse. Lad os hvordan Tom klarer sig:

sudo less /etc/shadow

Så snart Tom indtaster sin adgangskode, får han vist filen /etc/shadow.

Bare ved at tilføje ham til sudo-gruppen, er han blevet hævet til eliterækken af ​​dem, der kan bruge sudo. Fuldstændig ubegrænset.

Giver brugere begrænsede sudo-rettigheder

Tom har fået fulde sudo-rettigheder. Han kan gøre alt, hvad root – eller enhver anden i sudo-gruppen – kan gøre. Det kan give ham mere magt, end du er glad for at udlevere. Nogle gange er der et krav om, at en bruger skal udføre en funktion, der kræver root-privilegier, men der er ikke et berettiget tilfælde for, at de skal have fuld sudo-adgang. Du kan opnå den balance ved at tilføje dem til sudoers-filen og angive de kommandoer, de kan bruge.

Lad os møde Harry, ejeren af ​​brugerkontoen harry. Han er ikke i sudo-gruppen, og han har ingen sudo-privilegier.

groups

Det er nyttigt for Harry at kunne installere software, men vi ønsker ikke, at han skal have fulde sudo-rettigheder. Ok intet problem. lad os fyre op for visudo:

sudo visudo

Rul ned gennem filen, indtil du kommer forbi gruppedefinitionerne. Vi vil tilføje en linje til Harry. Fordi dette er en brugerdefinition og ikke en gruppedefinition, behøver vi ikke starte linjen med et procenttegn.

Indgangen til brugerkontoen harry er:

harry    ALL=/usr/bin/apt-get

Bemærk, at der er en fane mellem “harry” og “ALL=.”

Dette læses som brugerkonto Harry kan bruge de anførte kommandoer på alle værter forbundet til dette netværk. Der er en kommando på listen, som er “/usr/bin/apt-get.” Vi kan give Harry adgang til mere end én kommando ved at tilføje dem til kommandolisten, adskilt af kommaer.

  Sådan finder du software på obskure Linux-distributioner

Tilføj linjen til sudoers-filen, og gem filen. Hvis du vil dobbelttjekke, at linjen er syntaktisk korrekt, kan vi bede visudo om at scanne filen og tjekke syntaksen for os ved at bruge -c (kun markering):

sudo visudo -c

Kontrollerne finder sted, og visudo rapporterer, at alt er godt. Harry skulle nu kunne bruge apt-get at installere software men bør afvises, hvis han forsøger at bruge en anden kommando, der kræver sudo.

sudo apt-get install finger

De passende sudo-rettigheder er blevet givet til Harry, og han er i stand til at installere softwaren.

Hvad sker der, hvis Harry forsøger at bruge en anden kommando, der kræver sudo?

sudo shutdown now

Harry forhindres i at køre kommandoen. Vi har med succes givet ham specifik, begrænset adgang. Han kan bruge den nominerede kommando og intet andet.

Brug af sudoers brugeraliaser

Hvis vi vil give Mary de samme privilegier, kan vi tilføje en linje i sudoers-filen for brugerkontoen mary på nøjagtig samme måde, som vi gjorde med Harry. En anden, pænere måde at opnå det samme på er at bruge et User_Alias.

i sudoers-filen indeholder et User_Alias ​​en liste over brugerkontonavne. Navnet på User_Alias ​​kan derefter bruges i en definition til at repræsentere alle disse brugerkonti. Hvis du vil ændre privilegierne for disse brugerkonti, har du kun én linje at redigere.

Lad os oprette et User_Alias ​​og bruge det i vores sudoers-fil.

sudo visudo

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


Tilføj User_Alias ​​ved at skrive:

User_Alias INSTALLERS = harry, mary

Hvert element er adskilt af et mellemrum, ikke en tabulator. Logikken bryder sammen som:

User_Alias: Dette fortæller visudo, at dette vil være et User_Alias.
INSTALLATØRER: Dette er et vilkårligt navn for dette alias.
= harry, mary: Listen over brugere, der skal inkluderes i dette alias.

Nu vil vi redigere linjen, som vi tidligere tilføjede for brugerkontoen harry:

harry    ALL=/usr/bin/apt-get

Skift det, så det lyder:

INSTALLERS    ALL=/usr/bin/apt-get

Dette siger, at alle brugerkonti indeholdt i definitionen af ​​”INSTALLERE” User_Alias ​​kan køre kommandoen apt-get. Det kan vi teste med Mary, som nu skulle være i stand til at installere software.

sudo apt-get install colordiff

Mary er i stand til at installere softwaren, fordi hun er i “INSTALLERS” User_Alias, og at User_Alias ​​er blevet tildelt disse rettigheder.

Tre hurtige sudo-tricks

Når du glemmer at tilføje sudo til en kommando, skal du skrive

sudo !!

Og den sidste kommando vil blive gentaget med sudo tilføjet til starten af ​​linjen.

Når du har brugt sudo og autentificeret med din adgangskode, behøver du ikke bruge din adgangskode med yderligere sudo-kommandoer i 15 minutter. Hvis du vil have din autentificering glemt med det samme, skal du bruge:

sudo -k

Har du nogensinde spekuleret på, hvor du kan se mislykkede sudo-kommandoforsøg? De går til filen “/var/log/auth.log”. Du kan se den med:

less /var/log/auth.log

Vi kan se posten for brugerkontoen Mary, der var logget ind på TTY pts/1, da hun forsøgte at køre shutdown-kommandoen som bruger “root.”

Med stor kraft…

…kommer muligheden for at uddelegere dele af det til andre. Nu ved du, hvordan du kan styrke andre brugere selektivt.