如何检查Unix中的用户列表

时间:2020-01-09 10:37:39  来源:igfitidea点击:

如何使用命令行选项在Unix操作系统中查看系统用户?
密码文件/etc/passwd包含每个用户帐户一行。

passwd文件是密码信息的本地来源。
出于安全原因,某些系统将加密的密码存储在单独的文件中。
例如,在FreeBSD上,您具有/etc/master.passwd;在Linux上,您具有/etc/shadow文件。
/etc/group文件是组信息/成员资格的本地来源。
本教程说明了如何检查Unix操作系统中的用户列表,例如macOS,FreeBSD,OpenBSD,NetBSD,类Unix系统。

用于检查Unix中用户列表的命令

在FreeBSD/OpenBSD/NetBSD和许多其他类似Unix的系统上,只需键入以下cat命令/more命令/less命令即可获取所有用户帐户的列表:

$ cat /etc/passwd
$ more /etc/passwd
$ less /etc/passwd

输出示例:

了解文件格式

考虑最后一行:

vnstat:*:284:284:vnStat Network Monitor:/nonexistent:/usr/sbin/nologin

其中:

  • vnstat用户名
  • *加密的密码存储在一个单独的文件中
  • 284UID(用户ID)
  • 284GID(组ID)
  • vnStat Network Monitor有关用户的一般信息
  • /nonexistent用户主目录
  • /usr/sbin/nologin用户登录shell

如何只显示用户名列表

使用cut命令,如下所示:

$ cut -d: -f1 /etc/passwd

或使用awk命令:

$ awk -F':' '{ print }' /etc/passwd

输出示例:

root
daemon
operator
bin
build
sshd
....

_iscsid
_smtpq
_file
_radiusd
_eigrpd
_vmd
_tftp_proxy
_ftp_proxy
_sndiop
_syspatch
_slaacd
nobody
Hyman

如何搜索给定的用户名,例如Hyman

使用grep命令,如下所示:

$ grep '^userNameHere' /etc/passwd
$ grep '^Hyman' /etc/passwd

输出示例:

Hyman:*:1001:1001:Hyman:/home/Hyman:/bin/tcsh

如何使用getent命令找出用户列表

要从管理数据库(例如/etc/passwd)中获取条目,请使用getent命令,如下所示:

$ getent passwd
$ getent passwd | more
$ getent passwd | grep Hyman

关于macOS Unix用户的说明

如果您使用的是macOS,请尝试使用以下命令检查Unix cli中的用户列表(打开"终端"应用程序并键入以下bash命令):

$ dscl . list /Users

或者

$ dscacheutil -q user

dscl是用于在Directory Service目录节点上进行操作的通用实用程序。

如何查找哪些Unix用户已登录以及他们在做什么

键入以下w命令/who命令:

$ w

或者

$ who

如何查看服务器上可用的组列表?

键入以下任一命令:

$ more /etc/group
$ less /etc/group
$ grep Hyman /etc/group

使用logins命令显示Unix帐户信息

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
Hyman           1001    Hyman           1001    Hyman Gite
nobody          65534   nobody          65534   Unprivileged user

要获取有关密码更改和用户帐户到期时间的信息,请运行:

$ logins -a

仅查找和显示有关汤姆和杰里帐户的信息:

$ logins -l userName
$ logins -l tom,jerry

是否想查看没有密码的Unix用户帐户?
传递-p选项:

$ logins -p

最后,我们可以看到有关每个帐户主目录和shell程序的信息,例如csh,ksh,bash等:

$ logins -x
$ logins -x -l Hyman
Hyman           1001    Hyman           1001    Hyman Gite
                        /home/Hyman
                        /bin/tcsh