Over root: su en sudo versus pkexec en admin://

Terug naar de thuispagina


Inhoud van deze pagina:

Hieronder beschrijf ik enkele belangrijke verschillen tussen verschillende vormen van susudo, pkexec en admin://. Dit is vooral gebaseerd op de uitstekende Engelstalige uitleg die xenopeek heeft gegeven op het forum van Linux Mint (mijn tekst is daar een vereenvoudiging van, met een toevoeging voor pkexec en admin://).

Gebruik altijd pkexec of admin:// voor grafische toepassingen

1. Vroeger waren er gksu en gksudo, maar die zijn opgevolgd door admin:// en pkexec... Gebruik altijd admin:// of pkexec voor het draaien van grafische toepassingen met rootbevoegdheid. Gebruik sudo en su alleen voor terminalprogramma's zonder grafische schil.

Anders zullen grafische toepassingen de eigendom van (instellings)bestanden in uw persoonlijke map veranderen in root, hetgeen verschillende problemen kan veroorzaken. Die problemen ontstaan wanneer toepassingen bepaalde bestanden of mappen willen gebruiken, die ze onverwacht niet kunnen gebruiken omdat die bestanden of mappen het eigendom van root zijn geworden.

Bestandbeheer als root: gebruik pkexec

1.1. Merk wel op, dat u bij pkexec ervoor dient te zorgen dat elk grafisch programma dat u wilt starten als root, beschikt over een policybestand in /usr/share/polkit-1/actions. Want anders werkt pkexec niet voor dat programma.

De standaard-bestandbeheerders van Cinnamon, MATE en Xfce hebben allemaal zo'n rugdekking van PolicyKit. U start ze zo als root:

a. Open een terminalvenster.
(Een terminalvenster opent u zo: *Klik*)

b. Kopieer en plak de volgende blauwe regel in het terminalvenster:

Cinnamon:
pkexec nemo
Druk op Enter.

MATE:
pkexec caja
Druk op Enter.

Xfce:
pkexec thunar
Druk op Enter.

Ubuntu (hoofdversie met Gnome):
Bij Ubuntu moet u eerst dit doen om pkexec te kunnen gebruiken voor bestandbeheer.
Daarna:
pkexec nautilus
Druk op Enter.

Maar bestandbeheer als root, kan in alle edities van Ubuntu en Linux Mint ook prima met de eenvoudige losstaande bestandbeheerder Double Commander. Mits u die zelf de ontbrekende PolicyKit-rugdekking geeft. Installeer hem eerst als volgt:

Open eerst een terminalvenster.
(Een terminalvenster opent u zo: *Klik*)

Tik in (kopieer en plak):

sudo apt-get install doublecmd-gtk

Druk op Enter en tik desgevraagd uw wachtwoord in. In Ubuntu blijft dit geheel onzichtbaar, u ziet zelfs geen sterretjes wanneer u het intikt, dat hoort zo. In Mint is dit veranderd: u ziet wel sterretjes. Druk opnieuw op Enter.

Haal nu het volgende policy-bestand voor Double Commander binnen, vanaf mijn Google Drive: *KLIK*

Laat het binnengehaalde bestand gewoon staan in de map Downloads, en zet het op de goede plek in uw systeem, met behulp van de volgende terminalopdracht (kopieer en plak, dit is één regel:

sudo cp -v ~/Downloads/org.gnome.doublecmd.policy /usr/share/polkit-1/actions/

Druk op Enter.

Daarna kunt u Double Commander als volgt starten met rootrecht:

pkexec doublecmd

Druk op Enter.

Systeeminstellingbestanden bewerken: gebruik Xed of Gedit met admin://

1.2. Voor het bewerken van instellingsbestanden van het systeem, kunt u kladblokje Xed of Gedit gebruiken in combinatie met admin://.

Bijvoorbeeld, voor het bewerken van de instellingen van uw opstartlader Grub in /etc/default/grub:

a. Open een terminalvenster.
(Een terminalvenster opent u zo: *Klik*)

b. Kopieer en plak de volgende regel in het terminalvenster:

xed admin:///etc/default/grub

(merk op dat er drie schuine strepen achter elkaar staan in het voorbeeld; dat hoort zo!)

Druk op Enter.

Het volledige verhaal

2. Voor sudo dient u lid te zijn van de sudo-groep om hen te kunnen gebruiken. Voor su, pkexec en admin:// hoeft u daarentegen geen lid te zijn van de sudo-groep om hen te kunnen benutten.

Voor pkexec en admin:// verschijnt er een grafisch venster om uw wachtwoord in te tikken. Voor sudo en su tikt u het wachtwoord in het terminalvenster, dat in Ubuntu geen enkele visuele terugkoppeling geeft tijdens het tikken: u ziet zelfs geen puntjes of sterretjes wanneer u het intikt. In Linux Mint ziet u trouwens tegenwoordig wel sterretjes verschijnen wanneer u uw wachtwoord inklopt.

Hier volgt een opsomming van de belangrijke verschillen tussen deze opdrachten:

a. admin:// en pkexec stellen $HOME veilig in op de persoonlijke map van root, zodat de toepassing die u draait, niet root de eigenaar maakt van (instellings)bestanden in uw persoonlijke map.

Ze stellen ook $XAUTHORITY in op een nieuw bestand, zodat de toepassing die u start, veilig draait met zijn eigen X-machtiging.

b. sudo doet geen van de twee beschermende handelingen die pkexec en admin:// doen: het gebruikt uw persoonlijke map en uw $XAUTHORITY.

Gebruik daarom sudo nooit voor grafische toepassingen, aangezien die toepassingen dan rücksichtlos de omgevingsvariabelen in uw eigen $HOME gebruiken....

c. sudo -i stelt $HOME veilig in op de persoonlijke map van root, en schakelt zichzelf ook om naar die map.

Maar het stelt $XAUTHORITY niet in op een nieuw bestand, zodat de toepassing die u start, niet veilig draait met zijn eigen X-machtiging. Gebruik het dus niet voor grafische toepassingen.

Verder nadeel: het terminalvenster met rootbevoegdheid blijft open staan nadat u de grafische toepassing weer hebt gesloten. Dit verhoogt het risico op onachtzaam verder gebruik van dat root-terminalvenster. Een ongeluk zit in een klein hoekje!

d. su - doet hetzelfde als sudo -i. Het enige verschil is: u machtigt su - met het wachtwoord van root en sudo -i met uw eigen wachtwoord.

e. sudo -H stelt $HOME veilig in op de persoonlijke map van root.

Maar het stelt $XAUTHORITY niet in op een nieuw bestand, zodat de toepassing die u start, niet veilig draait met zijn eigen X-machtiging. Gebruik het dus niet voor grafische toepassingen.

f. su stelt $HOME veilig in op de persoonlijke map van root.

Maar het stelt $XAUTHORITY niet in op een nieuw bestand, zodat de toepassing die u start, niet veilig draait met zijn eigen X-machtiging. Gebruik het dus niet voor grafische toepassingen.

Alle omgevingsvariabelen (met een paar uitzonderingen) blijven behouden wanneer u het terminalvenster van su sluit.

Let op: gebruik sudo, admin://pkexec en su alleen voor die toepassingen die uitdrukkelijk bedoeld zijn om te worden gebruikt als root! Zie deze uitleg (punt 2).

(met dank aan xenopeek van het forum van Linux Mint)

Kijk eenvoudig na wie er behoren tot de sudo-groep

3. U kunt simpel nakijken wie er lid is van de sudo-groep, met de volgende terminalopdracht:

getent group sudo

Druk op Enter.

Herstel schade veroorzaakt door grafisch misbruik van sudo

4. Hebt u ooit sudo gebruikt voor het starten van een grafische toepassing? Als volgt kunt u nakijken of er nu bestanden of mappen in uw persoonlijke map staan die eigendom zijn van root (wat dus uitdrukkelijk niet de bedoeling is!):

a. Open een terminalvenster.
(Een terminalvenster opent u zo: *Klik*)

b. Kopieer en plak in de terminal:

sudo find ~/ -user root

Druk op Enter en tik desgevraagd uw wachtwoord in. In Ubuntu blijft dit geheel onzichtbaar, u ziet zelfs geen sterretjes wanneer u het intikt, dat hoort zo. In Mint is dit veranderd: u ziet wel sterretjes. Druk opnieuw op Enter.

Geeft die opdracht geen enkele melding? Dan is het goed. Zijn er meldingen te zien van bepaalde bestanden of mappen? Dan kunt u de rechten in uw persoonlijke map herstellen, zodat alle bestanden en mappen in uw persoonlijke map weer van uzelf zijn. En wel als volgt:

c. Kopieer en plak de volgende opdrachtregel in de terminal:

sudo chown -R -v $USER:$USER $HOME

Druk op Enter.

d. Herstart uw computer.

Nog meer tips?

5. Wilt u meer tips en trucs? U vindt er nog veel meer op deze webstek!

Zoals deze:

Maak Linux Mint veilig schoon

Veelgestelde vragen

Tips en trucs


Op de inhoud van deze webstek is een Creative Commons-licentie van toepassing.

Algemeen voorbehoud en uitsluiting aansprakelijkheid

Terug naar de thuispagina