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ář.