Operativsystemet Linux erbjuder kommandon för att skapa och ta bort användare och kontrollera vilka som är inloggade. Det finns dock inget kommando för att lista användare, inloggade eller inte, på systemet.
Ändå finns det ett par sätt att lösa detta. Om du vill lära dig hur du listar användare i Linux, följ våra steg nedan.
Varför du bör kontrollera din Linux-användarlista
Det finns ett antal anledningar till att du kanske vill lista användare i Linux. Det är en bra praxis när det gäller att hitta och ta bort oanvända konton, för en. Ur säkerhetssynpunkt är det också ett bra sätt att se till att du inte har inkräktare som skapar användarkonton.
Detta är en administrativ uppgift som du förmodligen bör göra minst en gång i månaden. Om du kör en företags Linux-server kanske du vill göra det oftare.
Användare listade i /etc/passwd
Alla din Linux-servers användarkonton har poster i filen /etc/passwd . Varje rad representerar en användare och har sju fält separerade med kolon. Fälten ger information om användaren.
	- Användarnamn.
- Krypterat lösenord ( x anger att lösenordet faktiskt finns i /etc/shadow )
- Användar-ID-nummer (UID).
- Användarens grupp-ID-nummer (GID).
- Användarens fullständiga namn, om det finns med.
- Användarens hemkatalog.
- Inloggningsskal
Så, det leder oss till ett sätt att lista alla användare på Linux. Du kan använda kommandot less för att se hela filen, en skärm i taget.
less /etc/passwd 

Om du vill kontrollera om en viss användare finns i Linux-systemet, är det en bra användning för kommandot grep :
less passwd | grep jeff 

Om du inte får någon utdata finns den användaren inte på Linux-servern.
Ändå är det mycket information. Du kan trimma ner det till bara användarnamnet, till exempel genom att använda antingen awk- eller cut -kommandona:
awk -F: '{print $1}' /etc/passwd cut -d: -f1 /etc/passwd 

Det brukar vara mycket lättare att förstå, men det låter dig fortfarande se alla systembaserade användarkonton blandat med dina mänskliga användare.
Hur man använder getent för att lista användare
Ett annat kommando, getent , är mycket mer användbart. Den visar poster från vilken databas som helst som är konfigurerad i din servers /etc/nsswitch.conf-fil . En av dessa är passwd- databasen. För att använda getent för att visa en lista över alla Linux-användare fungerar det så här:
getent passwd
Utdatan ser exakt likadan ut som att använda kommandot less , men listar alla LDAP-användare på Linux-systemet. Återigen kan våra awk och cut -kommandon hjälpa till att bara se det första fältet, användarnamnen.
Om du vill kontrollera om en viss användare finns i Linux-systemet, gör getent det enkelt:
getent passwd jeff 
Återigen, ingen utdata från detta kommando talar om för dig att användaren inte existerar.
En annan fantastisk användning för getent är att ta reda på hur många användarkonton som finns på servern. Detta görs genom att leda getens utdata via wc- kommandot, så här:
getent passwd | wc -l 

Som du kan se har mitt Linux-system totalt 48 konton. Ganska intressant, eftersom jag är den enda som använder det, men det visar bara hur många systemkonton som skapas i Linux.
Sålla ut systemanvändare från normala användare
I Linux ögon är det ingen skillnad mellan en systemanvändare och en mänsklig. Varje gång du installerar operativsystemet skapas ett antal systemanvändare. Andra systemanvändare skapas för olika paket, som webb- eller e-posttjänstprogram.
Så, hur kan du lista bara vanliga, mänskliga användare på Linux-systemet? Nyckeln här är att förstå att när du skapar en vanlig användare, tilldelas dess UID inom ett visst antal siffror. Genom att kontrollera filen /etc/login.defs kan vi bestämma intervallet av UID-värden som är tillgängliga för vanliga användarkonton.
grep -E '^UID_MIN|^UID_MAX' /etc/login.defs 

Baserat på resultatet vet jag att normala användare bör ha ett UID mellan 1000 och 60000. Utifrån detta kan jag konstruera en getent -fråga som bara visar normala användare.
getent passwd {1000..60000} 

Tänk på att getent kommer att tyckas hänga sig även efter att det visar sin utdata. Du kan trycka på Ctrl-C för att avsluta processen, eller vänta tills den är klar. Det tar vanligtvis mindre än 15 sekunder att slutföra sökningen i passwd -databasen.
En mer generisk version av detta kommando tar hänsyn till olika UID_MIN- och UID_MAX -värden som olika servrar kan använda.
eval getent passwd {$(awk '/^UID_MIN/ {print $2}' /etc/login.defs)..$(awk '/^UID_MAX/ {print $2}' /etc/login.defs)} 
I det kommandot drar vi fördel av Linuxs förmåga att göra flera saker samtidigt. awk - kommandona får UID_MIN- och UID_MAX -värdena och använd dem sedan i getent -kommandot.
Låt oss säga att allt vi vill ha är användarnamnen. Återigen leder vi vår utdata genom cut -kommandot, så här:
eval getent passwd {$(awk '/^UID_MIN/ {print $2}' /etc/login.defs)..$(awk '/^UID_MAX/ {print $2}' /etc/login.defs)} | cut -d: -f1 

Detta kommando kan ta 10 till 15 sekunder att slutföra, så ha tålamod.
Hantera dina Linux-användare effektivt
Det är viktigt att hålla reda på vilka användarkonton som finns på ditt Linux-system. När du vet att en anställd har lämnat, var snabb att ta bort deras användarkonto. Att regelbundet lista dina Linux-användare hjälper till att se till att du fångar alla konton som kan ha fastnat.
Se samtidigt till att hålla koll på lösenordssäkerhetspolicyerna och uppmuntra dina användare att ändra sina lösenord regelbundet.