Aby správce systému mohl konfigurovat a spravovat oprávnění, potřebuje seznam všech uživatelů. Existují příkazy pro vytvoření uživatele, odstranění uživatele, ale je kritickým úkolem vypsat všechny uživatele v systému Linux. Z bezpečnostních důvodů je také zcela nezbytné ujistit se, že máte správný počet uživatelů a že jste některé nezapomněli smazat.
Zde v LinuxAPT, jako součást našich služeb správy serveru, pravidelně pomáháme našim zákazníkům provádět související dotazy na systém Linux.
V této souvislosti se podíváme na to, jak vytvořit seznam uživatelů v systémech Linux.
Jak zobrazit seznam všech uživatelů pomocí souboru /etc/passwd?
Informace o uživateli jsou uloženy v souboru /etc/passwd. Obsahuje jeden řádek s uživatelským jménem pro každý uživatelský účet v systému. K zobrazení obsahu souboru můžete použít příkaz less nebo cat:
$ cat /etc/passwd
Ve výstupu uvidíte, že každý řádek má sedm polí oddělených dvojtečkami, které obsahují následující informace:
- Uživatelské jméno.
- Šifrované heslo, kde x znamená, že heslo je uloženo v souboru etc/shadow.
- UID (ID uživatele).
- GID (ID skupiny uživatele).
- Celé jméno uživatele.
- Uživatel $HOME adresář.
- Cesta přihlašovacího prostředí.
Pokud chcete vypsat pouze uživatelské jméno, můžete pomocí příkazů awk nebo cut vytisknout pouze uživatelské jméno:
awk -F: '{ print $1}' /etc/passwd
cut -d: -f1 /etc/passwd
Výstup bude následující:
Output
root
daemon
bin
sys
sync
games
man
lp
news
uucp
proxy
www-data
...
...
geoclue
gdm
gnome-initial-setup
sshd
Jak zobrazit seznam všech uživatelů pomocí příkazu getent?
Příkaz Getent načte položky z databází. Zobrazí seznam uživatelů z databáze LDAP a souboru /etc/passwd.
Chcete-li získat seznam všech uživatelů systému Linux, zadejte následující příkaz:
$ getent passwd
Výstup bude stejný jako obsah souboru /etc/passwd. Můžete také použít awk nebo cut k vytištění pouze uživatelského jména:
getent passwd | awk -F: '{ print $1}'
getent passwd | cut -d: -f1
Jak zkontrolovat, zda v systému Linux existuje uživatel?
Nyní víme, jak získat seznam uživatelů. Ale co když chcete zkontrolovat, zda uživatel v aktuálním systému existuje nebo ne. Můžete zkontrolovat pomocí příkazu grep a bez použití příkazu grep.
Například chceme zkontrolovat, zda uživatel linuxapt existuje nebo ne, pak byste měli zadat příkaz, jak je uvedeno níže:
$ getent passwd | grep linuxapt
$ getent passwd linuxapt
Output
linuxapt:x:1001:1001:,,,:/home/linuxapt:/bin/bash
Pokud uživatel v systému existuje, vytiskne podrobnosti o tomto uživateli, jinak nevytiskne nic.
Pokud chcete, aby ve vašem systému existoval celkový počet uživatelů, můžete jej získat pomocí :
$ getent passwd | wc -l
Vrátí počet uživatelů jako následující výstup:
Output
47
Jak odlišit systémové a běžné uživatele?
Systémoví uživatelé se vytvářejí, když instalujete OS nebo aktualizujete nové balíčky. Mezi systémovými uživateli a běžnými uživateli již není žádný rozdíl.
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á UID (User ID) buď je to systémový uživatel nebo normální uživatel. Když normální uživatel přidá uživatele pomocí příkazu adduser. Uživatel bude přidán a UID bude přiřazeno automaticky s odkazem na UID_MIN a UID_MAX ze souboru /etc/login.defs.
UID_MIN a UID_MAX můžete zkontrolovat níže uvedeným příkazem:
$ grep -E '^UID_MIN|^UID_MAX' /etc/login.defs
Zobrazí výstup jako níže:
Output
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 jedinečné ID mezi 1000 a 60000.
Nyní vydáme příkaz k získání seznamu normálních uživatelů, jejichž jedinečné ID mezi 1000 a 60000.
$ getent passwd {1000..60000}
Output
linuxapt:x:1000:1000:LinuxAPT,,,:/home/linuxapt:/bin/bash
demouser:x:1001:1001:,,,:/home/demouser:/bin/bash
Chcete-li vytisknout pouze uživatelská jména, zadejte následující příkaz:
$ eval getent passwd {$(awk '/^UID_MIN/ {print $2}' /etc/login.defs)..$(awk '/^UID_MAX/ {print $2}' /etc/login.defs)} | cut -d: -f1
Output
linuxapt
demouser
Jak získat seznam skupin v Linuxu?
Všechny skupiny v Linuxu můžete vypsat pomocí následujícího příkazu:
$ getent group
Seznam všech skupin s konkrétním uživatelem získáte pomocí následujícího příkazu:
$ getent group | grep linuxapt