Veel mensen die nieuw zijn in Linux vinden het maar lastig dat ze niet zomaar alles kunnen op hun Linux computer. Ze zijn van Windows gewend dat ze alles mogen doen, zonder dat ze hun wachtwoord steeds hoeven in te voeren. Maar in Linux zijn de systeemtaken met een goede reden gescheiden van de dagelijkse taken, veiligheid. En veiligheid hoeft niet altijd gemakkelijk te zijn.
Het kan wellicht verwarring opwekken dat je een gebruiker hebt die root heet en dat de eerste directory van het filesysteem / ook root heet. Die twee hebben echter niets met elkaar te maken. En dan is er ook nog de directory root , wat dus een directory is die direct aan de root directory hangt en ook nog eens de naam root heeft. Dat is de home directory van de gebruiker root.
Je kent dat wel, in je enthousiasme doe je iets fout. En als je als root iets fout doet kun je de hele machine om zeep helpen. Als gewone gebruiker kun je natuurlijk ook nog fouten maken en daardoor je eigen bestanden wissen bijvoorbeeld. Maar het systeem lijdt daar dan niet onder.
Linux is ontworpen als een multi-user systeem. Dus zou het kunnen zijn dat er meerdere gebruikers aan het systeem aan het werken zijn. Daarom mag je het systeem doorgaans niet zomaar uitschakelen, dat moet je als root doen. Het dwingt je daarom om erover na te denken voordat je de actie uitvoert.
De root gebruiker mag alles.
Je wil dus niet dat een eventuele inbreker root mag worden, want dan kan hij programma’s installeren waardoor het systeem lid gaat worden van een botnet of zo.
Daarom draaien services binnen Linux altijd onder een andere gebruikersnaam, die maar net genoeg rechten heeft om zijn eigen taak uit te kunnen voeren.
Als zo’n service door een hacker overgenomen zou worden, dan kan die hacker nog niet meer dan wat die service zelf mag.
Dit geldt natuurlijk vooral voor een Linux machine die vanaf het internet bereikbaar is.
We hebben vast het commando sudo al een paar keer gezien. Met dat commando wordt het commando achter het sudo commando als super user uitgevoerd. Wees spaarzaam met het gebruik van het sudo commando, want je kunt het systeem daar gemakkelijk mee kapot maken als je iets fout doet.
Het sudo commando kan vragen om je wachtwoord (als dat niet is uitgeschakeld zoals standaard het geval is bij de Raspberry Pi).
Daarbij moet je je eigen wachtwoord invoeren, en niet het wachtwoord voor de root gebruiker.
Sterker nog, op een veilig systeem heeft de root gebruiker niet eens een wachtwoord.
Het kan voor Windows gebruikers wellicht een beetje vreemd over komen dat je je eigen wachtwoord in dient te typen om commando’s met sudo te kunnen uitvoeren.
In Windows moet je het Administrator wachtwoord intypen namelijk.
Ik vind de Linux methode praktischer.
Als je een wachtwoord in moet voeren dan wordt dat wachtwoord een tijdje lang onthouden, zodat je het niet elke keer hoeft in te voeren.
Nog een tip waarmee je soms ervaren Linux gebruikers kunt imponeren. Stel je voert een commando uit als normale gebruiker en je komt er achter dat die gebruiker dat niet mag. Bijvoorbeeld:
cat /etc/sudoers cat: sudoers: Permission denied
Dat mag de gewone gebruiker dus niet. We hadden moeten typen:
sudo cat /etc/sudoers
Nu is dit nog een kort commando. Maar stel je voor dat het commando een halve meter lang is. Dan kun je met pijltje omhoog het mislukte commando oproepen en dan met de Home toets naar het begin van de regel gaan om daar het sudo commando voor te typen. Maar het kan sneller:
sudo !!
En het laatste commando wordt herhaald, maar dit keer met sudo rechten. Sudo bang bang wordt dat in vakjargon genoemd.
Er zijn verschillende instellingen die je Linux computer veiliger maken. Het wijzigen van die instellingen kunnen je machine natuurlijk onveiliger maken. Dat wil je misschien omdat je een heel erg veilige machine lastig vindt. Maar ik raad je aan om niet te kort door de bocht te gaan door alle gezonde veiligheidsmaatregelen uit te schakelen.
In de meeste Linux distributies heeft de root gebruiker geen wachtwoord. Dat wil zeggen dat die root gebruiker niet kan inloggen in het systeem. Dat is op zich natuurlijk een goede beveiliging.
Mocht je toch graag een wachtwoord voor root instellen dan kan dat met:
sudo passwd root
En heb je een systeem waar root wel een wachtwoord heeft dan kan ik me voorstellen dat je dat wenst te wissen. Maar zorg er dan wel voor dat er tenminste een gebruiker is die sudo mag gebruiken!
sudo passwd -d root
Machines die via het internet bereikbaar zijn wil je zo veilig mogelijk hebben.
Je wil niet hebben dat je machine deel gaat uitmaken van een illegaal netwerk, of dat je data gestolen of vernield wordt.
Daarom kun je in de ssh instellingen ook nog eens aangeven of de root gebruiker wel of niet mag inloggen, met of zonder wachtwoord.
Om te voorkomen dat root mag inloggen via ssh kun je het bestand /etc/ssh/sshd_config bewerken en zoeken naar de regel die begint met PermitRootLogin. Maak van die regel PermitRootLogin no . Je moet daarna de ssh server nog wel even herstarten.
sudo systemctl restart ssh
Het is gebruikelijk dat je je wachtwoord moet invoeren als je het sudo commando wilt gebruiken.
Tenminste, wanneer je het een lange tijd niet gebruikt hebt.
Bij de Raspberry Pi is die vraag naar het wachtwoord uitgeschakeld.
Dan is het gemakkelijker om sudo commando’s uit te voeren.
Maar met dat gemak verlaag je wel de veiligheid van de machine.
Daarom ben ik er geen voorstander van om zomaar, zonder wachtwoord, root commando’s uit te kunnen voeren.
Zeker niet als de Raspberry Pi verbonden is met het internet.
Wanneer je het met me eens bent dan kun je de vraag naar het wachtwoord weer aan zetten door je de volgende commando’s uitvoeren:
cd /etc/sudoers.d sudo mv 010_pi-nopasswd 010_pi-nopasswd.disabled
In het bestand /etc/sudoers staat welke gebruikers er allemaal sudo commando’s mogen uitvoeren. Doorgaans zijn dat alle gebruikers die lid zijn van de sudo groep.
Je kunt echter heel fijnmazig aangeven wat iedere individuele sudo gebruiker allemaal wel en niet mag.
Maar omdat we doorgaans de enige gebruiker zijn op onze Linux machine gaat dat voor deze beschrijving een beetje te ver.
Het is overigens ook handig om een eventuele nieuwe gebruiker ook lid te maken van andere groepen zoals sudo, adm, video, audio etc.
Kortom gebruik het id commando maar eens voor de gebruiker pi om alle groepen te zien waar deze toe behoort.
Gemak dient de mens.
Telkens het woord sudo voor elke regel te moeten zetten kan lastig zijn.
Als je heel veel commando’s na elkaar als sudo moet uitvoeren kan het handig zijn om tijdelijk de root gebruiker te kunnen worden.
Maar let wel, met dat gemak komt ook het gevaar dat je iets kapot maakt.
En let ook even op, want alle bestanden die je aanmaakt terwijl je root bent krijgen root ook als eigenaar.
Als normale gebruiker kun je er dan meestal niet zo veel meer mee.
Dan moet je die bestanden daarom weer met het chown commando van eigenaar gaan veranderen, en dan type je dus weer meer dan wanneer je gewoon voor elke regel sudo had getypt.
Afijn, je wilt toch graag een tijdje lang de root gebruiker worden. Dat kan.
sudo su
Dat is alles wat je moet doen om sudo gebruiker te worden. Als je klaar bent, en weer terug wilt keren naar de normale gebruiker type je het exit commando, of je drukt op Ctrl-D .