列出 Linux 服务器上所有用户名的命令

列出 Linux 服务器上所有用户名的命令

允许用户生成 Linux 服务器上授权用户的所有用户名列表的命令是什么?我努力了

getent passwd | cut -d : -f 1 | xargs groups 

less /etc/passwd 

grep 'x:0:' /etc/passwd 

getent passwd

grep "/bin/bash" /etc/passwd | cut -d: -f1

但以上都没有给我我想要的东西,这只是一个用户名列表。

任何帮助将不胜感激

答案1

使用您的第一次尝试,但删除| xargs groups.不过,实际上,这已经足够基本了,不太适合这个网站......

答案2

awk(1) 是另一个有用的工具。 awk 能够根据指定的分隔符从文本行中解析各个字段。对于 /etc/passwd,该分隔符是冒号,因此我们在 awk 命令行上传递“-F:”。同样,由于用户名是该行的第一个字段,而 awk 编号字段从 1 开始,因此我们规定“print $1”来告诉 awk 打印每行的第一个字段。

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

这可以轻松地适应打印 passwd 文件中的任何字段。以下是每个用户名的列表(字段 1),后跟一个空格,然后是他们的登录 shell(字段 7):

awk -F: '{ print $1, $7 }' < /etc/passwd

答案3

这将按拥有 shell 的用户过滤用户:

getent passwd | egrep  '(/bin/bash)|(/bin/zsh)|(/bin/sh)' | cut -f1 -d:

答案4

您已要求提供授权用户列表,并表示您的意思是将此列表作为所有用户列表的子集,但您尚未确定要使用什么标准来区分授权用户和未授权用户。

系统(Unix 和 Windows)通常带有预定义的标准内置用户:Unix 中的 、rootbin;、、和在 Windows 上。在 Unix 上,“真实”用户(分配给真实的人)通常具有 GID ≥ 500 和.系统用户通常不符合这两个标准。因此我们可以列出符合这些条件的用户mailnewsAdministratorSYSTEMLOCAL SERVICETrustedInstaller/home/etc/passwd

awk -F: '$6 ~ /^\/home/ && $3 >= 500 {print $1}' /etc/passwd

如果getent passwd产生不在 中的用户/etc/passwd,您可以将他们连接起来:

getent passwd | awk -F: '$6 ~ /^\/home/ && $3 >= 500 {print $1}'

或将它们组合起来:

getent passwd | sort -u - /etc/passwd | awk -F: '$6 ~ /^\/home/ && $3 >= 500 {print $1}'

注:此答案基于一个答案(现已删除,仅 10K)切玛

相关内容