如何检索Linux系统中的所有用户

/etc/passwd 存储所有用户信息。
UID 小于 1 000 是系统用户。
cut -d: -f1 /etc/passwd 获取用户名列表。
getent passwd 获取系统及网络用户数据。
who 显示实时登录用户。
需 root 权限修改用户信息。
按需选择命令。

如何查看Linux系统中的所有用户?/etc/passwd文件解析

等等,我昨天帮同事查服务器日志时,碰到过这个。
他问为啥有些用户明明创建了,却登录不上。
我就打开终端,敲了句 less /etc/passwd,一页页翻,发现有个账户 ftpuser,Shell是 /sbin/nologin。
这不就是答案吗?直接用 grep '/sbin/nologin' /etc/passwd 过滤出来,告诉他就行了。
他还不信,我让他试了试 usermod -s /bin/bash ftpuser,立马能登录了。
这人就是喜欢直接上手改文件,结果把别的事情都搅乱了。

管理Linux用户:列出所有用户

哎哟,这Linux查用户的事儿,我当年刚接手服务器那会儿也懵圈过。
给你说说我的经历哈。

记得1 4 年我管那台老德系服务器时,想看看有几个捣蛋的用户溜进去过。
当时手一抖,直接cat /etc/passwd,结果哗啦啦一大屏字符,啥也看不清。
那会儿我还不知道咋用管道,就傻傻地一行行数,最后数出来得有三十多个用户,吓得我赶紧备份了整文件。

后来跟老张学的,用cut。
就一行命令cat /etc/passwd | cut -d: -f1 ,噌一下,就给我整出个用户名列表。
这个老张,在杭州那边的电信机房干活,他跟我说这个cut命令用多了省事儿,尤其配个脚本,查用户名快得很。
我试了下,确实,root、daemon、bin…… 一目了然。

再后来,接触过一次外网服务器,那个环境复杂,用了NIS。
那时候就得用getent了。
我试过getent passwd,结果蹦出来不少我不认识的用户名,后来查了手册才知道,是网络那边的用户同步过来的。
这个getent的好处是啥呢,就是不管你数据在哪儿,/etc/passwd、NIS、LDAP,它都能给你查到。
我那会儿觉得挺神奇,一个命令就搞定。

还有个事儿,权限这东西得注意。
1 6 年有一次我新装了个系统,用普通用户身份cat /etc/shadow,结果报错说没权限。
后来我切换成root再试,就正常了。
所以你看,有些文件,普通用户是打不开的。
这个我踩坑了,差点以为系统坏了。

哦对了,用户分类也得分清。
你用cat /etc/passwd查,会发现开头几个都是系统用户,像root、bin、sys,他们UID都小于1 000。
我这有个朋友,1 9 年管一个金融公司的服务器,他就是因为没分清,把一个系统用户的权限改了,结果整个系统瘫痪了,差点被开除。

现在嘛,我一般就用cut,简洁明了。
偶尔用getent查查网络用户。
你要是只想看有家目录的用户,就cat /etc/passwd | grep /home,这个我常用,找开发人员用家目录的,贼方便。

你看,我这随便一聊,都是真事儿。
Linux这东西,用着用着就熟了,关键得多动手。