Att radera en användare på Linux involverar mer än vad man kan tro. Om du är systemadministratör, är det viktigt att ta bort alla spår av kontot och dess tillgång till systemet. Vi kommer att beskriva de nödvändiga stegen.
Om ditt mål endast är att ta bort ett användarkonto utan att oroa dig för pågående processer eller andra rensningsuppgifter, kan du följa stegen under avsnittet ”Ta bort användarkontot” nedan. Du behöver kommandot `deluser` i Debian-baserade distributioner och `userdel` i andra Linux-varianter.
Användarkonton i Linux
Sedan de första tidsdelningssystemen dök upp i början av 1960-talet, som möjliggjorde för flera användare att använda samma dator, har behovet av att separera filer och data mellan användare uppstått. Därmed skapades användarkonton – och lösenord.
Användarkonton innebär administration. De måste skapas när en användare får tillgång till datorn och tas bort när tillgången inte längre är nödvändig. I Linux finns en sekvens av steg som ska följas för att korrekt avlägsna användaren, deras filer och kontot från datorn.
Som systemadministratör är det ditt ansvar. Här är hur du ska gå tillväga.
Vårt Scenario
Det finns många anledningar till varför ett konto kan behöva tas bort. En anställd kan byta team eller lämna företaget. Ett konto kan ha skapats för ett kortvarigt samarbete med en extern konsult. Samarbete är vanligt inom akademin, där forskningsprojekt kan omfatta flera institutioner och företag. När ett projekt avslutas, behöver systemadministratören städa upp genom att ta bort onödiga konton.
Det värsta scenariot är när någon lämnar under omständigheter som inte är bra. Sådana situationer händer oftast plötsligt, med kort varsel. Det ger systemadministratören lite tid för planering, och kontot behöver snabbt låsas, stängas och raderas – med en säkerhetskopia av användarens filer för eventuella utredningar.
I vårt exempel ska vi anta att en användare, Eric, har gjort något som innebär att han omedelbart måste lämna platsen. Han är omedveten om detta, jobbar fortfarande och är inloggad. När du gett klartecken kommer säkerhetspersonalen att eskortera honom från byggnaden.
Allt är klart, och blicken är riktad mot dig.
Kontrollera Inloggningen
Låt oss undersöka om han verkligen är inloggad och i så fall, hur många sessioner han har aktiva. Kommandot `who` listar aktiva sessioner.
who
Eric är inloggad en gång. Låt oss se vilka processer han kör.
Granska Användarens Processer
Vi kan använda kommandot `ps` för att lista de processer som användaren kör. Med alternativet `-u` (user) kan vi begränsa utdata till processer som körs under detta användarkonto.
ps -u eric
Vi kan se samma processer med mer information genom att använda `top`. `top` har också ett `-U` (user) alternativ för att begränsa utdata till processer som ägs av en specifik användare. Observera att det här är ett stort ”U”.
top -U eric
Vi kan se minnes- och CPU-användningen för varje process, vilket hjälper till att hitta misstänksam aktivitet. Vi ska stänga av alla hans processer, så en snabb granskning av processerna är bra för att säkerställa att andra användare inte påverkas när du stänger ner användarkontots processer.
Det verkar som han inte gör så mycket, utan bara använder ett program för att visa en fil. Vi kan fortsätta. Innan vi avslutar hans processer, fryser vi kontot genom att låsa lösenordet.
Låsa Kontot
Vi låser kontot innan vi stänger ner processerna, då de kommer att logga ut användaren. Om vi redan har ändrat lösenordet kommer han inte att kunna logga in igen.
De krypterade lösenorden lagras i filen `/etc/shadow`. Du behöver normalt inte bry dig om de kommande stegen, men för att visa vad som händer i `/etc/shadow` när kontot låses, gör vi ett litet avbrott. Vi kan använda följande kommando för att visa de två första fälten i posten för Erics användarkonto.
sudo awk -F: '/eric/ {print $1,$2}' /etc/shadow
Kommandot `awk` analyserar fält från textfiler och manipulerar dem. Alternativet `-F` (fältseparator) talar om för `awk` att filen använder kolon ” : ” för att separera fälten. Vi söker efter en rad med mönstret ”eric”. För matchande rader skriver vi ut det första och andra fältet, vilket är kontonamnet och det krypterade lösenordet.
Posten för Erics konto visas.
För att låsa kontot använder vi kommandot `passwd`. Vi använder alternativet `-l` (lås) och anger användarkontot för att låsa det.
sudo passwd -l eric
Om vi kollar `/etc/passwd` igen ser vi vad som har hänt.
sudo awk -F: '/eric/ {print $1,$2}' /etc/shadow
Ett utropstecken har lagts till i början av det krypterade lösenordet. Det överskriver inte det första tecknet utan läggs till i början. Det är allt som krävs för att hindra en användare från att logga in.
Nu när vi har förhindrat användaren från att logga in, kan vi stänga av hans processer och logga ut honom.
Stänga Av Processerna
Det finns flera sätt att stänga av en användares processer, men kommandot nedan är allmänt tillgängligt och en modernare implementering än vissa alternativ. Kommandot `pkill` hittar och stänger av processer. Vi skickar signalen `KILL` och använder alternativet `-u` (user).
sudo pkill -KILL -u eric
Du returneras till kommandotolken på ett odramatiskt sätt. Låt oss kolla `who` igen för att försäkra oss om att något har hänt:
who
Hans session är borta. Han är utloggad och hans processer har stoppats. Det har tagit bort en del av brådskan. Nu kan vi ta det lugnt och fortsätta med städningen medan säkerhetsvakten går till Erics skrivbord.
Arkivering av Användarens Hemkatalog
Det är inte uteslutet att man i framtiden behöver tillgång till användarens filer. Antingen som del av en utredning eller för att hans ersättare kan behöva titta på hans arbete. Vi använder kommandot `tar` för att arkivera hela hemkatalogen.
Alternativen vi använder är:
c: Skapa en arkivfil.
f: Använd det angivna filnamnet som arkivets namn.
j: Använd bzip2-komprimering.
v: Visa utförlig information när arkivet skapas.
sudo tar cfjv eric-20200820.tar.bz /home/eric
En hel del skärmutdata kommer att visas i terminalfönstret. Använd kommandot `ls` för att kolla att arkivet har skapats. Vi använder alternativen `-l` (långt format) och `-h` (läsbart för människor).
ls -lh eric-20200802.tar.bz
En fil på 722 MB har skapats. Den kan nu kopieras till en säker plats för granskning vid behov.
Ta Bort Cron Jobb
Det är bäst att kolla om det finns några cron-jobb som är schemalagda för Erics konto. Ett cron-jobb är ett kommando som körs vid vissa tider eller intervall. Vi kan kolla om det finns cron-jobb genom att använda `ls`:
sudo ls -lh /var/spool/cron/crontabs/eric
Om det finns något på den här platsen betyder det att det finns cron-jobb för det användarkontot. Vi kan ta bort dem med kommandot `crontab`. Alternativet `-r` (ta bort) raderar jobben och `-u` (användare) talar om för `crontab` vilka jobb som ska tas bort.
sudo crontab -r -u eric
Jobben tas bort tyst. Om Eric hade misstänkt att han var på väg att bli bortkastad, hade han kanske planerat ett skadligt jobb. Detta steg är bra praxis.
Ta Bort Utskriftsjobb
Kanske hade användaren väntande utskriftsjobb? För säkerhets skull kan vi rensa utskriftskön från alla jobb som tillhör Erics konto. Kommandot `lprm` tar bort jobb från utskriftskön. Alternativet `-U` (användarnamn) låter dig ta bort jobb som ägs av användarkontot:
lprm -U eric
Jobben tas bort och du återvänder till kommandoraden.
Ta Bort Användarkontot
Vi har redan säkerhetskopierat filerna från katalogen `/home/eric/`, så vi kan ta bort användarkontot och katalogen `/home/eric/` samtidigt.
Kommandot beror på vilken Linux-distribution du använder. För Debian-baserade Linux-distributioner är kommandot `deluser`, och för resten av Linux-världen är det `userdel`.
Faktum är att båda kommandona finns på Ubuntu. Jag trodde att det ena var ett alias för det andra, men de är distinkta binära filer.
type deluser
type userdel
Även om båda finns, är det rekommenderat att använda `deluser` i Debian-baserade distributioner:
”`userdel` är ett lågnivåverktyg för att ta bort användare. På Debian ska administratörer vanligtvis använda `deluser(8)` istället.”
Det är tydligt, så kommandot vi använder på denna Ubuntu-dator är `deluser`. Eftersom vi också vill ta bort hemkatalogen, använder vi flaggan `–remove-home`:
sudo deluser --remove-home eric
Kommandot att använda på icke-Debian distributioner är `userdel`, med flaggan `–remove`:
sudo userdel --remove eric
Alla spår av användarkontot eric har tagits bort. Vi kan kolla att katalogen `/home/eric/` har raderats:
ls /home
Eric-gruppen har också tagits bort då användarkontot eric var det enda i den. Vi kan kontrollera genom att söka efter innehållet i `/etc/group` med `grep`:
sudo less /etc/group | grep eric
Det Är Slut
Eric är borta för sina synder. Säkerheten leder ut honom från byggnaden, och du har redan säkrat och arkiverat hans filer, tagit bort hans konto och rensat systemet från eventuella rester.
Noggrannhet är viktigare än snabbhet. Se till att du tänker igenom varje steg innan du agerar. Du vill inte att någon ska komma till ditt skrivbord och säga ”Nej, det var den andra Eric”.