
Het verwijderen van een gebruiker op Linux omvat meer dan u denkt. Als u een systeembeheerder bent, wilt u alle sporen van het account en de toegang ervan vanaf uw systemen verwijderen. We laten u de stappen zien die u moet nemen.
Als u alleen een gebruikersaccount van uw systeem wilt verwijderen en u zich geen zorgen maakt over het beëindigen van lopende processen en andere opruimtaken, volgt u de stappen in het gedeelte “Het gebruikersaccount verwijderen” hieronder. Je hebt de deluser
commando op op Debian gebaseerde distributies en de userdel
commando op andere Linux-distributies.
Gebruikersaccounts op Linux
Sinds de eerste timesharing-systemen in het begin van de jaren zestig verschenen en de mogelijkheid voor meerdere gebruikers met zich meebracht om op één computer te werken, was het nodig om de bestanden en gegevens van elke gebruiker te isoleren en in compartimenten op te delen van alle andere gebruikers. En zo werden gebruikersaccounts – en wachtwoorden – geboren.
Gebruikersaccounts hebben een administratieve overhead. Ze moeten worden gemaakt wanneer de gebruiker voor het eerst toegang tot de computer nodig heeft. Ze moeten worden verwijderd wanneer die toegang niet langer nodig is. Op Linux is er een reeks stappen die moeten worden gevolgd om de gebruiker, zijn bestanden en zijn account correct en methodisch van de computer te verwijderen.
Als u de systeembeheerder bent, valt die verantwoordelijkheid bij u. Hier leest u hoe u het moet aanpakken.
Ons scenario
Er zijn een aantal redenen waarom een account moet worden verwijderd. Een personeelslid kan naar een ander team verhuizen of het bedrijf verlaten. Het account is mogelijk gemaakt voor een korte termijn samenwerking met een bezoeker van een ander bedrijf. Team-ups zijn gebruikelijk in de academische wereld, waar onderzoeksprojecten afdelingen, verschillende universiteiten en zelfs commerciële entiteiten kunnen omvatten. Aan het einde van het project moet de systeembeheerder de huishouding uitvoeren en onnodige accounts verwijderen.
Het ergste scenario is wanneer iemand onder een wolk vertrekt vanwege een misdrijf. Dergelijke gebeurtenissen gebeuren meestal plotseling, met weinig waarschuwing vooraf. Dat geeft de systeembeheerder heel weinig tijd om te plannen, en een urgentie om het account te vergrendelen, sluiten en verwijderen – met een back-up van een kopie van de bestanden van de gebruiker voor het geval ze nodig zijn voor forensisch onderzoek na sluiting.
In ons scenario doen we alsof een gebruiker, Eric, iets heeft gedaan dat zijn onmiddellijke verwijdering uit het pand rechtvaardigt. Op dit moment weet hij dit niet, hij is nog aan het werk, en ingelogd. Zodra je naar de beveiliging knikt, wordt hij het gebouw uit geëscorteerd.
Alles is klaar. Alle ogen zijn op jou gericht.
Controleer de login
Eens kijken of hij echt is ingelogd en, zo ja, met hoeveel sessies hij werkt. De who
commando geeft een lijst van actieve sessies.
who
Eric is een keer ingelogd. Laten we eens kijken welke processen hij uitvoert.
De processen van de gebruiker bekijken
We kunnen de ps
opdracht om de processen weer te geven die deze gebruiker uitvoert. De -u
(gebruiker) optie laat het ons weten ps
om de uitvoer ervan te beperken tot de processen die worden uitgevoerd onder het eigendom van dat gebruikersaccount.
ps -u eric
We kunnen dezelfde processen zien met meer informatie met behulp van de top
opdracht. top
heeft ook een -U
(gebruiker) optie om de uitvoer te beperken tot de processen die eigendom zijn van een enkele gebruiker. Merk op dat het deze keer een hoofdletter ‘U’ is.
top -U eric
We kunnen het geheugen- en CPU-gebruik van elke taak zien en snel naar iets met verdachte activiteit zoeken. We staan op het punt om al zijn processen met geweld te beëindigen, dus het is het veiligst om even de tijd te nemen om de processen snel te bekijken en te controleren en ervoor te zorgen dat andere gebruikers geen hinder zullen ondervinden wanneer u het gebruikersaccount beëindigt eric
’s processen.
Het lijkt erop dat hij niet veel doet, alleen maar gebruiken less
om een bestand te bekijken. We zijn veilig om verder te gaan. Maar voordat we zijn processen beëindigen, bevriezen we het account door het wachtwoord te vergrendelen.
VERWANT: Hoe de ps-opdracht te gebruiken om Linux-processen te bewaken
Het account vergrendelen
We vergrendelen het account voordat we de processen beëindigen, want wanneer we de processen beëindigen, wordt de gebruiker uitgelogd. Als we zijn wachtwoord al hebben gewijzigd, kan hij niet meer inloggen.
De gecodeerde gebruikerswachtwoorden worden opgeslagen in het /etc/shadow
het dossier. U zou normaal gesproken geen moeite doen met deze volgende stappen, maar zodat u kunt zien wat er gebeurt in het /etc/shadow
bestand wanneer u het account vergrendelt, nemen we een kleine omweg. We kunnen de volgende opdracht gebruiken om naar de eerste twee velden van het item voor de eric
gebruikers account.
sudo awk -F: '/eric/ {print $1,$2}' /etc/shadow
Het awk-commando parseert velden uit tekstbestanden en manipuleert ze optioneel. We gebruiken de -F
(veldscheidingsteken) optie om te vertellen awk
dat het bestand een dubbele punt gebruikt ” :
”Om de velden te scheiden. We gaan op zoek naar een regel met het patroon “eric” erin. Voor overeenkomende regels zullen we de eerste en tweede velden afdrukken. Dit zijn de accountnaam en het gecodeerde wachtwoord.
De invoer voor gebruikersaccount eric wordt voor ons afgedrukt.
Om het account te vergrendelen gebruiken we de passwd
opdracht. We gebruiken de -l
(lock) optie en geef de naam van het gebruikersaccount door om te vergrendelen.
sudo passwd -l eric
Als we het /etc/passwd
bestand opnieuw, we zullen zien wat er is gebeurd.
sudo awk -F: '/eric/ {print $1,$2}' /etc/shadow
Aan het begin van het versleutelde wachtwoord is een uitroepteken toegevoegd. Het eerste teken wordt niet overschreven, het wordt alleen aan het begin van het wachtwoord toegevoegd. Dat is alles wat nodig is om te voorkomen dat een gebruiker zich kan aanmelden bij dat account.
Nu we hebben voorkomen dat de gebruiker opnieuw inlogt, kunnen we zijn processen beëindigen en hem uitloggen.
Het doden van de processen
Er zijn verschillende manieren om de processen van een gebruiker te beëindigen, maar de hier getoonde opdracht is algemeen verkrijgbaar en is een modernere implementatie dan sommige van de alternatieven. De pkill
commando zal processen zoeken en beëindigen. We geven het KILL-signaal door en gebruiken de -u
(gebruiker) optie.
sudo pkill -KILL -u eric
U keert terug naar de opdrachtprompt op een beslist anti-climax-manier. Laten we eens kijken om er zeker van te zijn dat er iets is gebeurd who
nog een keer:
who
Zijn sessie is voorbij. Hij is uitgelogd en zijn processen zijn gestopt. Dat heeft een deel van de urgentie uit de situatie gehaald. Nu kunnen we wat ontspannen en doorgaan met de rest van het dweilen, want de beveiliging loopt naar Erics bureau.
VERWANT: Processen beëindigen vanaf de Linux-terminal
Archivering van de basismap van de gebruiker
Het is niet uitgesloten dat in een scenario als dit in de toekomst toegang tot de bestanden van de gebruiker vereist is. Ofwel als onderdeel van een onderzoek of simpelweg omdat hun vervanging wellicht moet verwijzen naar het werk van hun voorganger. We gebruiken de tar
opdracht om hun volledige homedirectory te archiveren.
De opties die we gebruiken zijn:
- c: Maak een archiefbestand.
- f: Gebruik de opgegeven bestandsnaam voor de naam van het archief.
- j: Gebruik bzip2-compressie.
- v: Biedt uitgebreide uitvoer terwijl het archief wordt gemaakt.
sudo tar cfjv eric-20200820.tar.bz /home/eric
Veel schermuitvoer zal in het terminalvenster scrollen. Om te controleren of het archief is gemaakt, gebruikt u de ls
opdracht. We gebruiken de -l
(lang formaat) en -h
(door mensen leesbare) opties.
ls -lh eric-20200802.tar.bz
Er is een bestand van 722 MB aangemaakt. Dit kan op een veilige plek worden gekopieerd voor latere beoordeling.
Cron-taken verwijderen
We kunnen beter kijken of die er zijn cron
taken gepland voor gebruikersaccount eric
. EEN cron
job is een commando dat op gespecificeerde tijden of intervallen wordt geactiveerd. We kunnen kijken of die er zijn cron
taken gepland voor dit gebruikersaccount met ls
:
sudo ls -lh /var/spool/cron/crontabs/eric
Als er iets op deze locatie bestaat, betekent dit dat er iets is cron
taken in de wachtrij voor dat gebruikersaccount. Hiermee kunnen we ze verwijderen crontab
opdracht. De -r
(remove) optie zal de jobs verwijderen, en de -u
(gebruiker) optie vertelt crontab
wiens banen te verwijderen.
sudo crontab -r -u eric
De taken worden stil verwijderd. Voor zover we weten, als Eric had vermoed dat hij op het punt stond uitgezet te worden, had hij misschien een kwaadaardige klus gepland. Deze stap is de beste methode.
Afdruktaken verwijderen
Misschien had de gebruiker afdruktaken in behandeling? Voor de zekerheid kunnen we de afdrukwachtrij verwijderen van alle taken die bij het gebruikersaccount horen eric
. De lprm
opdracht verwijdert taken uit de afdrukwachtrij. De -U
Met de optie (gebruikersnaam) kunt u taken verwijderen die eigendom zijn van het genoemde gebruikersaccount:
lprm -U eric
De taken worden verwijderd en u keert terug naar de opdrachtregel.
Het gebruikersaccount verwijderen
We hebben al een back-up gemaakt van de bestanden van het /home/eric/
directory, zodat we door kunnen gaan en het gebruikersaccount kunnen verwijderen en het /home/eric/
directory tegelijkertijd.
De te gebruiken opdracht is afhankelijk van de Linux-distributie die u gebruikt. Voor op Debian gebaseerde Linux-distributies is de opdracht deluser
, en voor de rest van de Linux-wereld is het dat ook userdel
.
Eigenlijk zijn op Ubuntu beide opdrachten beschikbaar. Ik had half verwacht dat de een een alias van de ander zou zijn, maar het zijn verschillende binaries.
type deluser
type userdel
Hoewel ze beide beschikbaar zijn, is de aanbeveling om deluser
op van Debian afgeleide distributies:
“userdel
is een hulpprogramma op laag niveau voor het verwijderen van gebruikers. Op Debian zouden beheerders gewoonlijk deluser
(8). “
Dat is duidelijk genoeg, dus de opdracht die u op deze Ubuntu-computer moet gebruiken, is deluser
. Omdat we ook willen dat hun homedirectory wordt verwijderd, gebruiken we de --remove-home
vlag:
sudo deluser --remove-home eric
Het te gebruiken commando voor niet-Debian distributies is userdel
, met de --remove
vlag:
sudo userdel --remove eric
Alle sporen van gebruikersaccount eric
zijn gewist. We kunnen controleren of het /home/eric/
directory is verwijderd:
ls /home
De eric
groep is ook verwijderd omdat het gebruikersaccount eric
was de enige vermelding erin. We kunnen dit vrij eenvoudig controleren door de inhoud van /etc/group
door grep
:
sudo less /etc/group | grep eric
Het zit erop
Eric, voor zijn zonden, is weg. De beveiliging leidt hem nog steeds het gebouw uit en je hebt zijn bestanden al beveiligd en gearchiveerd, zijn account verwijderd en het systeem van alle overblijfselen opgeschoond.
Nauwkeurigheid overtreft altijd snelheid. Zorg ervoor dat u elke stap overweegt voordat u deze zet. Je wilt niet dat iemand naar je bureau komt en zegt: “Nee, de andere Eric.”