14 maart 2019 LET OP: Dit wiki-artikel wordt aanzienlijk herschreven omdat het veel oud, gedateerd en mogelijk dubieus materiaal bevat. Voorzichtigheid is geboden en overleg met anderen op de Ubuntu Forums of Ask Ubuntu is sterk aanbevolen! |
Note: Voor hulp bij het configureren van sudo-privileges via het configuratiebestand /etc/sudoers, zie Sudoers.
Achtergrondinformatie
In Linux (en Unix in het algemeen) is er een SuperUser met de naam root. Het Windows equivalent van root is de Administrators groep. De SuperUser kan alles en iedereen, en dus kan het gevaarlijk zijn om dagelijks werk als SuperUser te doen. Je zou een commando verkeerd kunnen intypen en het systeem vernietigen. In het ideale geval draait u als een gebruiker die alleen de rechten heeft die nodig zijn voor de taak die u uitvoert. In sommige gevallen is dat noodzakelijkerwijs root, maar meestal is dat een gewone gebruiker.
Het wachtwoord van het root-account is standaard vergrendeld in Ubuntu. Dit betekent dat u niet direct kunt inloggen als root of het su commando kunt gebruiken om de root gebruiker te worden. Echter, omdat de root account fysiek bestaat is het nog steeds mogelijk om programma’s te draaien met root-level privileges. Dit is waar sudo om de hoek komt kijken – het staat geauthoriseerde gebruikers toe (normaal gesproken “Administratieve” gebruikers; voor meer informatie, zie AddUsersHowto) om bepaalde programma’s als root te draaien zonder dat ze het root wachtwoord hoeven te kennen.
Dit betekent dat je in de terminal sudo moet gebruiken voor commando’s die root privileges vereisen; voeg gewoon sudo toe aan alle commando’s die je als root moet uitvoeren. Voor meer uitgebreide gebruiksvoorbeelden, zie hieronder. Op dezelfde manier, wanneer je GUI programma’s draait die root privileges vereisen (bv. de netwerk configuratie applet), gebruik dan grafische sudo en je zal ook om een paswoord gevraagd worden (meer hieronder). Onthoud, wanneer sudo om een wachtwoord vraagt, heeft het JOUW USER wachtwoord nodig, en niet het root account wachtwoord.
Bedenk wel dat een groot aantal Ubuntu gebruikers nieuw zijn met Linux. Er is een leercurve verbonden aan elk OS en veel nieuwe gebruikers proberen een sluiproute te nemen door de root account in te schakelen, in te loggen als root, en het eigendom van systeembestanden te wijzigen.
Voorbeeld: Gebroken systeem door (ab)gebruik van root door een nieuwe gebruiker
Let op: Op het moment van de post was dit het eerste bericht van de gebruiker op de Ubuntu forums. Hoewel sommigen dit een “leerervaring” zouden kunnen noemen, is leren door je systeem kapot te maken frustrerend en kan resulteren in data verlies.
Wanneer u advies geeft op de Ubuntu-forums en IRC, neem dan de tijd om “de basis” te leren, zoals eigendom, machtigingen, en hoe sudo / gksu / kdesudo te gebruiken op zo’n manier dat nieuwe gebruikers geen systemen breken.
Voordelen en Nadelen
Voordelen van het gebruik van sudo
Er zijn een aantal voordelen aan Ubuntu die root-logins standaard uitgeschakeld laat, waaronder:
- Het installatieprogramma hoeft minder vragen te stellen.
- Gebruikers hoeven geen extra wachtwoord te onthouden voor incidenteel gebruik (d.w.z. het root wachtwoord). Als ze dat wel zouden doen, zouden ze het waarschijnlijk vergeten (of het op een onveilige manier opslaan, waardoor iedereen gemakkelijk in hun systeem zou kunnen inbreken).
-
Het voorkomt standaard de “ik kan alles doen”-interactieve aanmelding. U wordt om een wachtwoord gevraagd voordat u grote wijzigingen kunt doorvoeren, waardoor u zou moeten nadenken over de gevolgen van wat u doet.
-
sudo voegt een logboekvermelding toe van de uitgevoerde opdracht(en) (in /var/log/auth.log). Als u een fout maakt, kunt u teruggaan en zien welke commando’s zijn uitgevoerd.
-
Op een server weet iedere cracker die zich een weg naar binnen probeert te forceren dat er een account met de naam root is en zal deze als eerste proberen. Wat ze niet weten, is wat de gebruikersnamen van de andere gebruikers zijn. Aangezien het wachtwoord van de root-account is vergrendeld, is deze aanval in wezen zinloos, omdat er geen wachtwoord is om te kraken of te raden.
- Maakt eenvoudige overdracht van beheerdersrechten mogelijk door gebruikers aan groepen toe te voegen en uit groepen te verwijderen. Als u een enkel root-wachtwoord gebruikt, is de enige manier om gebruikers hun rechten te ontnemen, het wijzigen van het root-wachtwoord.
- Sudo kan worden ingesteld met een veel fijnmaziger beveiligingsbeleid.
- Het root-wachtwoord hoeft niet te worden gedeeld met iedereen die een of andere administratieve taak op het systeem moet uitvoeren (zie de vorige bullet).
- De authenticatie verloopt automatisch na een korte tijd (die zo kort kan worden ingesteld als gewenst of 0); dus als je wegloopt van de terminal na het uitvoeren van commando’s als root met sudo, laat je niet voor onbepaalde tijd een root terminal open staan.
Nadelen van het gebruik van sudo
Hoewel voor desktops de voordelen van het gebruik van sudo groot zijn, zijn er toch mogelijke problemen die opgemerkt moeten worden:
-
Het omleiden van de uitvoer van commando’s die met sudo worden uitgevoerd vereist een andere aanpak. Denk bijvoorbeeld aan sudo ls > /root/somefile zal niet werken omdat het de shell is die probeert naar dat bestand te schrijven. Je kan ls | sudo tee -a /root/somefile gebruiken om toe te voegen, of ls | sudo tee /root/somefile om de inhoud te overschrijven. Je kan ook het hele commando doorgeven aan een shell proces onder sudo om het bestand te laten schrijven met root permissies, zoals sudo sh -c “ls > /root/somefile”.
- In veel kantooromgevingen is de ENIGE lokale gebruiker op een systeem root. Alle andere gebruikers worden geïmporteerd met behulp van NSS-technieken zoals nss-ldap. Om een werkstation in te stellen, of te repareren, in het geval van een netwerkstoring waarbij nss-ldap kapot is, is root nodig. Dit heeft de neiging om het systeem onbruikbaar te maken, tenzij het gekraakt wordt. Een extra lokale gebruiker, of een ingeschakeld root-wachtwoord is hier nodig. De lokale gebruikersaccount moet zijn $HOME op een lokale schijf hebben, _niet_ op NFS (of een ander netwerkbestandssysteem), en een .profile/.bashrc die niet verwijst naar bestanden op NFS mounts. Dit is meestal het geval voor root, maar als je een niet-root rescue account toevoegt, zul je deze voorzorgsmaatregelen handmatig moeten nemen. Het voordeel van het gebruik van een lokale gebruiker met sudo is echter dat commando’s gemakkelijk te traceren zijn, zoals vermeld in de voordelen hierboven.
Gebruik
- Wanneer je sudo gebruikt, wordt je wachtwoord standaard 15 minuten bewaard. Na die tijd moet je je wachtwoord opnieuw invoeren.
-
Uw wachtwoord wordt niet op het scherm getoond terwijl u het typt, zelfs niet als een rij sterretjes (******). Het wordt bij elke toetsaanslag ingevoerd!
sudo
Om sudo op de commandoregel te gebruiken, laat je het commando voorafgaan door sudo, zoals hieronder: Voorbeeld #1
sudo chown bob:bob /home/bob/*
Voorbeeld #2
sudo /etc/init.d/networking restart
Om het laatst ingevoerde commando te herhalen, maar dan met sudo als voorvoegsel, voer je uit:
sudo !!
Grafische sudo
Je moet nooit normale sudo gebruiken om grafische toepassingen te starten als root. Het gebruik van sudo met grafische toepassingen heeft het potentieel om je omgeving te corrumperen door root eigenaar te laten worden van en/of permissies te laten wijzigen op kritieke bestanden die je moet bezitten. Op de forums verschijnen regelmatig paniekerige verzoeken om hulp van gebruikers die niet meer kunnen inloggen na het draaien van grafische toepassingen onder sudo.
Merk op dat veel websites en oude threads het gebruik van gksu adviseren. Dergelijke zoekresultaten zijn echter verouderd. gksudo is al jaren niet meer geupdate en is zelfs niet meer beschikbaar in Bionic (18.04) en hoger. gksu is vervangen door pkexec, maar zelfs pkexec wordt afgeschreven door de mainline Ubuntu ontwikkelaars. Zij hebben het standpunt ingenomen dat het manipuleren en bewerken van bestanden onder root moet worden beperkt tot de opdrachtregel.
We kunnen alleen maar gissen naar de motieven achter deze beslissing: misschien zijn er gewoon te veel gebruikers die problemen ondervinden met het draaien van grafische apps als root. Hoe dan ook, het draaien van grafische apps als root vereist nu workarounds en extra stappen.
Smaakspecifieke workarounds
Er zijn een aantal smaakspecifieke opties om grafische toepassingen als root te draaien:
-
U kunt pkexec gebruiken op die smaken die deze optie ondersteunen. Vanaf 18.04 ondersteunt alleen Xubuntu deze optie standaard, zoals te zien is in de volgende voorbeelden:
-
pkexec thunarpkexec mousepad /etc/fstab
-
-
Kubuntu biedt standaard eenvoudige toegang tot een root-bestandsbeheerder: KDE Launcher → Computer → Root-Dolphin
-
Van daaruit: (→ Bestand bewerken) wordt een root-bestand van Kate geopend.
-
-
Mainline Ubuntu en Gnome gebruiken Nautilus als hun bestandsbeheerder. In elke smaak waarin Nautilus wordt gebruikt, kun je het pakket nautilus-admin installeren, waarmee twee python-extensies aan Nautilus worden toegevoegd. Deze extensies voegen opties toe die root toegang mogelijk maken: Openen als Administrator en Bewerken als Administrator
-
Het is ook mogelijk om de ontbrekende Policykit-bestanden voor zowel Nautilus als Gedit te installeren. Zie deze site voor instructies en links. Een goed geïnformeerde gebruiker zou nog meer Policykit-bestanden kunnen bouwen voor alternatieve bestandsbeheerders en -editors door de gekoppelde bestanden als sjablonen te gebruiken. Het zijn eenvoudige XML-bestanden die met een standaard teksteditor kunnen worden bewerkt.
-
Algemene workarounds
De volgende methoden werken op alle smaken:
- Gebruik de opdrachtregel. Eenvoudige tekst editors zoals nano zijn vrij eenvoudig te leren. Als je de voorkeur geeft aan een quasi-grafische bestandsbeheerder, installeer dan Midnight Commander. Beide programma’s draaien zonder problemen onder sudo. Voorbeelden:
-
sudo mcsudo nano /etc/fstab
-
-
Ondanks de eerdere waarschuwing, is het mogelijk om sudo te gebruiken met grafische apps mits je de -H vlag toevoegt. Deze vlag is kritisch: het zet root op de juiste manier in zijn eigen omgeving in plaats van de omgeving van de gebruiker te erven. Het gebruik van de -H vlag is verplicht. Als u deze vlag niet gebruikt, kunnen cruciale systeembestanden beschadigd raken en kunt u zich niet aanmelden.
-
Met sudo -H kan bijna elke grafische app gestart worden onder root binnen elke ‘buntu flavour. Dit omvat de standaard grafische editor en bestandsbeheerder van elke smaak.
Een groot gevaar met sudo -H is dat de -H vlag gemakkelijk te vergeten is. En er is maar één omissie nodig om de schade aan te richten.
-
Gebruikers
Toestaan dat andere gebruikers sudo
Om een nieuwe gebruiker toe te voegen aan sudo, open het Instellingen venster, dan Details → Gebruikers menu. Klik eerst op Ontgrendelen, dan kun je een gebruiker selecteren en op Administrator klikken.
In de terminal (voor Precise Pangolin, 12.04), zou dit zijn:
sudo adduser <username> sudo
waarbij u <username> vervangt door de naam van de gebruiker (zonder de <>).
In vorige versies van Ubuntu
sudo adduser <username> admin
zou dit gepast zijn geweest, maar de admin groep is deprecated en bestaat niet meer in Ubuntu 12.04.
Inloggen als een andere gebruiker
Gebruik dit niet om root te worden, zie verderop in de pagina voor meer informatie daarover.
sudo -i -u <username>
Bijv. om de gebruiker amanda te worden voor tape management doeleinden.
sudo -i -u amanda
Het wachtwoord waarnaar wordt gevraagd is dat van jezelf, niet dat van amanda.
rootaccount
Het rootaccount inschakelen
Het is zelden nodig om de root-account in te schakelen. Bijna alles wat je als beheerder van een Ubuntu-systeem moet doen, kan via sudo of gksudo worden gedaan. Als je echt een persistente root login nodig hebt, is het beste alternatief het simuleren van een root login shell met het volgende commando… |
sudo -i
Om het root-account in te schakelen (d.w.z. een wachtwoord in te stellen) gebruikt u:
sudo passwd root
Gebruik op eigen risico!
Als u zich bij X aanmeldt als root, kan dit tot ernstige problemen leiden. Als je denkt dat je een root-account nodig hebt om een bepaalde actie uit te voeren, raadpleeg dan eerst de officiële ondersteuningskanalen om er zeker van te zijn dat er geen beter alternatief is. |
Om-uw root-account uit te schakelen
Als u om de een of andere reden uw root-account hebt ingeschakeld en u wilt dit weer uitschakelen, gebruik dan het volgende commando in terminal… |
sudo passwd -dl root
Overige informatie
misvattingen
-
Is sudo niet minder veilig dan su?
-
Het basisbeveiligingsmodel is hetzelfde, en daarom hebben deze twee systemen hun belangrijkste zwakke punten gemeen. Elke gebruiker die su of sudo gebruikt, moet worden beschouwd als een bevoorrechte gebruiker. Als de account van die gebruiker wordt gecompromitteerd door een aanvaller, kan de aanvaller de volgende keer dat de gebruiker dat doet ook root-privileges krijgen. De gebruikersaccount is de zwakke schakel in deze keten, en moet dus met dezelfde zorg worden beschermd als root.
Op een meer esoterisch niveau, biedt sudo een aantal mogelijkheden die andere werkgewoontes aanmoedigen, welke een positieve invloed kunnen hebben op de veiligheid van het systeem. sudo wordt meestal gebruikt om slechts een enkel commando uit te voeren, terwijl su meestal gebruikt wordt om een shell te openen en meerdere commando’s uit te voeren. De sudo-benadering verkleint de kans dat een root-shell voor onbepaalde tijd open blijft staan, en moedigt de gebruiker aan om het gebruik van root-privileges tot een minimum te beperken.
-
- Ik kan de single-user modus niet in!
- Het sulogin-programma in Ubuntu is gepatcht om het standaardgeval van een vergrendeld root-wachtwoord te behandelen.
-
Ik kan een root-shell vanaf de console krijgen zonder een wachtwoord in te voeren!
- Je moet je wachtwoord invoeren.
Consolegebruikers hebben toegang tot de bootloader, en kunnen tijdens het bootproces op verschillende manieren beheerdersrechten krijgen. Bijvoorbeeld, door een alternatief init(8) programma te specificeren. Linux systemen zijn meestal niet geconfigureerd om veilig te zijn op de console, en extra stappen (bijvoorbeeld het instellen van een root wachtwoord, een boot loader wachtwoord en een BIOS wachtwoord) zijn nodig om ze zo te maken. Merk op dat consolegebruikers meestal fysieke toegang tot de machine hebben en deze dus ook op andere manieren kunnen manipuleren.
- Je moet je wachtwoord invoeren.
Speciale opmerkingen over sudo en shells
Geen van de onderstaande methodes wordt voorgesteld of ondersteund door de ontwerpers van Ubuntu.
Suggereer dit niet aan anderen tenzij je persoonlijk 24/7 beschikbaar bent om de gebruiker te ondersteunen als ze problemen hebben als gevolg van het draaien van een shell als root.
Om een root shell te starten (d.w.z. een commando venster waar u root commando’s kunt uitvoeren), het starten van root’s omgeving en login scripts, gebruikt u:
sudo -i (similar to sudo su - , gives you roots environment configuration)
Om een root-shell te starten, maar de omgeving van de huidige shell te behouden, gebruik je:
sudo -s (similar to sudo su)
Voor een kort overzicht van enkele van de verschillen tussen su, su -, en sudo -{i,s} zie : Ubuntu Forums Post met mooie tabel .
Samenvatting van de gevonden verschillen –
corrupted by user's HOME=/root uses root's PATH env varssudo -i Y Y Nsudo -s N Y Ysudo bash N Y Ysudo su Y N Y PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games probably set by /etc/environment PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin
Voor een gedetailleerde beschrijving van de verschillen zie man su en man sudo .
Verwijder wachtwoordprompt voor sudo
Als u het sudo-wachtwoord voor uw account uitschakelt, brengt u de beveiliging van uw computer ernstig in gevaar. Iedereen die op je onbeheerde, ingelogde account zit, heeft volledige root-toegang en misbruik op afstand wordt veel eenvoudiger voor kwaadwillende crackers. |
-
Deze methode wordt NIET aanbevolen of ondersteund door de ontwerpers van Ubuntu.
- Stel deze methode niet aan anderen voor, tenzij u persoonlijk 24/7 beschikbaar bent om de gebruiker te ondersteunen als deze problemen ondervindt als gevolg van het uitvoeren van een shell als root.
Deze instructies zijn om de prompt voor een wachtwoord te verwijderen bij gebruik van het sudo commando. Het sudo commando zal echter nog steeds gebruikt moeten worden voor root toegang.
Bewerk het sudoers bestand
Open een Terminal venster. Typ in sudo visudo. Voeg de volgende regel toe aan het EINDE van het bestand (als het niet aan het einde staat kan het door latere invoer ongedaan gemaakt worden):
<username> ALL=NOPASSWD: ALL
Vervang <gebruikersnaam> door uw gebruikersnaam (zonder de <>). Dit is in de veronderstelling dat Ubuntu een groep heeft aangemaakt met dezelfde naam als uw gebruikersnaam, wat typisch is. U kunt ook de groep gebruikers gebruiken of een andere dergelijke groep waar u in zit. Zorg ervoor dat u in die groep zit. Dit kunt u controleren door naar Systeem->Beheer->Gebruikers en Groepen
Exemplaar:
michael ALL=NOPASSWD: ALL
Typ in ^x om af te sluiten. Dit zou moeten vragen om een optie om het bestand op te slaan, typ in Y om op te slaan.
Log uit, en log dan weer in. Dit zou je nu in staat moeten stellen om het sudo commando uit te voeren zonder dat er om een wachtwoord wordt gevraagd.
Of om dit te doen voor de systeem brede groep sudo
root$ echo "%sudo ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
Log uit, en log dan weer in.
Reset sudo timeout
Je kan ervoor zorgen dat sudo de volgende keer om een wachtwoord vraagt door uit te voeren:
sudo -k
De standaard sudo timeout lengte kan veranderd worden door dit artikel te volgen: RootSudoTimeout.