den omfattande guiden för att behärska Sudoers-filen.

Harsha Koushik

följ
18 Apr 2020 · 10 min läs

div >

Vad är sudoers-filen?

Sudoers-filen är precis som alla andra filer på Linux-operativsystemet., Men det spelar en viktig roll för att hantera vad en ”användare” eller ”användare i en grupp” kan göra på systemet.

Varför namnet Sudoers?

ordet Sudo är förkortningen för termen ”superanvändare gör”. Som det tydligt föreslår — det är precis som att berätta kärnan / OS ” du har inget val, gör det bara!”. Så användarna med sudo-behörighet kallas som Sudo-användare. Hantering av alla dessa sudo-användare görs via en fil som kallas sudoers-fil. Den här filen lever också i katalogen / etc precis som alla andra konfigurationsfiler.,

Bild-1. Sudoers fil i / etc katalog. Operativsystem : Kali Linux 2019.4

Varför Sudoers Fil?

en vanlig användare på Linux kommer att ha många begränsningar i systemet. Till exempel-användaren kommer inte att kunna starta en tjänst, ändra en konfigurationsfil eller köra ett skript på systemet som standard. Ur ett säkerhetsperspektiv ser det perfekt ut.,

men låt oss ta ett exempel på — du som systemadministratör måste hantera alla användare och deras kontroller. Du har en webbplats värd på Apache i en av dina servrar. Du har redan en web-Admin för att hantera det. En användare ska skapas för honom på webbservern. Denna användare bör tillåtas att göra två saker som en vanlig användare inte kan:

  • starta / starta Apache-tjänsten om den stannar.
  • redigera konfigurationsfilen för Apache.

Du har två användaralternativ som standard:

  1. Root-användare som har alla behörigheter på systemet inklusive Apache.,
  2. en vanlig användare, som som standard inte kommer att kunna starta en tjänst eller redigera några konfigurationsfiler på systemet.

det här är när en sudoers-fil kommer att vara till nytta för dig. I sudoers-filen kan vi exakt definiera:

  • Web-Admin-användaren kan bara starta Apache-tjänsten&
  • han kan bara redigera Apache-konfigurationsfilen.

spelar med sudoers-filen

tillräckligt med teori, vi börjar göra riktiga saker nu. Jag kommer att förklara varje avsnitt i Sudoers-filen med några exempel., Som standard ser en Sudoers —fil ut så här –

Image-2. Oredigerad Sudoers Fil. Operativsystem: Kali Linux 2019.4

i första hand kan vi se fem avsnitt i filen — de tre första avsnitten i den fil som är relaterade till ALIAS för Värd, Användarnamn och Cmnd., Vi kommer att prata om ALIAS senare, låt oss först prata om kärnsektionen:

#user Privilege Specification

root ALL = (ALL:ALL) ALL

OBS: ’#’ indikerar kommentar i filen, OS kommer att ignorera den här raden när du kör.,

Syntax : User<space> OnHost = (Runas-User:Group)<space> kommandon

exempel: root ALL = (alla:alla) alla

<space > kommandon

exempel: root ALL = (alla: alla: alla ”1ffdf0e914” >

Läs det som — användarrot kan köra vilket kommando som helst från vilken grupp som helst på vilken värd som helst.

→ först används allt för att definiera värdar. Vi kan definiera värdnamn / Ip-adress istället för alla. ALLA betyder något värd.

→ ALLA Andra, Tredje ALLA Användare:Koncernen., I stället för allt kan vi definiera användare eller användare med gruppen som Användare: Grupp. Allt: allt betyder alla användare och alla grupper.

→ sist allt är kommandot. I stället för allt kan vi definiera ett kommando eller en uppsättning kommandon. Alla betyder alla kommandon.

för att uttrycka det väldigt enkelt är det ”vem var = (as_whom) vad”.

Obs: de flesta människor förstår värdar som fjärrvärdar. Det är den lokala värdnamnet / IP-adressen., VÄRDFÄLTET används sällan, om du vill veta mer om värdar i Sudoers, se → https://www.sudo.ws/man/1.7.10/sudoers.man.html

i grund och botten kan vi tillåta en användare att göra något på bara två sätt —

  1. ge honom direkt behörighet att utföra kommandot genom att ändra filens tillstånd.
  2. Tillåt honom att utföra kommandot som en annan användare som redan har behörighet att utföra detta kommando.

i sudoers-filen kommer vi att implementera den senare.,

Vi kommer att använda ett annat exempel för att tydligt förstå fälten i syntaxen:

exempel : sysadmin ALL = (root)/usr/bin /cat/etc/shadow

Läs detta som användare ”sysadmin” kan köra kommandot ”/usr/bin /cat/etc / shadow” som ROOT — användare på alla värdar.

här i exemplet ovan, i kommandoavsnittet — jag har lagt till något mer än ett kommando, det här är för att visa flexibiliteten hos Sudoers-filen. Delen ”/ usr / bin / cat ” är en binär körbar eller kommando som används för att visa innehållet i en fil., Delen ”/ etc / shadow ” är en konfidentiell fil som lagrar lösenord, så det betyder att användaren ”sysadmin” kan bara köra ”/usr/bin/cat” på ”/etc/shadow” – fil, om den här användaren försöker visa innehållet i någon annan fil som han inte har några läsbehörigheter på, kommer han inte att kunna.,

Syntax för sudo command: sudo<command>

exempel: sudo cat /etc/shadow

Nu om användaren ”sysadmin” använder sudo innan varje kommando, OS kommer först att fråga honom användarlösenordet, verifierar lösenordet och går sedan till sudoers-filen och kontrollerar om han får utfärda det här kommandot som någon användare. Om han är tillåten — framgång, annars kommer det att rapportera tillbaka en av dessa två saker –

→ användaren är inte i sudoers-filen. Denna incident kommer att rapporteras.,

Note : You can see this reported incident in /var/log/auth.log

Image-3. Incident Report — Sudoers. Operating System: Kali Linux 2019.,4

→Sorry, user <username> is not allowed to execute <command> as <User> on <hostname>

Image-4. Cannot Execute Command in Sudoers. Operating System: Kali Linux 2019.,4

Här får användaren webadmin endast köra ”cat/etc / shadow”. Men han försökte köra ” cat ”- kommandot på ”/ etc / gshadow ” vilket inte är tillåtet.

eftersom vi har tillräckligt med grepp om fälten i syntaxen för Sudoers-filen, låt oss gå framåt och förstå andra avsnitt i filen. Alla andra avsnitt kommer att bero på kärndelen som vi redan diskuterade.,

nästa avsnitt är GRUPPSEKTIONEN, som är

#Tillåt medlemmar i grupp sudo att utföra ett kommando

%sudo ALL = (ALL:ALL) alla

Percentilsymbol ’%’ används för att representera en grupp i Sudoers-filen. Alla fält och deras funktioner i det här avsnittet är exakt samma som diskuterats i föregående avsnitt — användarsektionen. Vi kan tilldela samma sudo-behörighet till en grupp istället för en användare genom att ange gruppnamnet – %<gruppnamn>., Så alla medlemmar i gruppen kommer att ärva samma privilegier som ges till gruppen.

som standard finns det en SUDO-grupp definierad i sudoers-filen. Vi kan se dessa behörigheter är exakt samma som ROOT-användare behörigheter i filen. Så om en användare är medlem i denna SUDO-grupp kan han utföra alla kommandon som en rotanvändare kan utföra.

låt oss definiera en egen grupp och förstå syntaxen tydligare. Låt oss ta samma gamla System Admin exempel för att göra det. Anta Nej. av anställda är mer nu, så systemadministratörerna är 3 nu., Var och en av dessa behöver samma exakta behörigheter som vi hade gett till den första systemadministratören. En sak vi kan göra för att uppnå detta är att ha tre poster för alla tre systemadministratörer i Sudoers-filen. Om vi går med detta tillvägagångssätt förolämpar vi funktionerna i en Sudoers-fil.

det bästa du kan göra är att gruppera alla tre systemadministratörer i en grupp som heter SystemAdminGroup., Vi kommer att definiera nödvändiga behörigheter för denna grupp med —

%SystemAdminGroup ALL = (root) /usr/bin/cat /etc/shadow

Nu kan alla tre administratörer utföra det privilegierade kommandot. Vi gjorde detta på en gång med Gruppdefinitionen.

Sudoers-filen kan göra hela processen effektivare med olika funktioner. De tre första sektionerna — Alias används för att uppnå detta., Som ordet redan föreslår använder vi ett ALIAS till något som vi kan använda i hela filen, det är precis som en GLOBAL variabel i ett skript. Hur gör det hela mer effektivt? Vi kan definiera uppsättning kommandon, värdar och användare i en rad, vi tilldelar den här raden till ett aliasnamn, det här aliaset kommer att användas när och var som helst utan att definiera alla kommandon/värdar/användare igen.

Jag vill inkludera ytterligare ett ALIAS som inte är listat i Sudoers-filen som standard vilket är ”Run_as ALIAS”., Nu har vi fyra Alias —

  1. Användarias som User_Alias
  2. Kör-som ALIAS som Runas_Alias
  3. värd ALIAS som Host_Alias
  4. kommando ALIAS som Cmnd_Alias

notera : Alias namn ska definieras i versaler och kan innehålla nummer, alfabet och understreck (_). Alias namn måste börja med alfabetet.,3E”>

ALIAS namn> = <användarnamn>,<användarnamn>, <användarnamn<id = ”b5a0db03e4″>

exempel: user_alias sysadmins=John,Tim,tom

användning: sysadmins all = (Root)/usr/bin /cat/etc/shadow

om jag vill ha en uppsättning sudo — behörigheter definierade för användarna-John, Tim och Tom, behöver jag inte definiera det tre gånger, istället kan jag definiera ett alias och använd det här aliasnamnet när du delegerar sudo-åtkomsten till dem.,

Image-5. User Alias in Sudoers File. Operating System: Kali Linux 2019.,figcaption>

Run As ALIAS Syntax —

Runas_Alias <ALIAS Name> =<username>,<username>,<username>…

Example: Runas_Alias MGRS = root,sradmin

Usage: systemadmin ALL = (MGRS) /usr/bin/cat /etc/shadow

If i want to define the set of users a user can run a command as, i can use Runas_Alias., Bli inte förvirrad här, kom bara ihåg mästaren mantra-vem var = (as_whom) vad. Vi använder ett alias här för att inkludera Nej. av användare i fältet ”as_whom”.

Bild-6. Runas Alias i Sudoers Fil. Operativsystem: Kali Linux 2019.,4

Värd ALIAS Syntax —

Användning: systemadmin VÄRDAR = (rot) /usr/bin/cat /etc/shadow

Om jag behöver definiera uppsättning av värdnamn, ip-adresser eller ip-adressintervall som en användare har rätt att utfärda de Privilegierade/Sudo-kommandon, jag kan uppnå detta med hjälp av Värd Alias. Återigen hör den här delen till fältet ”var” i Huvudfrasen.

Bild-7. Värd Alias i sudoers fil., Operativsystem: Kali Linux 2019.,iv id=”1ffdf0e914″>

Cmnd_Alias <ALIAS Name> = <cmd1>,<cmd2>, <cmd3>…

Example: Cmnd_Alias SYSADMIN = /usr/sbin/apache2, /usr/bin/cat

Usage: systemadmin ALL = (root) SYSADMIN

If i need to permit a user to execute a set of commands as SUDO, i can define them under a Cmnd_Alias Section and use this ALIAS name while delegating the access., Denna del tillhör fältet ” vad ” i Huvudfrasen.

Bild-8. Cmnd Alias i Sudoers Fil. Operativsystem: Kali Linux 2019.4

NOPASSWD Mode:

detta är ytterligare en speciell funktion i Sudoers som gör det möjligt för en användare i Sudoers-filen att utföra ett privilegierat kommando utan att ange lösenordet., Det här är mycket användbart när man kör automatiserade skript i systemet som en vanlig användare, skriptet kan behöva utföra ett privilegierat kommando. Men vi vet redan vad som händer om någon användare använder SUDO, han måste ange sitt lösenord!

Kom ihåg att även om det är ett skript eller en process, ska den köras som en användare, kan den inte köras på egen hand.

alla automatiska skript är inte tillräckligt intelligenta för att ange lösenord när du uppmanas. Men det är möjligt att automatiskt ange lösenord. Låt oss för närvarande inte tänka på intelligenta skript., Så för att avsluta kan ett privilegierat kommando användas av en användare utan att ange lösenordet.

Exempel på ett skript som behöver NOPASSWD: Handledare i Linux.Vi kommer att diskutera om handledare i en annan artikel.

Syntax : sysadmin ALL = (root) NOPASSWD:/usr/sbin/apache2

Parameteruteslutning i alias

Vi kan också lägga till parametrar som bör uteslutas i alias. Till exempel –

User_Alias EXCEPT_ROOT = ALL, !,root

sysadmin ALL = (EXCEPT_ROOT) /usr/sbin/apache2

denna User_Alias kan användas för att se till att en användare kan utföra det angivna kommandot som ”alla användare utom ROOT”.

denna typ av uteslutning kan göras i alla alias, inte bara User_Alias. I alla ALIAS är uteslutningssyntaxen densamma.

hantering sudoers fil med omsorg

nu måste du ha förstått vad en Sudoers fil kan göra och hur viktigt det är att hantera filen med försiktighet. Linux implementerar redan en mekanism för att se till att Sudoers-filen hanteras korrekt.,

det rekommenderas alltid att inte redigera/etc / sudoers-filen direkt. Det finns ett verktyg som kallas ”visudo”. Detta används för att säkert göra ändringar i en sudoers-fil. När du redigerar sudoers fil med visudo, visudo har en inbyggd funktionalitet för att kontrollera syntaxen innan du sparar filen, om du gör ett misstag kommer det omedelbart peka ut raden där syntax inte är korrekt. Denna funktionalitet av visudo kommer att förhindra att orsaka oavsiktlig skada på filen och systemet.

slutsats:

Sudoers fil spelar alltid en viktig roll i Användarkontrollhantering., Även om det finns många sätt att hantera och kontrollera vad en användare kan och inte kan göra på systemet, Sudoers metod kommer alltid att vara effektiv och robust nog att hantera och kontrollera alla Nej. av användare. En annan metod som liknar detta som är värt att nämna är SUID och SGID. Vi kommer att prata om SUID och SGID i en annan artikel.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *