Wanneer je met een vorm van Linux werkt, bijvoorbeeld Ubuntu of CentOS, kom je vrij snel het commando 'sudo' en de term 'root' tegen, maar...
Wat is sudo / root?
Een Linux-VPS heeft een root-gebruiker, die je kunt vergelijken met de administrator op een Windows-computer. Deze root-gebruiker heeft standaard volledige toegang en rechten tot het besturingssysteem van je VPS (in tegenstelling tot andere gebruikers).
Sudo gebruiken
Veel command-line commando's kunnen enkel door een root-gebruiker worden uitgevoerd. Wanneer je echter via SSH, of de VPS-console op je VPS werkt, zul je doorgaans in eerste instantie als een andere gebruiker ingelogd zijn.
Om als deze (niet-root) gebruiker commando's als root-gebruiker uit te kunnen voeren, wordt gebruik gemaakt van het 'Sudo'-commando, wat staat voor 'super user do'.
Je gebruikt 'sudo' door het voor het commando te plaatsen dat je wil uitvoeren, bijvoorbeeld:
sudo nano /var/log
Er wordt vervolgens om een wachtwoord van de root-gebruiker gevraagd voor het commando daadwerkelijk wordt uitgevoerd. Het wachtwoord wordt voor 15 minuten onthouden. In die tijd hoef je als je sudo gebruikt niet iedere keer opnieuw het wachtwoord op te geven.
Dit is de veiligste oplossing om in Linux te werken. Als je als root-user werkt in plaats van een ander account met gebruik van het sudo commando brengt dat risico's met zich mee. Stel dat je bijvoorbeeld vanuit de VPS-console werkt en vergeet je computer te locken, dan kan een eventuele kwaadwillende minder schade aanrichten met een regulier user dan met een root-user.
Overschakelen naar de root-user
Alternatief kun je wanneer je bent verbonden via SSH als reguliere gebruiker overschakelen naar de root-gebruiker. Je hoeft daarna niet meer 'sudo' voor de commando's die je uitvoert te plaatsen. Er zijn hiervoor twee methodes met een belangrijk verschil:
- Overschakelen naar de root user en daarbij (automatisch) inloggen in een nieuwe shell. Dit reset de meeste de environment variables. Dit is de netste manier om te gebruiken en doe je met het commando:
su -
- Overschakelen naar de root user zonder in een nieuwe shell in te loggen. Je kunt zeggen dat je hiermee doet alsof je de root-user bent.
In de praktijk merk je bij de meeste besturingssystemen weinig verschil, behalve bij Debian 10. In Debian 10 behoud je namelijk de $PATH variabele van de gebruiker waarmee je inlogt. Het gevolg hiervan is dat je met 'su root' een $PATH krijgt waar bijvoorbeeld geen /sbin in is opgenomen en je bijvoorbeeld geen reboot commando kunt uitvoeren. Dat terzijde is su - veiliger, zoals op deze pagina in een mooi voorbeeld wordt uitgelegd.
Je schakelt over naar de root-gebruiker zonder nieuwe inlog shell met het commando:
CentOS Stream / AlmaLinux / Rocky Linux:
su root
Heeft je gebruikersaccount root-privileges, dan gebruik je het volgende commando:
sudo su
Ubuntu:
Bij Ubuntu heeft je account standaard root-privileges en gebruik je het commando:
sudo su
Met het commando 'exit' schakel je terug naar de gebruiker waarmee je in eerste instantie met je VPS verbond
Debian:
Debian komt standaard doorgaans zonder sudo. Wil je toch sudo kunnen gebruiken in plaats van over te schakelen naar de root-user (zie hieronder)? Schakel dan eerst naar de root-gebruiker en installeer sudo met:
apt-get install sudo -y
Daarna geef je jezelf root-rechten voor je daadwerkelijk het sudo-commando kunt gebruiken, zie de stappen hierboven.
Jezelf root-rechten geven
In de meeste OS'en heeft je standaard gebruiker geen sudo/root-rechten. Wil je die aan jezelf geven? Voer dan het volgende commando uit als root-gebruiker (vervang user door de daadwerkelijke gebruikersnaam) en herstart daarna je VPS:
usermod -aG sudo user
CentOS:
CentOS gebruikt de wheel groep in plaats van de sudo groep. Hiervoor is de syntax:
usermod -aG wheel user
Als je een melding krijgt dat de sudo-groep (of wheel group) niet bestaat, kun je ook hanmdatig de sudo-groep toevoegen. Voeg eerst de groep toe:
groupadd sudo
Open daarna visudo met:
visudo
Controleer of onderstaande inhoud er in staat en zo niet, voeg die dan toe (vervang sudo door wheel bij CentOS):
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
Je kunt nu als je met je eigen gebruikersnaam verbonden bent overschakelen met het commando:
sudo su