Slik sletter du en bruker på Linux (og fjerner alle spor)

Å slette en bruker på Linux innebærer mer enn du tror. Hvis du er systemadministrator, vil du fjerne alle spor av kontoen og dens tilgang fra systemene dine. Vi viser deg trinnene du bør ta.

Hvis du bare ønsker å slette en brukerkonto fra systemet ditt og ikke er bekymret for å avslutte noen kjørende prosesser og andre oppryddingsoppgaver, følg trinnene i delen «Slette brukerkontoen» nedenfor. Du trenger deluser-kommandoen på Debian-baserte distribusjoner og userdel-kommandoen på andre Linux-distribusjoner.

Brukerkontoer på Linux

Helt siden første tidsdelingssystemer dukket opp på begynnelsen av 1960-tallet og brakte med seg muligheten for flere brukere til å jobbe på en enkelt datamaskin, har det vært behov for å isolere og oppdele filene og dataene til hver bruker fra alle de andre brukerne. Og så brukerkontoer—og passord-ble født.

Brukerkontoer har en administrativ overhead. De må opprettes når brukeren først trenger tilgang til datamaskinen. De må fjernes når den tilgangen ikke lenger er nødvendig. På Linux er det en sekvens av trinn som bør følges for å korrekt og metodisk fjerne brukeren, filene deres og kontoen deres fra datamaskinen.

Hvis du er systemadministrator, faller ansvaret på deg. Slik går du frem.

Vårt scenario

Det kan være mange grunner til at en konto må slettes. En medarbeider kan flytte til et annet team eller forlate selskapet helt. Kontoen kan ha blitt satt opp for et kortsiktig samarbeid med en besøkende fra et annet selskap. Team-ups er vanlig i akademia, der forskningsprosjekter kan spenne over avdelinger, forskjellige universiteter og til og med kommersielle enheter. Ved avslutningen av prosjektet må systemadministratoren utføre rengjøringen og fjerne unødvendige kontoer.

Det verste scenariet er når noen forlater under en sky på grunn av en forseelse. Slike hendelser skjer vanligvis plutselig, med lite forvarsel. Det gir systemadministratoren svært lite tid til å planlegge, og det haster med å få kontoen låst, stengt og slettet – med en kopi av brukerens filer sikkerhetskopiert i tilfelle de er nødvendige for etterforskning.

I scenariet vårt vil vi late som om en bruker, Eric, har gjort noe som garanterer at han blir fjernet umiddelbart fra stedet. For øyeblikket er han uvitende om dette, han jobber fortsatt, og logget på. Så snart du gir et nikk til sikkerheten, vil han bli eskortert fra bygningen.

  Hvordan bruke timeout-kommandoen på Linux

Alt er klart. Alle øyne er rettet mot deg.

Sjekk påloggingen

La oss se om han virkelig er pålogget, og hvis han er det, hvor mange økter han jobber med. Den som kommanderer vil vise aktive økter.

who

Eric er pålogget én gang. La oss se hvilke prosesser han kjører.

Gjennomgang av brukerens prosesser

Vi kan bruke ps-kommandoen til liste opp prosessene denne brukeren kjører. Alternativet -u (bruker) lar oss fortelle ps å begrense produksjonen til prosessene som kjører under eierskapet til den brukerkontoen.

ps -u eric

Vi kan se de samme prosessene med mer informasjon ved å bruke toppkommandoen. top har også et -U (bruker)-alternativ for å begrense produksjonen til prosessene som eies av en enkelt bruker. Merk at denne gangen er det en stor «U».

top -U eric

Vi kan se minnet og CPU-bruken til hver oppgave, og kan raskt se etter alt med mistenkelig aktivitet. Vi er i ferd med å tvangsdrepe alle prosessene hans, så det er tryggest å bruke et øyeblikk på å raskt gjennomgå prosessene, og sjekke og sørge for at andre brukere ikke kommer til å bli forstyrret når du avslutter brukerkontoen erics prosesser.

Det ser ikke ut som han gjør mye, bare bruker mindre for å se en fil. Vi kan trygt fortsette. Men før vi dreper prosessene hans, fryser vi kontoen ved å låse passordet.

Låser kontoen

Vi låser kontoen før vi dreper prosessene fordi når vi dreper prosessene vil den logge ut brukeren. Hvis vi allerede har endret passordet hans, vil han ikke kunne logge på igjen.

De krypterte brukerpassordene lagres i filen /etc/shadow. Du vil vanligvis ikke bry deg med disse neste trinnene, men for at du skal kunne se hva som skjer i /etc/shadow-filen når du låser kontoen, tar vi en liten omvei. Vi kan bruke følgende kommando for å se på de to første feltene i oppføringen for eric-brukerkontoen.

sudo awk -F: '/eric/ {print $1,$2}' /etc/shadow

awk-kommandoen analyserer felt fra tekstfiler og eventuelt manipulerer dem. Vi bruker alternativet -F (feltseparator) for å fortelle awk at filen bruker et kolon ” : ” for å skille feltene. Vi skal søke etter en linje med mønsteret «eric» i den. For samsvarende linjer skriver vi ut det første og andre feltet. Dette er kontonavnet og det krypterte passordet.

  Slik installerer du Linux 5.0-oppdateringen på Ubuntu 18.04 LTS

Oppføringen for brukerkonto eric skrives ut for oss.

For å låse kontoen bruker vi passwd-kommandoen. Vi bruker alternativet -l (lås) og send inn navnet på brukerkontoen for å låse.

sudo passwd -l eric

Hvis vi sjekker /etc/passwd-filen igjen, vil vi se hva som har skjedd.

sudo awk -F: '/eric/ {print $1,$2}' /etc/shadow

Et utropstegn er lagt til i starten av det krypterte passordet. Den overskriver ikke det første tegnet, den legges bare til i starten av passordet. Det er alt som kreves for å hindre en bruker fra å kunne logge på den kontoen.

Nå som vi har forhindret brukeren i å logge på igjen, kan vi drepe prosessene hans og logge ham ut.

Å drepe prosessene

Det er forskjellige måter å drepe en brukers prosesser på, men kommandoen som vises her er allment tilgjengelig og er en mer moderne implementering enn noen av alternativene. Kommandoen pkill vil finne og drepe prosesser. Vi sender inn KILL-signalet og bruker alternativet -u (bruker).

sudo pkill -KILL -u eric

Du kommer tilbake til ledeteksten på en desidert anti-klimaktisk måte. For å være sikker på at noe har skjedd, la oss sjekke hvem igjen:

who

Økten hans er borte. Han har blitt logget av og prosessene hans er stoppet. Det har tatt noe av det haster ut av situasjonen. Nå kan vi slappe av litt og fortsette med resten av moppingen mens sikkerheten tar en tur bort til Erics skrivebord.

Arkivering av brukerens hjemmekatalog

Det er ikke utelukket at i et scenario som dette vil det kreves tilgang til brukerens filer i fremtiden. Enten som en del av en etterforskning eller rett og slett fordi deres erstatter kanskje må henvise tilbake til forgjengerens arbeid. Vi bruker tar-kommandoen for å arkivere hele hjemmekatalogen.

Alternativene vi bruker er:

c: Lag en arkivfil.
f: Bruk det angitte filnavnet for navnet på arkivet.
j: Bruk bzip2-komprimering.
v: Gi detaljerte utdata når arkivet opprettes.

sudo tar cfjv eric-20200820.tar.bz /home/eric

Mye skjermutdata vil rulle i terminalvinduet. For å kontrollere at arkivet er opprettet, bruk ls-kommandoen. Vi bruker alternativene -l (langt format) og -h (lesbare mennesker).

ls -lh eric-20200802.tar.bz

En fil på 722 MB er opprettet. Dette kan kopieres et trygt sted for senere vurdering.

Fjerner cron-jobber

Vi bør sjekke i tilfelle det er planlagt noen cron-jobber for brukerkontoen eric. En cron-jobb er en kommando som utløses til angitte tider eller intervaller. Vi kan sjekke om det er planlagt noen cron-jobber for denne brukerkontoen ved å bruke ls:

sudo ls -lh /var/spool/cron/crontabs/eric

Hvis noe eksisterer på denne plasseringen, betyr det at det er cron-jobber i kø for den brukerkontoen. Vi kan slette dem med denne crontab-kommandoen. Alternativet -r (fjern) vil fjerne jobbene, og alternativet -u (bruker) forteller crontab hvis jobber skal fjernes.

sudo crontab -r -u eric

Jobbene slettes stille. For alt vi vet, hvis Eric hadde mistenkt at han var i ferd med å bli kastet ut, kunne han ha planlagt en ondsinnet jobb. Dette trinnet er beste praksis.

  Slik viser du dato og klokkeslett i Linux-terminalen (og bruker den i Bash-skript)

Fjerne utskriftsjobber

Kanskje brukeren hadde ventende utskriftsjobber? Bare for å være sikker kan vi fjerne utskriftskøen for alle jobber som tilhører brukerkontoen eric. lprm-kommandoen fjerner jobber fra utskriftskøen. Alternativet -U (brukernavn) lar deg fjerne jobber som eies av den navngitte brukerkontoen:

lprm -U eric

Jobbene fjernes og du returneres til kommandolinjen.

Sletting av brukerkontoen

Vi har allerede sikkerhetskopiert filene fra /home/eric/-katalogen, slik at vi kan gå videre og slette brukerkontoen og slette /home/eric/-katalogen samtidig.

Kommandoen som skal brukes avhenger av hvilken distribusjon av Linux du bruker. Til Debian-baserte Linux-distribusjonerkommandoen er deluser, og for resten av Linux-verdenendet er brukerdel.

Faktisk, på Ubuntu er begge kommandoene tilgjengelige. Jeg forventet halvt at den ene skulle være et alias til den andre, men de er distinkte binære filer.

type deluser
type userdel

Selv om de begge er tilgjengelige, er anbefalingen å bruke deluser på Debian-avledede distribusjoner:

«userdel er et lavnivåverktøy for å fjerne brukere. På Debian bør administratorer vanligvis bruke deluser(8) i stedet.»

Det er tydelig nok, så kommandoen som skal brukes på denne Ubuntu-datamaskinen er feilbruker. Fordi vi også vil at hjemmekatalogen deres skal fjernes, bruker vi flagget –remove-home:

sudo deluser --remove-home eric

Kommandoen som skal brukes for ikke-Debian-distribusjoner er userdel, med flagget –remove:

sudo userdel --remove eric

Alle spor etter brukerkontoen eric er slettet. Vi kan sjekke at /home/eric/katalogen er fjernet:

ls /home

Eric-gruppen er også fjernet fordi brukerkontoen eric var den eneste oppføringen i den. Vi kan sjekke dette ganske enkelt ved å sende innholdet i /etc/group gjennom grep:

sudo less /etc/group | grep eric

Det er en Wrap

Eric, for sine synder, er borte. Sikkerheten leder ham fortsatt ut av bygningen, og du har allerede sikret og arkivert filene hans, slettet kontoen hans og renset systemet for eventuelle rester.

Nøyaktighet trumfer alltid fart. Sørg for at du vurderer hvert trinn før du tar det. Du vil ikke at noen går bort til skrivebordet ditt og sier «Nei, den andre Eric.»