Sudo – Super User DO 1

Skrevet af: Patrick Kerwood

For at undgå at logge ind, som root, hver gang man skal kører kommandoer der kræver root privilegier. Kan man bruge programmet “sudo” istedet. Med sudo kan du give brugerer eller grupper, rettigheder til at kører disse kommandoer, eller specifikke udvalgte kommandoer.

Start med at installer programmet.

Fx. i Debian
aptitude install sudo

Brug visudo til at rediger konfigurations filen. visudo tjekker om det du har redigeret/tilføjet er korrekt, når du gemmer og lukker. Hvis du har lavet en fejl, vil du blive informeret om det.
visudo /etc/sudoers

Indholdet vil se således ud.

Lige under linjen “root ALL=(ALL) ALL” laver du en linje magen til, med dit eget brugernavn.
kerwood ALL=(ALL) ALL

Alternativt kan du nøjes med at tilføje din bruger til gruppen “sudo”. Som du kan se i overstående script, linje 22, har gruppen “sudo” fået tildelt sudo rettigheder. På den måde behøver du ikke at tilføje alle din sudo brugerer, men kan nøjes med at smide dem i samme gruppe. Du kan selvfølgelig lave flere grupper, med forskellelige rettigheder.

Tilføj en bruger til “sudo” gruppen.
usermod -G sudo brugernavn

Gem og luk.
Din bruger kan nu kører administrative kommandoer, ved at skrive “sudo” foran, Fx. hvis du skal konfigurer sudo.
Du vil efterfølgende blive spurgt om adgangskode.
sudo nano /etc/sudoers

 

Forklaring og eksempler

kerwood ALL=(ALL) ALL

  • ALL – Hostname, tillad forbindelse fra alle maskiner.
  • (ALL) – Tillad kørsel af kommandoer som alle andre brugere.
  • ALL – Tillad kørsel af alle kommandoer.

I dette eksempel må brugeren kun kører sudo kommadoer, hvis SSH forbindelsen er fra anvist hostname. Dette hostname i eksemplet nedenunder, er selvfølgelig fiktiv. Du kan finde dit hostname her, eller på andre IP sider.

kerwood 0964770324.2.fullrate.dk=(ALL) ALL

I dette eksempel, kan brugeren kun kører kommandoer som carsten, istedet for alle. Brugeren kan selvfølgelig kører alle kommandoer med sudo, som sig selv.
kerwood ALL=(carsten) ALL
Et eksempel på overstående kunne være.
sudo -u carsten kommando

Den sidste “ALL”, er de kommandoer brugeren har lov til at kører med root privilegier. Jeg har i dette eksempel givet brugeren rettigheder til at genstarte serveren og bruge pakkehåndterings programmet “aptitude”.
kerwood ALL=(ALL) /sbin/reboot, /bin/aptitude

Du kan også være mere specifik vedr. en enkelt kommando. Her må brugeren kun opdater pakke listen og opdater systemet, med aptitude.
kerwood ALL=(ALL) /bin/aptitude update, /bin/aptitude upgrade

For at deaktivere kommandoer istedet for at give rettigheder til dem, skal der ganske enkelt bare være et udråbs tegn foran. I nedenstående eksempel har brugeren rettigheder til alle kommandoer, bortset fra aptitude.
kerwood ALL=(ALL) ALL !/bin/aptitude

Man kan også give hele grupper sudo adgang. For at give gruppen “admin” root privilegier, tilføj et procent tegn, foran gruppen navn. Samme regler gælder for grupper som for brugere.
%admin ALL=(ALL) ALL

Man kan slippe for at lave en linje til hver bruger, hvis de skal have samme privilegier. Man kan tilmed tilføje grupper også.
carsten, preben, %admin, mikkel ALL=(ALL) ALL

Et andet rigtig godt eksempel er dette. Gruppen “admin” har her, rettigheder til at skifte andre brugers password. Men kan ikke skifte root’s. På den måde sikre man sig en enkelt person ikke kan skifte alle, inklusiv roots, passwords ud og overtage serveren.
Kerwood ALL=(ALL) /usr/bin/passwd [A-z]*, !/usr/bin/passwd root

 

Alias

Hvis du har mange brugere på din server, kan det være en fordel at bruger alias’er. Det kan både være til kommandoer og brugere. I eksemplet neden under har jeg lavet et alias til gruppe brugere og et alias til en række kommandoer.

User_Alias ADMINS = carsten, preben, poul
Cmnd_Alias ADMINCMD = /sbin/halt, /bin/aptitude update, /bin/aptitude upgrade

Her har alle brugerne i alias “ADMINS” rettigheder til de kommandoer der er i kommando alias’et “ADMINCMD”
ADMINS ALL=(ALL) ADMINCMD

 

Undgå at skrive dit pass

At skrive sit password, hver gang, kan være lidt trættende i længeden. Det kan man nemt slippe for, ved at tilføje “NOPASSWD:“. Dette er en rigtig lækker feature som jeg synes er fantastisk.
kerwood ALL=(ALL) NOPASSWD: ALL

 

Log ind som root

Vi kender alle sammen “su” kommandoen, for at logge ind som root. Man skal bare kende root’s password. Dette behøves ikke med sudo. Du skal blot “su” med sudo.
sudo su

 

Sikkerhed

Der er selvfølgelig nogle sikkerheds spørgsmål man skal stille sig selv. For hvis man eksempelvis giver en bruger fuld sudo rettigheder, med undtagelse fra at kunne ændre root password. Ja så kan brugeren bare ændre sine egne sudo konfiguration i “sudoers” filen og derefter ændre root password.

Jeg har googlet mig til nogle forskellige metoder, til at sikre sin “sudoers” fil, men jeg synes ikke at de holder vand. I bund og grund skal man tænke sig om inden man giver nogle sudo. Jeg har nogle gange, hvis jeg har haft en bruger der skulle bruge root privilegier, lavet et script, der gjorde det ønskede. Hvor efter jeg gav brugeren rettigheder til at kører scriptet med sudo og ikke andet.

Hvis du selv er i besiddelse af en måde at sikre sin “sudoers” fil, er du meget velkommen til at smide en kommentar.

Jeg har fundet denne tekst fil med en masse rigtig gode sudo eksempler.
Se den her http://linuxbloggen.dk/sudo-eksempler


19 jan 2013   | Alle · Ny til Linux · Programmer

One comment on “Sudo – Super User DO

  1. Pingback: Bash History - LinuxBloggen.dk

Leave a Reply