Articles

Linux – Tijdelijk overschakelen naar een andere Linux-gebruiker (met su)

Posted on

## Hoe overschakelen naar een andere gebruiker of tijdelijk root worden

Aankondiging

Je kunt al mijn laatste berichten vinden op medium.

## Commando’s die in dit artikel worden behandeld
id # Geeft de gebruikersnaam weer van de momenteel ingelogde gebruiker. Het laat ook zien tot welke groepen de gebruiker behoort.
su # Hiermee kunt u (s)heken naar een andere (u)ser terwijl u bent ingelogd als iemand anders.
sudo # xxxxxxxxxxxxxxxxx

De root gebruiker worden met “su”
In Linux wordt altijd aangeraden om niet direct in te loggen als de root gebruiker. Dat is omdat het veiligheidsproblemen kan veroorzaken en de kans vergroot dat u iets beschadigt. In feite zal Centos een waarschuwing laten zien als u probeert direct in te loggen als root.

Dus de beste gewoonte is dat u altijd inlogt als een normale gebruiker. Er zijn echter veel commando’s die alleen als root kunnen worden uitgevoerd, en in die gevallen is de aanbevolen manier om ze uit te voeren met behulp van het hulpprogramma (s)witch (u)ser, waarmee je van de ene gebruiker naar de andere kunt overschakelen:

su – root # Hiermee kun je overschakelen naar de root-gebruiker. Ik zal het “-” argument later behandelen.
password # Het su commando vraagt om het wachtwoord van de gebruiker waarnaar je overschakelt. In dit geval is dat het wachtwoord van de root gebruiker.
id # Het id commando laat eenvoudig zien onder welke gebruiker je sessie op dit moment draait.

Note, je kunt het su commando alleen gebruiken als je het wachtwoord weet van de gebruiker waar je naar wilt overschakelen. De enige uitzondering op deze regel is als u bent ingelogd als de root gebruiker, in welk geval u kunt su-en naar iedere gebruiker zonder wachtwoord prompt.

login:
password:
id
su – # Als u de gebruikersnaam weglaat, zoals hier, dan zal su standaard aannemen dat u root bedoelt.
wachtwoord
id
su – Tom
id # Merk op dat we Tom’s wachtwoord niet hoefden in te voeren.

## Terugschakelen naar de vorige gebruiker
In het bovenstaande voorbeeld zijn we overgeschakeld van John-=>root-=>Tom. Dit betekende dat onze huidige shell 2-sessies diep is. Dus als je terug wilt naar John, dan kun je het commando exit gebruiken:

id
exit # Hiermee ga je één stap terug, wat in dit geval de root gebruiker is.
id
exit # Nu ben je terug bij John, en kun je niet verder meer exit. Als je weer probeert af te sluiten, dan sluit de terminal zelf.

In plaats van het bovenstaande te doen, had je ook gewoon kunnen doen:

su – John # in dit geval zou je 3-sessies diep zijn, d.w.z.d.w.z. John-=>root-=>Tom-=>John
# Het is een goede gewoonte om, waar mogelijk, nooit dieper dan 3 niveaus te gaan. Anders kun je vreemde gedragingen gaan vertonen.

## Wat betekent de “-” in ‘su -‘?

De eerste parameter, “-“, vertelt su om te doen alsof de gebruiker direct inlogt. Anders wordt de omgeving doorgegeven, met uitzondering van $PATH, die wordt geregeld door PATH en SUPATH in /etc/default/su.

Deze “-” betekent in feite dat de nieuwe sessie met een schone lei wordt gestart, en dat er geen ‘bagage’ van de vorige sessie wordt meegenomen. Bijvoorbeeld, als je een variabele maakt, en deze exporteert, dan is deze variabele alleen beschikbaar als je geen nieuwe sessie start:

testvar=12345 # Hier heb ik een nieuwe variabele gemaakt.
export testvar # Dit stelt de variabele in om beschikbaar te worden in alle sessies.
su Tom # Omdat “-” is weggelaten, is overdragen toegestaan. Dus de variabele zou toegankelijk moeten zijn in de nieuwe sessie.
wachtwoord
echo testvar # Variabele bestaat in de nieuwe sessie.
exit
su – Tom # Omdat “-” is opgegeven, wordt overdracht geblokkeerd, om zo dicht mogelijk een directe login na te bootsen.
echo testvar # Geeft een blanco resultaat, omdat deze variabele niet bestaat in een “verse” sessie.

## Voer een enkel commando uit als een andere gebruiker.
U kunt su gebruiken om net lang genoeg van gebruiker te wisselen om een enkel commando uit te voeren, voordat u weer teruggaat:

su – Tom -c ‘echo “Hallo en tot ziens Tom’

Of u kunt meerdere commando’s samenvoegen in een enkele regel met behulp van een puntkomma:

su – Tom -c ‘id ; echo “Hallo en tot ziens Tom’

## Geef niet-admins toegang tot een bepaald root-niveau met behulp van sudo
In Linux zijn alle commando’s/taken op admin-niveau die alleen door de root-gebruiker kunnen worden uitgevoerd. Dus als er een bepaalde admin-level activiteit is die je een collega wilt laten uitvoeren, dan is een manier om dit te doen door ze het root wachtwoord te geven. Dit is echter geen goed idee omdat:
1. om veiligheidsredenen, het het beste is om zoveel mogelijk te beperken wie root toegang heeft.
2. je ze onbedoeld volledige controle geeft over al het andere.

Een manier om dit dilemma te omzeilen is het gebruik van de sudo utility. Sudo stelt de root gebruiker in staat om een gebruiker de mogelijkheid te geven om een of meer commando’s op admin niveau uit te voeren (alsof ze zijn ingelogd als root gebruiker, maar zonder daadwerkelijk in te loggen als root gebruiker).

Voorbeeld, alleen root kan de machine afsluiten:

shutdown # Dit sluit een machine af. Om hem weer aan te zetten, moet je op de aan/uit-knop van de machine drukken.

Als gebruiker, Tom het commando “shutdown” probeert te gebruiken, dan krijgt hij een bericht met “permission denied”:

<code=>

Als de root-gebruiker Tom, sudo toestemming geeft om het commando “shutdown” te gebruiken. Dan zou Tom nu het commando op beheerdersniveau moeten kunnen uitvoeren door het vooraf te laten gaan door het woord sudo:

sudo {commando}

Zoals hierboven aangegeven is de syntax voor het initiëren van sudo het woord sudo gevolgd door het commando dat uitgevoerd moet worden:

Dus Tom kan zijn sudo privelege als volgt inroepen:

shutdown # dit zal niet werken omdat sudo niet is aangeroepen.
sudo shutdown # Dit werkte, en de machine sluit af.
<password=> # Net als su, moet je een wachtwoord invoeren. Maar anders dan bij su, moet je het wachtwoord van de huidige gebruiker invoeren.
# Dit is een beetje overkill, omdat de gebruiker al is ingelogd als die gebruiker. Gelukkig kan deze <l-anchor=>sudo wachtwoord<l=> prompt worden uitgezet.

Om veiligheidsredenen wordt er een logboek bijgehouden van alle sudo gerelateerde activiteiten, voor het geval een gebruiker misbruik maakt van zijn sudo privileges.

De root gebruiker moet <l=> sudo priveleges<l=> configureren en toewijzen om priveleges te kunnen toewijzen.

## Het belangrijkste verschil tussen het gebruik van su en sudo (voor het uitvoeren van admin commando’s)
Om samen te vatten, Het belangrijkste verschil voor het uitvoeren van commando’s op admin niveau als de hoofdgebruiker zijn:

1. Om su te gebruiken, moet je het root-wachtwoord kennen, terwijl dat voor sudo niet nodig is
2. Met sudo moet je elk commando vooraf laten gaan door het woord “sudo”, maar met su is dat niet nodig.
3. Met su kun je elk admin-commando uitvoeren, maar met sudo kun je alleen de admin-commando’s uitvoeren die geautoriseerd zijn in het sudo’s config-bestand.

Een paar handige weetjes
De root gebruiker wordt soms aangeduid als de “superuser”.
Een alternatief voor de “id” comamnd “whoami” (maar die is niet zo informatief).
Er is een conventie dat voor een root gebruiker, de prompt user eindigt op “#”, terwijl het voor ieder ander eindigt op “$”. Nu we het daar toch over hebben, er zijn een paar manieren om <l=> de commando prompt aan te passen<l=>.

Het id commando laat meer zien dan alleen gebruikersnamen en groepsnamen. Het toont ook de corresponderende id-nummers voor de gebruikers en groepen. U kunt het id commando ook gebruiken om details te zien van andere gebruikers behalve de huidige ingelogde gebruiker:

id {username}

Het id commando haalt zijn informatie uit /etc/passwd en /etc/group

Gerelateerde onderwerpen
Instellen en toekennen van sudo privileges.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *