the comprehensive guide to Master Sudoers File.

Harsa Koushik

Volgen

Apr 18, 2020 · 10 min lezen

Wat is de Sudoers File?

Het Sudoers-bestand is net als elk ander bestand op het Linux-besturingssysteem., Maar het speelt een vitale rol in het beheer van wat een “gebruiker” of “gebruikers in een groep” kan doen op het systeem.

waarom de naam Sudoers?

Het woord Sudo is de afkorting van de term “Super User Do”. Zoals het duidelijk suggereert-het is net als het vertellen van de Kernel / OS “je hebt geen keuze, Doe het gewoon!”. Dus de gebruikers met Sudo toestemming worden genoemd als Sudo-gebruikers. Beheer van al deze sudo-gebruikers wordt gedaan door middel van een bestand genaamd Sudoers-bestand. Dit bestand bevindt zich ook in de /etc directory, net als elk ander configuratiebestand.,

Image-1. Sudoers bestand in / etc directory. Besturingssysteem: Kali Linux 2019.4

waarom Sudoers-bestand?

een normale gebruiker op Linux zal veel beperkingen in het systeem hebben. Bijvoorbeeld-de gebruiker zal niet in staat zijn om een service te starten, een configuratiebestand te wijzigen of een script uit te voeren op het systeem standaard. Vanuit een veiligheidsperspectief ziet dit er perfect uit.,

maar, laten we een voorbeeld nemen van — u als systeembeheerder moet alle gebruikers en hun besturingselementen beheren. U hebt een website gehost op Apache in een van uw servers. Je hebt al een Web-Admin om het te beheren. Een gebruiker moet voor hem worden gemaakt op de Web-Server. Deze gebruiker zou twee dingen moeten kunnen doen die een normale gebruiker niet kan :

  • start/herstart Apache Service in het geval het stopt.
  • Bewerk Het configuratiebestand van Apache.

u hebt standaard twee gebruikersopties:

  1. Root gebruiker die alle rechten op het systeem heeft, inclusief Apache.,
  2. een normale gebruiker, die standaard niet in staat zal zijn om een Service te starten of configuratiebestanden op het systeem te bewerken.

Dit is wanneer een sudoers-bestand handig voor u zal zijn. In Sudoers bestand kunnen we precies definiëren:

  • Web-Admin gebruiker kan alleen Apache Service starten &
  • hij kan alleen Apache configuratiebestand bewerken.

spelen met het Sudoers bestand

genoeg theorie, we zullen nu beginnen met het echte werk. Ik zal uitleggen elke sectie in Sudoers bestand met een aantal voorbeelden., Standaard ziet een Sudoers —bestand er zo uit-

Image-2. Onuitgegeven Sudoers Dossier. Besturingssysteem: Kali Linux 2019.4

voornamelijk kunnen we vijf secties in het bestand zien — de eerste drie secties in het bestand zijn gerelateerd aan ALIAS van Host, gebruiker en Cmnd., We zullen het later over ALIAS hebben, laten we het eerst hebben over de core sectie:

#User Privilege Specification

root ALL = (ALL:ALL) ALL

opmerking: ‘#’ geeft commentaar in het bestand aan, OS zal deze regel negeren tijdens het uitvoeren.,gebruik : User <spatie >OnHost = (Runas-User:Group)< spatie >commando ‘ s

voorbeeld: root ALL = (All:All) All

Lees het als — gebruiker root kan elk commando uitvoeren als elke gebruiker van elke groep op elke host.

→ de eerste ALL wordt gebruikt om HOSTS te definiëren. We kunnen hostnaam/Ip-adres definiëren in plaats van alle. Alles betekent elke gastheer.

→ tweede alles: derde alles is Gebruiker: Groep., In plaats van alles kunnen we Gebruiker of gebruiker definiëren met de groep zoals gebruiker: groep. ALL: ALL betekent alle gebruikers en alle groepen.

→ Last ALL is het commando. In plaats van alle, kunnen we een commando of set commando ‘ s definiëren. Alles betekent alle commando ‘ s.

om het heel eenvoudig te stellen, het is”who where = (as_whom) what”.

opmerking: de meeste mensen begrijpen HOSTS als hosts op afstand. Het is de lokale hostnaam / IP-adres., HOSTS veld zal zelden gebruikt worden, als je meer wilt weten over HOSTS in Sudoers, zie dan → https://www.sudo.ws/man/1.7.10/sudoers.man.html

in principe kunnen we een gebruiker toestaan om iets op slechts twee manieren te doen —

  1. geef hem direct de toestemming om het commando uit te voeren door de toestemming van het bestand te wijzigen.
  2. laat hem het commando uitvoeren als een andere gebruiker die al de rechten heeft om dit commando uit te voeren.

in het Sudoers-bestand zullen we de laatste implementeren.,

We zullen een ander voorbeeld gebruiken om de velden in de syntaxis duidelijk te begrijpen:

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

Lees dit als — gebruiker “sysadmin” kan het commando “/usr/bin/cat /etc/shadow” als ROOT gebruiker uitvoeren op alle HOSTS.

hier in het bovenstaande voorbeeld, in de sectie Commando — ik heb iets meer dan een commando toegevoegd, Dit is om de flexibiliteit van Sudoers-bestand te tonen. Het deel “/usr / bin / cat ” is een binair uitvoerbaar bestand of commando dat gebruikt wordt om de inhoud van een bestand te bekijken., Het deel ” / etc / shadow “is een vertrouwelijk bestand dat wachtwoorden opslaat, dus het betekent dat de gebruiker” sysadmin “alleen” /usr/bin/cat “kan uitvoeren op” /etc/shadow ” bestand, als deze gebruiker probeert de inhoud van een ander bestand te bekijken waarop hij geen leesrechten heeft, zal hij dat niet kunnen.,

syntaxis van Sudo commando: sudo <Commando>

voorbeeld: sudo cat /etc/shadow

nu als de gebruiker “sysadmin” sudo gebruikt voor een commando, zal os hem eerst het gebruikerswachtwoord vragen, het wachtwoord verifiëren en vervolgens naar sudoers-bestand gaan en controleren of hij dit commando als elke gebruiker mag uitgeven. Als hij is toegestaan — succes, anders zal het rapporteren een van deze twee dingen —

→ gebruiker is niet in het Sudoers bestand. Dit incident zal worden gemeld.,

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

Hier mag de WebAdmin van de gebruiker alleen”cat /etc/shadow” uitvoeren. Maar hij probeerde het commando ‘cat’ uit te voeren op “/etc/gshadow” wat niet is toegestaan.

aangezien we genoeg grip hebben op de velden in de syntaxis van Sudoers-bestand, Laten we verder gaan en andere secties in het bestand begrijpen. Alle andere secties zullen afhangen van de kern sectie die we al besproken.,

de volgende sectie is GROEPSSECTIE, die

#toestaan dat leden van groep sudo elk commando uitvoeren

%sudo ALL = (ALL:ALL) ALL

percentiel symbool ‘%’ wordt gebruikt om een groep in Sudoers-bestand te vertegenwoordigen. Alle velden en hun functionaliteiten in deze sectie zijn precies hetzelfde als besproken in de vorige sectie — de gebruikers sectie. We kunnen dezelfde Sudo — Privileges aan een groep in plaats van een gebruiker toewijzen door de groepsnaam op te geven – %<groepsnaam>., Dus alle leden in de groep zullen dezelfde privileges erven die aan de groep worden gegeven.

standaard bestaat er een SUDO-groep gedefinieerd in het Sudoers-bestand. We kunnen zien dat deze machtigingen precies hetzelfde zijn als ROOT gebruikers machtigingen in het bestand. Dus als een gebruiker lid is van deze SUDO groep, kan hij alle commando ‘ s uitvoeren die een ROOT gebruiker kan uitvoeren.

laten we een aangepaste groep definiëren en de syntaxis beter begrijpen. Laten we hetzelfde oude systeembeheerder voorbeeld om dit te doen. Neem aan dat het nee is. van de medewerkers zijn nu meer, dus de systeembeheerders zijn nu 3., Elk van deze hebben dezelfde exacte machtigingen nodig die we aan de eerste systeembeheerder hadden gegeven. Een ding dat we kunnen doen om dit te bereiken is drie ingangen hebben voor alle drie de systeembeheerders in het Sudoers bestand. Als we deze aanpak volgen, beledigen we de mogelijkheden van een Sudoers-bestand.

het beste is om alle drie systeembeheerders te groeperen in een groep genaamd ‘SystemAdminGroup’., We zullen de vereiste permissies voor deze groep definiëren met –

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

nu kunnen alle drie de beheerders het geprivilegieerde commando uitvoeren. We deden dit in één keer met behulp van de Groepsdefinitie.

Sudoers bestand is in staat om dit hele proces efficiënter te maken met behulp van verschillende functionaliteiten. De eerste drie secties-aliassen worden gebruikt om dit te bereiken., Zoals het woord al suggereert, gebruiken we een ALIAS voor iets dat we in het hele bestand kunnen gebruiken, het is net als een globale variabele in een Script. Hoe maakt dit alles efficiënter? We kunnen set commando ‘s, hosts en gebruikers in één regel definiëren, we wijzen deze regel toe aan een ALIAS naam, deze alias zal gebruikt worden wanneer en waar nodig zonder alle commando’ s/hosts/gebruikers opnieuw te definiëren.

Ik wil nog een ALIAS toevoegen die standaard niet in het Sudoers-bestand staat, namelijk “Run_as ALIAS”., Nu hebben we vier aliassen —

  1. User ALIAS als User_Alias
  2. Run-As ALIAS als Runas_Alias
  3. Host ALIAS als Host_Alias
  4. commando ALIAS als Cmnd_Alias

opmerking : Alias naam moet worden gedefinieerd in hoofdletters en kan nummer, alfabet en underscore bevatten (_). Alias naam moet beginnen met alfabet.,3e”>