如何在Linux中列出所有用户
由于Linux是一种多用户操作系统,因此它可能由多个用户组成。
本文简介介绍了如何在Linux操作系统中列出所有用户。
在进入主题之前,我们将看到什么是/etc/passwd文件。
因为我们通过本教程取决于此文件。
关于/etc/passwd文件的简要说明
在Linux(和Unix通常)中,有关每个用户帐户的基本信息存储在"/etc/passwd"文件中。
它只是一个纯文本文件,其中包含Linux系统中存在的所有用户帐户的属性。
默认情况下,所有用户都可以通过任何文本或者图形程序(如VI,Nano,GEDIT等)或者命令等"CAT"的命令来读取此文件。
如果我们打开此文件..
$cat /etc/passwd
...我们将看到以下几个条目:
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 [...]
/etc/passwd文件中的每一行代表单个用户。
root用户将列在顶部。
每行包含由冒号分隔的七个属性或者字段,而每个字段之间的任何空格。
七个字段的名称如下所示:
- 名称,
- 密码,
- 用户身份,
- 组ID,
- 注释,
- 主目录,
- shell 。
"名称"字段是我们用来登录Linux框的用户的登录名。
"密码"字段仅包含一个字母X.这意味着密码被加密并存储在名为"/etc/shadow"的单独文件中,以供安全用途。
普通用户无法读取/etc/shadow。
这里x表示用户有密码。
如果此字段为空,则用户没有密码,因此他可以在没有密码的情况下登录。
"用户ID"(或者简称UID)表示用户的唯一数字标识号。
root帐户的UID为0(零)。
从1到99的数字保留用于系统帐户。
从100到999开始的数字保留用于普通用户和组。
"组ID"(或者简短的GID)表示用户所属的主要组标识符。
GID通常与UID相同。
"注释"字段包含用户的一般信息。
例如,它可能包含用户的真名。
此提交的可能是空分隔的两个冒号,或者它可能包含由逗号分隔的多个条目。
"主目录"字段表示用户主目录的完整路径,例如/home/sk。
这是用户登录系统时用户首先的目录。
主目录通常包含属于用户的程序和配置文件。
最后一个提交的是"shell"。
它表示该用户的默认shell的完整路径。
现在,让我们以以下行为例:
root:x:0:0:root:/root:/bin/bash
在上面的一线,
- root - 是用户名,
- X - 表示root用户有密码,
- 0 - 第一个0(零)表示UID,
- 0 - 第二个零表示GID,
- root - 它表示用户的真实姓名。
-/root - 它是root用户的主目录,
-/bin/bash - root用户的默认shell。
希望我们获得关于/etc/passwd文件的基本想法。
现在让我们回到我们的主题:列出Linux系统中的所有用户。
列出Linux中的所有用户
有几种方法可以在Linux系统中列出所有用户。
其中我已经包括所有可能的方式。
cat 命令
正如名称所示,CAT命令通常用于连接文件并打印文件的内容。
要使用CUT命令列出Linux系统中的所有用户,请运行:
$cat /etc/passwd
此命令将列出所有可用的用户
示例输出:
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
正如我已经提到的那样,上述条目中的第一个字段代表了用户。
如果我们不想要所有字段,但仅显示用户名,则以下方法将有所帮助。
cut命令
"cut"命令用于从每行文件中删除部分(或者字段)。
要在Linux系统中列出具有CUT命令的所有用户,请运行:
$cut -d: -f1 /etc/passwd
此命令只能从/etc/passwd文件中显示用户名并忽略所有其他字段。
示例输出:
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
awk命令
我们还可以使用"awk"命令列出Linux中的所有用户。
$awk -F':' '{ print }' /etc/passwd
此命令还将仅显示用户并省略所有其他详细信息。
Compgen.
Compgen是Bash内置,以操纵可编程完成设施。
要使用compgen列出所有用户,请运行:
$compgen -u
getent命令
列出Linux中的用户的另一种方法是使用如下所示的"Getent"命令:
$getent passwd
此命令将读取/etc/passwd文件,并列出该文件中的所有用户。
GetEtent命令的一个值得注意的优势是它不仅列出/etc/passwd文件中的用户,而且在给定系统上的所有已配置userdb中的所有用户都支持,例如LDAP。
"more"或者"less"的命令
more命令用于打开给定文件以进行交互式读数,允许滚动和搜索。
要使用more或者less的命令打印所有用户,运行:
$more /etc/passwd
或者,
$less /etc/passwd