Senast uppdaterad den
Det är viktigt att veta vem som har tillgång till din Linux-dator (och kontroll över dina filer), men du kan enkelt lista användare i Linux för att ta reda på det. Här är hur.
De Linux operativsystem 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 indikerar 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 mindre kommando för att se hela filen, en skärm i taget.
mindre /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:
mindre 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 skära kommandon:
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, gegent, är mycket mer användbar. Den visar poster från valfri databas konfigurerad på din server /etc/nsswitch.conf fil. En av dem är passwd databas. Att använda gegent för att visa en lista över alla Linux-användare fungerar det så här:
getent passwd
Utgången ser exakt likadan ut som att använda mindre kommando, men listar alla LDAP-användare på Linux-systemet. Återigen vår awk och skära kommandon kan 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, gegent gör det enkelt:
getent passwd jeff.
Återigen, ingen utdata från det här kommandot talar om för dig att användaren inte existerar.
Ännu en fantastisk användning för gegent tar reda på hur många användarkonton som finns på servern. Detta görs med rör gegents utdata genom toalett kommando, så här:
gegent 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.
Rensa bort 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 nummer. Genom att kontrollera /etc/login.defs fil 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 vanliga användare bör ha ett UID mellan 1000 och 60000. Av detta kan jag konstruera en gegent fråga som bara visar vanliga användare.
getent lösenord {1000..60000}
Kom ihåg, gegent kommer att tyckas hänga även efter att den 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 passwd databas.
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. De awk kommandon hämta UID_MIN och UID_MAX värden, använd dem sedan inom gegent kommando.
Låt oss säga att allt vi vill ha är användarnamnen. Återigen leder vi vår produktion genom skära kommando, som så:
eval getent passwd {$(awk '/^UID_MIN/ {print $2}' /etc/login.defs)..$(awk '/^UID_MAX/ {print $2}' /etc/login.defs)} | skär -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äkerhetspolicyer och uppmuntra dina användare att ändra sina lösenord regelbundet.