GNU/Linux >> Znalost Linux >  >> Linux

Jak vypsat seznam uživatelů v Linuxu

Chtěli jste někdy vypsat seznam všech uživatelů ve vašem systému Linux nebo spočítat počet uživatelů v systému? Existují příkazy pro vytvoření uživatele, odstranění uživatele, výpis přihlášených uživatelů, ale jaký je příkaz pro výpis všech uživatelů v Linuxu?

Tento tutoriál vám ukáže, jak vytvořit seznam uživatelů v systémech Linux.

Získejte seznam všech uživatelů pomocí /etc/passwd Soubor #

Informace o místním uživateli jsou uloženy v /etc/passwd soubor. Každý řádek v tomto souboru představuje přihlašovací údaje pro jednoho uživatele. K otevření souboru můžete buď použít cat nebo less :

less /etc/passwd

Každý řádek v souboru má sedm polí oddělených dvojtečkami, které obsahují následující informace:

  • Uživatelské jméno.
  • Šifrované heslo (x znamená, že heslo je uloženo v /etc/shadow soubor).
  • Číslo ID uživatele (UID).
  • ID skupiny uživatele (GID).
  • Celé jméno uživatele (GECOS).
  • Domovský adresář uživatele.
  • Přihlašovací prostředí (výchozí nastavení je /bin/bash ).

Pokud chcete zobrazit pouze uživatelské jméno, můžete použít buď awk nebo cut příkazy pro tisk pouze prvního pole obsahujícího uživatelské jméno:

awk -F: '{ print $1}' /etc/passwd
cut -d: -f1 /etc/passwd
root
daemon
bin
sys
sync
...
...
sshd
vagrant
jack
anne

Získejte seznam všech uživatelů pomocí příkazu getent #

getent zobrazí záznamy z databází nakonfigurovaných v /etc/nsswitch.conf soubor, včetně passwd databáze, kterou lze použít k dotazování na seznam všech uživatelů.

Chcete-li získat seznam všech uživatelů systému Linux, zadejte následující příkaz:

getent passwd

Jak vidíte, výstup je stejný jako při zobrazení obsahu /etc/passwd soubor. Pokud k ověření uživatele používáte LDAP, getent zobrazí všechny uživatele Linuxu z /etc/passwd soubor a databázi LDAP.

Můžete také použít awk nebo cut vytisknout pouze první pole obsahující uživatelské jméno:

getent passwd | awk -F: '{ print $1}'
getent passwd | cut -d: -f1

Zkontrolujte, zda v systému Linux existuje uživatel #

Nyní, když víme, jak vytvořit seznam všech uživatelů, abychom mohli zkontrolovat, zda uživatel existuje v našem Linuxovém boxu, můžeme jednoduše filtrovat seznam uživatelů přesměrováním seznamu do grep příkaz.

Chcete-li například zjistit, zda uživatel se jménem jack existuje v našem systému Linux, můžeme použít následující příkaz:

getent passwd | grep jack

Pokud uživatel existuje, výše uvedený příkaz vytiskne přihlašovací údaje uživatele. Žádný výstup, což znamená, že uživatel neexistuje.

Můžeme také zkontrolovat, zda uživatel existuje bez použití grep příkaz, jak je znázorněno níže:

getent passwd jack

Stejně jako dříve, pokud uživatel existuje, příkaz zobrazí přihlašovací údaje uživatele.

Pokud chcete zjistit, kolik uživatelských účtů máte ve svém systému, použijte getent passwd výstup do wc příkaz:

getent passwd | wc -l
33

Jak můžete vidět z výstupu výše, můj systém Linux má 33 uživatelských účtů.

Systémoví a normální uživatelé #

Mezi systémem a běžnými (normálními) uživateli není žádný skutečný technický rozdíl. Uživatelé systému se obvykle vytvářejí při instalaci operačního systému a nových balíčků. V některých případech můžete vytvořit systémového uživatele, kterého budou používat některé aplikace.

Normální uživatelé jsou uživatelé vytvoření rootem nebo jiným uživatelem s právy sudo. Obvykle má normální uživatel skutečný přihlašovací shell a domovský adresář.

Každý uživatel má číselné uživatelské ID zvané UID. Pokud není zadáno při vytváření nového uživatele pomocí useradd UID bude automaticky vybráno z /etc/login.defs soubor v závislosti na UID_MIN a UID_MIN hodnoty.

Chcete-li zkontrolovat UID_MIN a UID_MIN hodnot ve vašem systému, můžete použít následující příkaz:

grep -E '^UID_MIN|^UID_MAX' /etc/login.defs
UID_MIN          1000
UID_MAX         60000

Z výše uvedeného výstupu můžeme vidět, že všichni normální uživatelé by měli mít UID mezi 1000 a 60000. Znalost minimální a maximální hodnoty nám umožňuje dotazovat se na seznam všech normálních uživatelů v našem systému.

Následující příkaz zobrazí seznam všech běžných uživatelů v našem systému Linux:

getent passwd {1000..60000}
vagrant:x:1000:1000:vagrant,,,:/home/vagrant:/bin/bash
jack:x:1001:1001:,,,:/home/jack:/bin/bash
anne:x:1002:1002:Anne Stone,,,:/home/anne:/bin/bash
patrick:x:1003:1003:Patrick Star,,,:/home/patrick:/usr/sbin/nologin

Váš systém UID_MIN a UID_MIN hodnoty se mohou lišit, takže obecnější verze výše uvedeného příkazu by byla:

eval getent passwd {$(awk '/^UID_MIN/ {print $2}' /etc/login.defs)..$(awk '/^UID_MAX/ {print $2}' /etc/login.defs)}

Pokud chcete vytisknout pouze uživatelská jména, stačí výstup převést do cut příkaz:

eval getent passwd {$(awk '/^UID_MIN/ {print $2}' /etc/login.defs)..$(awk '/^UID_MAX/ {print $2}' /etc/login.defs)} | cut -d: -f1

Závěr č.

V tomto tutoriálu jste se naučili, jak vytvářet seznamy a filtrovat uživatele ve vašem systému Linux a jaké jsou hlavní rozdíly mezi systémovými a normálními uživateli Linuxu.

Stejné příkazy platí pro jakoukoli distribuci Linuxu, včetně Ubuntu, CentOS, RHEL, Debian a Linux Mint.

Pokud máte nějaké dotazy, neváhejte zanechat komentář.


Linux
  1. Jak vytvořit více uživatelských účtů v Linuxu

  2. Jak najít všechny uživatele Sudo v Linuxu

  3. Seznam uživatelů v Linuxu – Nejlepší metoda

  1. Jak vytvořit seznam uživatelů v CentOS 7

  2. 3 způsoby, jak zobrazit seznam uživatelů v Linuxu

  3. Jak vypsat všechny uživatele ve skupině Linuxu?

  1. Jak přidat uživatele do skupiny v Linuxu

  2. Jak zobrazit seznam uživatelů v Linuxu, příkaz Seznam všech uživatelů

  3. Jak vypsat seznam uživatelů Linuxu na Ubuntu