Root-opdracht automatisch uitvoeren bij opstarten in Linux Mint 20 en Ubuntu 20.04


Terug naar de thuispagina


Het is niet erg eenvoudig om een root-opdracht automatisch te laten uitvoeren bij het opstarten (met sudo-rechten) in Linux Mint en Ubuntu. Helaas heeft systemd dit veel lastiger gemaakt.

Vandaar deze handleiding, waarmee het voor u een stuk makkelijker wordt om dit te bewerkstelligen.

Let op: alleen voor root-opdrachten! Gebruik deze handleiding beslist niet voor opdrachten waarvoor geen rootbevoegdheid nodig is.

Deze handleiding maakt bewust geen gebruik van de ondersteuning die systemd momenteel nog biedt voor het oude afgeschafte /etc/rc.local. Want het is onzeker voor hoe lang systemd die verouderde methode nog blijft ondersteunen.... In plaats daarvan gebruikt deze handleiding de officieel aanbevolen moderne functies van systemd.

Ga als volgt te werk:

1. Start Timeshift en maak een handmatige momentopname van uw systeem, zodat u uw systeem makkelijk in de oude staat kunt terugbrengen als er iets mis is gegaan.

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

Een voorbeeld maakt het makkelijker, dus gebruik ik een voorbeeld waarin ik een root-opdracht wil toepassen die automatisch de zendkracht van een draadloos kaartje verlaagt bij het opstarten. Uiteraard moet u deze opdrachtregel aanpassen aan uw eigen wensen en doelen.

In het voorbeeld heb ik de regel die u moet aanpassen schuingedrukt en vetgedrukt gemaakt, namelijk de opdrachtregel die in het script zit.

3. Allereerst gaat u een shellscript-bestand maken, dat systemd moet gaan uitvoeren bij het opstarten. "Kapitein" is een mooie toepasselijke naam daarvoor, want een kapitein deelt bevelen uit.
Kopieer en plak de volgende opdrachtregel in de terminal, om een shellscript-bestand genaamd kapitein.sh te maken:

sudo touch /opt/kapitein.sh

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.

(als u intikt: vergeet de spatie na touch niet!)

4. Kopieer en plak de volgende opdrachtregel in de terminal, om het nieuwe lege documentbestandje te bewerken:

xed admin:///opt/kapitein.sh

(de drie achtereenvolgende schuine strepen in de opdrachtregel zijn geen vergissing)

Druk op Enter. U moet uw wachtwoord twee keer intikken.

d. Kopieer en plak nu de onderstaande blauwe tekst in dat lege documentbestandje. Dit tekstblok bevat een voorbeeldopdracht, die de zendkracht van een draadloos kaartje genaamd wlp2s0 verlaagt.

Met een vertraging ("sleep") van 20 seconden, zodat het systeem volledig operationeel is wanneer de opdracht wordt uitgevoerd (dit vermindert de kans op problemen, dus zo'n vertraging is nuttig voor bijna alle denkbare opdrachten):

#!/bin/sh
sleep 20
iwconfig wlp2s0 txpower 5
exit 0

Let op: er moet geen sudo voor de opdrachtregel staan! Dat is namelijk voor systemd overbodig en zelfs verkeerd.

Sla het gewijzigde bestand op en sluit het.

6. Kopieer en plak de volgende opdrachtregel in de terminal, om het nieuwe shellscript uitvoerbaar te maken:

sudo chmod u+x /opt/kapitein.sh

Druk op Enter.

7. Kopieer en plak de volgende opdrachtregel in de terminal, om een nieuw dienstbestand te maken voor systemd:

sudo touch /etc/systemd/system/kapitein.service

Druk op Enter.

8. Kopieer en plak de volgende opdrachtregel in de terminal, om het nieuwe dienstbestand te bewerken:

xed admin:///etc/systemd/system/kapitein.service

Druk op Enter.

9. Kopieer en plak het onderstaande blauwe tekstblok in het lege tekstbestandje:

[Unit]
Description=Kapiteindienst
After=network.target

[Service]
ExecStart=/opt/kapitein.sh

[Install]
WantedBy=multi-user.target

Sla het gewijzigde bestand op en sluit het.

10. Kopieer en plak de volgende opdrachtregel in de terminal, om de nieuwe dienst te starten:

sudo systemctl start kapitein

Druk op Enter.

11. Kopieer en plak de volgende opdrachtregel in de terminal, om de nieuwe dienst te automatisch te laten starten tijdens het opstarten van uw computer:

sudo systemctl enable kapitein

Druk op Enter.

12. Herstart uw computer.

13. Kijk na of de opdracht daadwerkelijk is uitgevoerd. Merk op dat u even moet wachten: de opdracht wordt pas 20 seconden na uw aanmelding uitgevoerd!

Dat was het. Zoveel hoepels om doorheen te springen, voor zoiets eenvoudigs.... Wat heerlijk toch dat systemd het ons allemaal zo makkelijk maakt.


Ongedaan maken

Wilt u deze ingreep ongedaan maken? Dat kan zo:

Voer de volgende vier terminalopdrachten uit, in deze volgorde:

sudo systemctl stop kapitein

sudo systemctl disable kapitein

sudo rm -v /opt/kapitein.sh

sudo rm -v /etc/systemd/system/kapitein.service

Herstart uw computer en alles zou weer bij het oude moeten zijn....


Nog meer tips?

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

Zoals deze:

Maak uw Linux Mint sneller

Maak Linux Mint veilig schoon

Vermijd 10 fatale vergissingen


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

Algemeen voorbehoud en uitsluiting aansprakelijkheid

Terug naar de thuispagina