如何检查 Unix 中的用户列表
密码文件/etc/passwd为每个用户帐户包含一行。passwd 文件是密码信息的本地来源。出于安全原因,某些系统将加密密码存储在单独的文件中。例如,在 FreeBSD 上,您有 /etc/master.passwd 文件,在 Linux 上,您有/etc/shadow 文件。/etc/group文件是组信息/成员的本地来源。本教程介绍如何在 Unix 操作系统(如 macOS、FreeBSD、OpenBSD、NetBSD、类 Unix 系统)中检查用户列表。
教程详细信息 | |
---|---|
难度等级 | 简单的 |
Root 权限 | 不 |
要求 | Unix 终端 |
类别 | 用户信息 |
操作系统兼容性 | BSD • Linux • macOS • Unix |
预计阅读时间 | 4 分钟 |
检查Unix中用户列表的命令
在 FreeBSD/OpenBSD/NetBSD 和许多其他类 Unix 系统上,只需键入以下cat 命令/more 命令/less 命令即可获取所有用户帐户的列表:
$ cat /etc/passwd
$ more /etc/passwd
$ less /etc/passwd
$ bat /etc/passwd
了解文件格式
考虑最后一行:
vnstat:*:284:284:vnStat Network Monitor:/nonexistent:/usr/sbin/nologin
在哪里,
- vnstat– 用户名
- *– 加密密码存储在单独的文件中
- 284– UID(用户 ID)
- 284– GID(组 ID)
- vnStat Network Monitor– 关于用户的一般信息
- /nonexistent– 用户的主目录
- /usr/sbin/nologin– 用户的登录 shell
如何仅显示用户名列表
使用 cut 命令如下:
$ cut -d: -f1 /etc/passwd
或者使用 awk 命令:
$ awk -F':' '{ print $1}' /etc/passwd
示例输出:
root daemon operator bin build sshd .... _iscsid _smtpq _file _radiusd _eigrpd _vmd _tftp_proxy _ftp_proxy _sndiop _syspatch _slaacd nobody vivek
如何搜索给定的用户名,例如 vivek
使用grep 命令如下:
示例输出:
$ grep '^userNameHere' /etc/passwd
$ grep '^vivek' /etc/passwd
$ grep -w '^vivek' /etc/passwd
vivek:*:1001:1001:vivek:/home/vivek:/bin/tcsh
以下是如何 grep 多个字符串、模式或单词。在此示例中,使用egrep 命令搜索名为“vivek”和“michelle”的用户:
$ grep -Ew '^(vivek|root)' /etc/passwd
启用-E扩展正则表达式,并且-w选项仅匹配整个 Unix 用户名。
如何使用 getent 命令查找用户列表
要从管理数据库(如/etc/passwd)获取条目,请使用 getent 命令,如下所示:
$ getent passwd
$ getent passwd | more
$ getent passwd | grep vivek
关于 macOS Unix 用户的说明
如果您使用的是 macOS,请尝试以下命令在 Unix cli 中检查用户列表(打开终端应用程序并输入以下 bash 命令):
$ dscl . list /Users
或者
$ dscacheutil -q user
dscl是在目录服务目录节点上进行操作的通用实用程序。
如何查找哪些 Unix 用户已登录以及他们正在做什么
如何查看我的服务器上可用的群组列表?
键入以下任一命令来查询/etc/group:
$ more /etc/group
$ less /etc/group
$ grep vivek /etc/group
使用 logins 命令显示 Unix 帐户信息
logins 命令显示有关用户和系统帐户的信息。您只需输入以下 logins 命令:
$ logins
输出:
root 0 wheel 0 Charlie & toor 0 wheel 0 Bourne-again Superuser daemon 1 daemon 1 Owner of many system processes operator 2 operator 5 System & bin 3 bin 7 Binaries Commands and Source tty 4 nogroup 65533 Tty Sandbox kmem 5 nogroup 65533 KMem Sandbox games 7 games 13 Games pseudo-user news 8 news 8 News Subsystem man 9 man 9 Mister Man Pages sshd 22 sshd 22 Secure Shell Daemon smmsp 25 smmsp 25 Sendmail Submission User mailnull 26 mailnull 26 Sendmail Default User bind 53 bind 53 Bind Sandbox unbound 59 unbound 59 Unbound DNS Resolver proxy 62 proxy 62 Packet Filter pseudo-user _pflogd 64 _pflogd 64 pflogd privsep user _dhcp 65 _dhcp 65 dhcp programs uucp 66 uucp 66 UUCP pseudo-user pop 68 mail 6 Post Office Owner auditdistd 78 audit 77 Auditdistd unprivileged user www 80 www 80 World Wide Web Owner _ypldap 160 _ypldap 160 YP LDAP unprivileged user hast 845 hast 845 HAST unprivileged user tests 977 tests 977 Unprivileged user for tests vivek 1001 vivek 1001 Vivek Gite nobody 65534 nobody 65534 Unprivileged user
要获取有关密码更改和用户帐户过期时间的信息,请运行:
$ logins -a
仅查找并显示有关 tom 和 jerry 帐户的信息:
想要查看没有密码的 Unix 用户帐户?传递选项:
最后,我们可以看到有关每个帐户的主目录和 shell 的信息,例如 csh、ksh、bash 等:
$ logins -l userName
$ logins -l tom,jerry
-p
$ logins -p
$ logins -x
$ logins -x -l vivek
vivek 1001 vivek 1001 Vivek Gite /home/vivek /bin/tcsh
结论
您学习了如何在类 Unix 系统(例如 macOS、*BSD 和其他系统)中检查用户列表。
参见
- Linux 命令:列出系统中的所有用户
- 阅读手册页:使用 man 命令/info 命令或 help 命令。例如:
$ man 5 passwd
$ man 5 group
$ man 1 logins
$ man 1 getent
你注意到了吗????
加入Patreon ➔ PayPal ➔