Tento stručný průvodce vysvětluje, jak vytvořit seznam všech uživatelů v operačních systémech Linux. Než se pustíme do tématu, uvidíme, co je soubor /etc/passwd. Protože na tomto souboru závisíme v této příručce.
Stručná poznámka k souboru /etc/passwd
V Linuxu (a Unixu obecně) jsou základní informace o každém uživatelském účtu uloženy v "/etc/passwd" soubor. Není to nic jiného než prostý textový soubor, který obsahuje atributy všech uživatelských účtů přítomných v systému Linux.
Ve výchozím nastavení je tento soubor čitelný pro všechny uživatele pomocí jakýchkoli textových nebo grafických programů, jako je Vi, Nano, Gedit atd., nebo pomocí příkazů jako "cat ".
."Pokud tento soubor otevřete..
$ cat /etc/passwd
...uvidíte několik položek jako níže:
root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin bin:x:2:2:bin:/bin:/usr/sbin/nologin sys:x:3:3:sys:/dev:/usr/sbin/nologin sync:x:4:65534:sync:/bin:/bin/sync games:x:5:60:games:/usr/games:/usr/sbin/nologin [...]
Každý řádek v souboru /etc/passwd představuje jednoho uživatele. Uživatel root bude uveden nahoře. Každý řádek obsahuje sedm atributů nebo polí oddělených dvojtečkou bez mezer mezi jednotlivými poli. Názvy sedmi polí jsou uvedeny níže:
- jméno,
- heslo,
- ID uživatele,
- ID skupiny,
- gecos,
- domovský adresář,
- shell.
1. Jméno
"název" pole je přihlašovací jméno uživatele, které používáte k přihlášení do svého Linux boxu.
2. heslo
"heslo" pole obsahuje pouze písmeno X. Význam - heslo je zašifrováno a z bezpečnostních důvodů je uloženo v samostatném souboru s názvem "/etc/shadow". /etc/shadow běžní uživatelé nemohou číst. Zde X označuje, že uživatel má heslo. Pokud je toto pole prázdné, uživatel nemá žádné heslo, takže se může přihlásit bez hesla.
3. ID uživatele
„ID uživatele " (nebo zkráceně UID) označuje jedinečné číselné identifikační číslo uživatele. UID účtu root je 0 (nula). Čísla od 1 do 99 jsou vyhrazena pro systémové účty. A čísla začínající od 100 do 999 jsou vyhrazena pro běžné uživatele a skupiny.
4. ID skupiny
"ID skupiny" (nebo zkráceně GID) označuje identifikátor primární skupiny, do které uživatel patří. GID je obvykle stejné jako UID.
5. Gekony
"gekoni" pole obsahuje obecné informace o uživateli. Může například obsahovat skutečné jméno uživatele. Toto pole může být buď prázdné oddělené dvěma dvojtečkami, nebo může obsahovat více položek oddělených čárkami.
6. Domovský adresář
"domovský adresář" pole označuje úplnou cestu domovského adresáře uživatele, například /home/sk . Toto je adresář, ve kterém je uživatel jako první, když se přihlásí do systému. Domovský adresář obvykle obsahuje programy a konfigurační soubory patřící uživateli.
7. Shell
Poslední pole je "shell" . Označuje úplnou cestu výchozího shellu pro daného uživatele.
Nyní si vezměme následující řádek jako příklad:
root:x:0:0:root:/root:/bin/bash
Ve výše uvedeném řádku
- kořen - je uživatelské jméno,
- x - označuje, že uživatel root má heslo,
- 0 - První 0 (nula) označuje UID,
- 0 - Druhá nula označuje GID,
- kořen – Označuje skutečné jméno uživatele.
- /root - Je to domovský adresář uživatele root,
- /bin/bash - Výchozí shell pro uživatele root.
Doufám, že získáte základní představu o souboru /etc/passwd. Nyní se vraťme k našemu tématu, tj. seznamu všech uživatelů v systému Linux.
Seznam všech uživatelů v Linuxu
Existuje několik způsobů, jak uvést všechny uživatele v systému Linux. Zde jsem zahrnul všechny možné způsoby.
1. Vypište všechny uživatele v Linuxu pomocí příkazu cat
Jak název napovídá, příkaz cat se obecně používá ke zřetězení souborů a tisku obsahu souborů.
Chcete-li zobrazit seznam všech uživatelů v systému Linux pomocí příkazu cut, spusťte:
$ cat /etc/passwd
Tento příkaz zobrazí seznam všech dostupných uživatelů
Ukázkový výstup:
root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin bin:x:2:2:bin:/bin:/usr/sbin/nologin sys:x:3:3:sys:/dev:/usr/sbin/nologin sync:x:4:65534:sync:/bin:/bin/sync games:x:5:60:games:/usr/games:/usr/sbin/nologin man:x:6:12:man:/var/cache/man:/usr/sbin/nologin lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin mail:x:8:8:mail:/var/mail:/usr/sbin/nologin news:x:9:9:news:/var/spool/news:/usr/sbin/nologin uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin proxy:x:13:13:proxy:/bin:/usr/sbin/nologin www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin backup:x:34:34:backup:/var/backups:/usr/sbin/nologin list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin systemd-network:x:100:102:systemd Network Management,,,:/run/systemd/netif:/usr/sbin/nologin systemd-resolve:x:101:103:systemd Resolver,,,:/run/systemd/resolve:/usr/sbin/nologin syslog:x:102:106::/home/syslog:/usr/sbin/nologin messagebus:x:103:107::/nonexistent:/usr/sbin/nologin _apt:x:104:65534::/nonexistent:/usr/sbin/nologin uuidd:x:105:111::/run/uuidd:/usr/sbin/nologin avahi-autoipd:x:106:112:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/usr/sbin/nologin usbmux:x:107:46:usbmux daemon,,,:/var/lib/usbmux:/usr/sbin/nologin dnsmasq:x:108:65534:dnsmasq,,,:/var/lib/misc:/usr/sbin/nologin rtkit:x:109:114:RealtimeKit,,,:/proc:/usr/sbin/nologin cups-pk-helper:x:110:116:user for cups-pk-helper service,,,:/home/cups-pk-helper:/usr/sbin/nologin speech-dispatcher:x:111:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/false whoopsie:x:112:117::/nonexistent:/bin/false kernoops:x:113:65534:Kernel Oops Tracking Daemon,,,:/:/usr/sbin/nologin saned:x:114:119::/var/lib/saned:/usr/sbin/nologin avahi:x:116:122:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/usr/sbin/nologin colord:x:117:123:colord colour management daemon,,,:/var/lib/colord:/usr/sbin/nologin hplip:x:118:7:HPLIP system user,,,:/var/run/hplip:/bin/false geoclue:x:119:124::/var/lib/geoclue:/usr/sbin/nologin gnome-initial-setup:x:120:65534::/run/gnome-initial-setup/:/bin/false gdm:x:121:125:Gnome Display Manager:/var/lib/gdm3:/bin/false sk:x:1000:1000:sk,,,:/home/sk:/bin/bash Debian-exim:x:122:128::/var/spool/exim4:/usr/sbin/nologin pulse:x:115:120:PulseAudio daemon,,,:/var/run/pulse:/usr/sbin/nologin systemd-timesync:x:123:127:systemd Time Synchronization,,,:/run/systemd:/usr/sbin/nologin tss:x:124:131:TPM software stack,,,:/var/lib/tpm:/bin/false tcpdump:x:125:132::/nonexistent:/usr/sbin/nologin _flatpak:x:126:133:Flatpak system-wide installation helper,,,:/nonexistent:/usr/sbin/nologin systemd-coredump:x:999:999:systemd Core Dumper:/:/usr/sbin/nologin
Vypište všechny uživatele v Linuxu pomocí příkazu cat
Jak jsem již zmínil, první pole ve výše uvedených položkách představuje uživatele. Pokud nechcete všechna pole, ale chcete zobrazovat pouze uživatelská jména, pomohou vám následující metody.
3. Seznam uživatelů pomocí příkazu cut
Příkaz "cut" se používá k odstranění částí (nebo polí) z každého řádku souborů.
Chcete-li zobrazit seznam všech uživatelů s příkazem cut v systému Linux, spusťte:
$ cut -d: -f1 /etc/passwd
Tento příkaz zobrazí pouze uživatelská jména ze souboru /etc/passwd a ignoruje všechna ostatní pole.
Ukázkový výstup:
root daemon bin sys sync games man lp mail news uucp proxy www-data backup list irc gnats nobody systemd-network systemd-resolve syslog messagebus _apt uuidd avahi-autoipd usbmux dnsmasq rtkit cups-pk-helper speech-dispatcher whoopsie kernoops saned avahi colord hplip geoclue gnome-initial-setup gdm sk Debian-exim pulse systemd-timesync tss tcpdump _flatpak systemd-coredump
Vypište všechny uživatele v Linuxu pomocí příkazu cut
4. Tisk uživatelů v Linuxu pomocí příkazu awk
Můžeme také použít příkaz "awk" pro výpis všech uživatelů v Linuxu.
$ awk -F':' '{ print $1}' /etc/passwd
Tento příkaz také zobrazí pouze uživatele a vynechá všechny ostatní podrobnosti.
Vypište všechny uživatele v Linuxu pomocí příkazu awk
5. Zobrazit seznam uživatelů s compgen
Compgen je vestavěný BASH k manipulaci s programovatelnými dokončovacími zařízeními.
Chcete-li zobrazit seznam všech uživatelů používajících compgen, spusťte:
$ compgen -u
6. Zobrazit všechny uživatele pomocí příkazu getent
Dalším způsobem, jak zobrazit seznam uživatelů v Linuxu, je použít "getent" příkaz jako níže:
$ getent passwd
Tento příkaz přečte soubor /etc/passwd a zobrazí seznam všech uživatelů v tomto souboru.
Vypište všechny uživatele v Linuxu pomocí příkazu awk
Jednou významnou výhodou příkazu getent je, že nejen uvádí uživatele v souboru /etc/passwd, ale všechny uživatele ve všech nakonfigurovaných backendech userdb, například LDAP, na daném systému.
7. Seznam uživatelů pomocí příkazů „více“ nebo „méně“
Více a méně příkazů se používá k otevření daného souboru pro interaktivní čtení, což umožňuje posouvání a vyhledávání.
Chcete-li vytisknout všechny uživatele pomocí více či méně příkazů, spusťte:
$ more /etc/passwd
Nebo,
$ less /etc/passwd
Související čtení:
- Jak vypsat seznam členů skupiny v Linuxu
- Jak najít aktuálně přihlášené uživatele v Linuxu
- Jak monitorovat aktivitu uživatele v systému Linux
- Jak omezit přístup uživatelů k systému Linux
- Rozdíl mezi více, méně a většinou příkazů
- Jak přidat, odstranit a udělit uživatelům v Ubuntu oprávnění sudo
- Jak zjistit, do kterých skupin uživatel v Linuxu patří
- Správný způsob úpravy souborů /etc/passwd a /etc/group v systému Linux
Doufám, že to pomůže.