<?xml version='1.0' encoding="UTF-8"?>
<!DOCTYPE guide SYSTEM "/dtd/guide.dtd">

<!-- $Id: sudo-guide.xml,v 1.4 2012/06/30 18:42:54 swift Exp $ -->

<guide disclaimer="obsolete" lang="nl">

<title>Gentoo Sudo(ers) Gids</title>

<author title="Auteur">
  <mail link="swift@gentoo.org">Sven Vermeulen</mail>
</author>
<author title="Vertaler">
  <mail link="diox@gentoo.org">Dimitry Bradt</mail>
</author>

<abstract>
Als je enkele personen administratieve taken geven op je systeem zonder ze root
toegang te verstrekken, is het gebruiken van sudo de beste oplossing. Met sudo
kun je de rechten an mensen controleren. Deze gids bied je een kleine inleiding
tot dit wonderbare hulpmiddel.
</abstract>

<!-- The content of this document is licensed under the CC-BY-SA license -->
<!-- See http://creativecommons.org/licenses/by-sa/2.5 -->
<license/>

<version>1.6</version>
<date>2006-07-14</date>

<chapter>
<title>Over Sudo</title>
<section>
<title>Rechten toelaten</title>
<body>

<p>
Het <c>app-admin/sudo</c> pakket laat de systeem beheerder toe om rechten toe
te laten aan gebruiken een of meerdere programmas te gebruiken, waar ze normaal
geen rechten op habben. Anders dan bij het gebruik van <e>setuid</e> op deze
programma's, geeft <c>sudo</c> een meer controler over <e>wie en wanneer</e>
een bepaald commando kan uitvoeren.
</p>

<p>
Met <c>sudo</c> kun je een lijst maken met <e>wie</e> een bepaald commando kan
uitvoeren. Moest je het setuid stuk instellen, heeft elke gebruiker de
mogelijkheid hebben (of elke gebruiker van een groep, afhangend van een bepaalde
gebruikte persmissie). Je kunt (en waarshijnlijk zelfs moet) de gebruiker
verplichten een wachtwoord in te voeren wanneer hij een applicatie wil
uitvoeren, en je kan zlefs de permissies fijner instellen aan de hand van de
gebruiker's locatie: ingelogt in het systeem zelfs of door SSH via een plaats
op afstand.
</p>

</body>
</section>
<section>
<title>Log Activiteit</title>
<body>

<p>
Een extra voordeel van <c>sudo</c> is dat het elke poging (succesvol of niet)
een programma te gebruiken, te loggen. Dit is erg handig als je wilt bijhouden
wie een fatale fout heeft gemaakt, die 10 uren heeft in beslag genomen om te
herstellen :)
</p>

</body>
</section>
<section>
<title>Configureren van Sudo</title>
<body>

<p>
De <c>sudo</c> configuratie wordt beheerd door het <path>/etc/sudoers</path>
bestand. Dit bestand zou nooit mogen bewerkt worden met
<c>nano&nbsp;/etc/sudoers</c> of <c>vim&nbsp;/etc/sudoers</c> of enige andere
textverwerker die je graag gebruikt. Wanneer je dit bestand wenst aan te passen,
gebruik je best <c>visudo</c>.
</p>

<p>
Dit hulpprogramma controleert dat er geen twee systeem beheerders dit bestand
aan het aanpassen zijn op het zelfde bestand, op het zelfde bestand, door
rechten op het bestand te controleren en het bied enkele syntax controles om
fatale fouten tegen te gaan.
</p>

</body>
</section>
<section>
<title>Over deze gids</title>
<body>

<p>
Deze gdids is bedoeld voor een snelle inleiding. Het <c>sudo</c> packket is
krachtiger dan beschreven in deze gids. Het heeft speciale eigenschappen voor
het aanpassen van bestanden als een andere gebruiker (<c>sudoedit</c>), starten
van binnen een script (zodat het in de achtergrond kan wekren, het wachtwoord
standaard lezen in plaats van het toetsenbord, ...), enz.
</p>

<p>
Gelieve <c>sudo</c> en <c>sudoers</c> manuale paginas te lezen voor meer
informatie.
</p>

</body>
</section>
</chapter>

<chapter>
<title>Sudoers Syntax</title>
<section>
<title>Basis Syntax</title>
<body>

<p>
Het moeilijkste stuk van <c>sudo</c> is de <path>/etc/sudoers</path> syntax.
De basis syntax is als volgt:
</p>

<pre caption="Basis /etc/sudoers syntax">
gebruiker  computer = commando
</pre>

<p>
De syntax verteld <c>sudo</c> dat de gebruiker, geidentificeert als
<e>gebruiker</e> en ingelogt door het systeem <e>systeem</e> kan de opgesomde
commando's in <e>commandos</e> uitvoeren als root gebruiker. Een meer levensecht
voorbeeld kan dit gemakkelijker maken: laat de gebruiker <e>swift</e> toe om
<c>emerge</c> te gebruiker als hij ingelogt is op het systeem (niet via SSH):
</p>

<pre caption="Live /etc/sudoers voorbeelden">
swift  localhost = /usr/bin/emerge
</pre>

<p>
Een <brite>grote waarschuwing</brite> staat in de plaats, laat een gebruiker
niet toe om een gebruiker een programma uit te voeren die mensen kan toelaten om
de priveleges af te breken. Bijvoorbeeld, door de gebruiker toe te laten
<c>emerge</c> te gebruiken die hen volledig root toegang kan schenken doordat
<c>emerge</c> gemanipuleerd kan worden om de gebruiker volledige beheer te
geven. Als je de <c>sudo</c> gebruikers niet vertrouwd, geef ze dan geen
rechten.
</p>

<!--
  Wrappers are no real advantage here either, see #71750
-->

<p>
De gebruikersnaam kan ook met een groepsnaam worden gesubstitueerd - in dit
geval zou u de groepsnaam met a% teken moeten laten beginnen. Bijvoorbeeld, om
het even wie in de <c>wheel</c> groep toestaan om <c>emerge</c> uit te voeren:
</p>

<pre caption="De wheel groep leden toestaan om emerge te gebruiken">
%wheel  localhost = /usr/bin/emerge
</pre>

<p>
Je kunt deze regel uitbreiden om meerdere commmando's toe te staan (in plaats
van regel per regel een commando toe te staan). Bijvoorbeeld, om bijvoorbeeld
een gebruiker toe te laten <c>emerge</c> uit te voern maar ook <c>ebuild</c> en
<c>emerge-webrsync</c> als root:
</p>

<pre caption="Meerdere commando's">
swift  localhost = /usr/bin/emerge, /usr/bin/ebuild, /usr/sbin/emerge-webrsync
</pre>

<p>
U kunt ook een nauwkeurig commando specificeren en niet alleen het hulpmiddel
zelf. Dit is nuttig om het gebruik van een bepaald hulpmiddel tot een
gespecificeerde reeks bevelopties te beperken. Het <c>sudo</c> hulpmiddel laat
het gebruik van shell-stijl wildcards (meer gekent als meta of glob karakters)
toe in padnamen evenals de argumenten van de commandline in het sudoersbestand.
Merk op dat dit <e>geen</e> regelmatige uitdrukkingen zijn.
</p>

<p>
Laten we dit even testen:
</p>

<pre caption="Probeer het systeem te updaten door gebruik te maken van sudo">
$ <i>sudo emerge -uDN world</i>

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.

Password: <comment>(Voer het wachtwoord in, niet root!)</comment>
</pre>

<p>
Het wachtwoord dat <c>sudo</c> nodig heeft is het gebruikeswachtwoord. Dit is
om te controleren dat geen terminal per ongelijk werd opengelaten en dat
anderen die zouden gebruiken voor slechte doeleinden.
</p>

<p>
Je moet weten dat <c>sudo</c> de <c>${PATH}</c> variabele niet aanpast: alle
commando's die je na <c>sudo</c> plaatst wordt behandeld als van <e>jouw</e>
omgeving. Als je de gebruiker wil toestaan een hulpmiddel uit te voeren in
bijvoorbeeld <path>/sbin</path>, zou hij het volledig pad moeten ingeven:
</p>

<pre caption="Gebruiken van het volledig pad naar een hulpmiddel">
$ <i>sudo /usr/sbin/emerge-webrsync</i>
</pre>

</body>
</section>
<section>
<title>Gerbuik van Aliases</title>
<body>

<p>
Als je in grotere omgevingen alle gebruikers opnieuw en opnieuw moet invoeren
(of hosts/commando&#39;s) kan een vermoeiende taak zijn. Om de administratie
van <path>/etc/sudoers</path> te vergemakkelijken kun je gebruik maken van
aliases. Het formaat om ze te declareren is simpel:
</p>

<pre caption="Declareren van aliases in /etc/sudoers">
Host_Alias hostalias = hostname1, hostname2, ...
User_Alias useralias = user1, user2, ...
Cmnd_Alias cmndalias = command1, command2, ...
</pre>

<p>
Een alias die altijd werkt, voor elke positie, is het <c>ALL</c> alias (om een
goed verschil tussen aliases en niet-aliases te onderscheiden is het aangeraden
hoofdletters te gebruiken voor aliases). Zoals je al kon vermoeden, is de
<c>ALL</c> alias een alias tot alle mogelijke instellingen.
</p>

<p>
Een voorbeeld gebruik van het <c>ALL</c> alias om <e>elke</e> gebruiker toe te
laten het <c>shutdown</c> commando te voeren als hij lokaal is ingelogt:
</p>

<pre caption="Elke gebruiker toestaan shutdown uit te voeren">
ALL  localhost = /sbin/shutdown
</pre>

<p>
Een ander voorbeeld is om de gebruiker <c>swift</c> toe te laten <c>emerge</c>
te gebruiken als root, ongeacht vanwaar hij ingelogt is:
</p>

<pre caption="Een gebruiker toestaan een applicatie te starten ongeacht zijn
locatie">
swift   ALL = /usr/bin/emerge
</pre>

<p>
Meer interresant, is om een groep gebruikers in te stellen die software
administratieve applicaties (zoals <c>emerge</c> en <c>ebuild</c>) kunnen
uitvoeren op het systeem en een groep beheerders die het wachtwoord van
gebruikers kan aanpassen, met uitzondering van het root wachtwoord!
</p>

<pre caption="Using aliases for users and commands">
User_Alias  <i>SOFTWAREMAINTAINERS</i> = swift, john, danny
User_Alias  <i>PASSWORDMAINTAINERS</i> = swift, sysop
Cmnd_Alias  <i>SOFTWARECOMMANDS</i>    = /usr/bin/emerge, /usr/bin/ebuild
Cmnd_Alias  <i>PASSWORDCOMMANDS</i>    = /usr/bin/passwd [a-zA-Z0-9_-]*, !/usr/bin/passwd root

<i>SOFTWAREMAINTAINERS</i>  localhost = <i>SOFTWARECOMMANDS</i>
<i>PASSWORDMAINTAINERS</i>  localhost = <i>PASSWORDCOMMANDS</i>
</pre>

</body>
</section>
<section>
<title>Niet-Root Uitvoering</title>
<body>

<p>
Het is ook mogelijk om een gebruiker een applicatie laten uitvoeren als
niet-root gebruiker. Dit kan erg interresant zijn als je applicaties gebruikt en
start als een andere gebruiker (bijvoorbeeld <c>apache</c> voor de web server)
en je bepaalde gebruikers administratieve taken wilt laten uitvoeren (zoals een
zombie proces stoppen).
</p>

<p>
In <path>/etc/sudoers</path> maak je een lijst van de gebruiker(s) gescheiden
door <c>(</c>&nbsp;and&nbsp;<c>)</c> voor het commando-lijstje:
</p>

<pre caption="Niet-root uitvoer syntax">
gebruikers  hosts = (uitvoeren als) commando&amp;s
</pre>

<p>
Bijvoorbeeld, om <c>swift</c> toe te laten <c>kill</c> uit te voeren als
<c>apache</c> of <c>gorg</c> gebruiker:
</p>

<pre caption="Niet-root uitvoer voorbeeld">
Cmnd_Alias KILL = /bin/kill, /usr/bin/pkill

swift   ALL = (apache, gorg) KILL
</pre>

<p>
Met dit ingesteld, kan de gebruiker <c>sudo&nbsp;-u</c> uitvoeren om een
gebruiker te selecteren die hij wil:
</p>

<pre caption="Uitvoeren van pkill als apache gebruiker">
$ <i>sudo -u apache pkill apache</i>
</pre>

<p>
Je kunt een alias instellen voor de gebruiker om een applicatie uit te voeren
door gebruik te maken van het <c>Runas_Alias</c> richtlijn. Zijn gebruik is
gelijkaardig aan de andere <c>_Alias</c> richtlijnen die we al gezien hebben.
</p>

</body>
</section>
<section>
<title>Wachtwoorden en standaard instellingen</title>
<body>

<p>
Standaard, vraagt <c>sudo</c> de gebruiker om zichzelf te identificeren met zijn
eigen wachtwoord. Eenmaal een wachtwoord is ingevoerd, onthoudt <c>sudo</c> het
voor 5 minuten, die de gebruiker toelaat zich te concentreren op zijn taken en
niet de gebruiker het wachtwoord opnieuw en opnieuw laten invoeren bij elk
commando.
</p>

<p>
Natuurlijk, kan zijn gedrag veranderd worden: je kunt de <c>Defaults:</c>
richtlijn instellen in <path>/etc/sudoers</path> om het standaard gedrag te
veranderen voor een gebruiker.
</p>

<p>
Bijvoorbeeld om de de standaard 5 minuten naar 0 te veranderen (nooit
herrinneren):
</p>

<pre caption="Veranderen van de timeout waarde">
Defaults:swift  timestamp_timeout=0
</pre>

<p>
Instellen op <c>-1</c> zou ervoor zorgen dat het systeem het wachtwoord
herrinnert tot de volgende reboot.
</p>

<p>
Een andere instelling is de mogelijkheid om het wachtwoord van de gebruiker die
het commando zou moeten uitvoeren te vragen en dus niet het persoonlijk
wachtwoord van de gebruiker. Dit kan worden bereikt met <c>runaspw</c>. In het
volgende voorbeeld hebben we ook een maximum aantaal pogingen ingesteld voor het
wachtwoord in te voeren. De standaard waarde 3 werd hier veranderd naar
<c>2</c>.
</p>

<pre caption="Het rootwachtwoord nodig hebben in plaats van het
gebruikerswachtwoord">
Defaults:john   runaspw, passwd_tries=2
</pre>

<p>
Een ander interressante eigenschap is de mogelijkheid om de <c>DISPLAY</c>
variabele zodanig instellen dat hij grafische programma's kan uitvoeren
</p>

<pre caption="De DISPLAY variabele behouden">
Defaults:john env_keep=DISPLAY
</pre>

<p>
Je kunt dozijnen standaard instellingen veranderen door gebruikt emaken van de
<c>Defaults:</c> richtlijn. Start de <c>sudo</c> handleiding pagina (<c>man</c>)
en zoek naar <c>Defaults</c>.
</p>

<p>
Als je een gebruiker wilt toelaten een commando uit te voeren zonder een
wachtwoord te moeten invoeren, moet je het commando laten beginnen met
<c>NOPASSWD:</c>, als volgt:
</p>

<pre caption="swift toelaten emerge uit te voeren als root zonder een wachtwoord
te vragen">
swift     localhost = NOPASSWD: /usr/bin/emerge
</pre>

</body>
</section>
</chapter>

<chapter>
<title>Gebruiken van Sudo</title>
<section>
<title>Een lijst maken van Privileges</title>
<body>

<p>
Om jezelf ervan te informeren wat je mogelijkheden zijn, voer
<c>sudo&nbsp;-l</c> uit:
</p>

<pre caption="Een lijst van je mogelijkheden maken">
$ <i>sudo -l</i>
De gebruiker swift kan de volgende commando&amp;s uitvoeren op deze host:
    (root)   /usr/libexec/xfsm-shutdown-helper
    (root)   /usr/bin/emerge
    (root)   /usr/bin/passwd [a-zA-Z0-9_-]*
    (root)   !/usr/bin/passwd root
    (apache) /usr/bin/pkill
    (apache) /bin/kill
</pre>

<p>
Als enig commando in <path>/etc/sudoers</path> je niet nodig acht een wachtwoord
in te voeren, zal het ook geen wachtwoord vragen als je een lijst wil van je
mogelijkheden. In het andere geval kan je wachtwoord gevraagd worden als die
niet werd herrinnerd.
</p>

</body>
</section>
<section>
<title>Verlengen van de wachtwoord timeout tijd</title>
<body>

<p>
Standaard wordt het wachtwoord 5 minuten herrinnerd, als een gebruiker die heeft
ingevoerd om zicht te identificeren met <c>sudo</c>. Als de gebruiker die tijd
wil verlengen kan hij <c>sudo&nbsp;-v</c> uitvoeren om de tijd te resetten,
sudo zal pas binnen 5 minuten vragen je wachtwoord opnieuw in te voeren.
</p>

<pre caption="Verlengen van de wachtwoord timeout tijd">
$ <i>sudo -v</i>
</pre>

<p>
Het tegenover gestelde is het stoppen ven de tussen tijd, die je kan bereiken
met <c>sudo&nbsp;-k</c>.
</p>

</body>
</section>
</chapter>
</guide>
