如何在Linux中列出所有用户

时间:2020-03-21 11:44:43  来源:igfitidea点击:

由于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