查看Linux服务器有哪些用户,先分清“在线用户”和“系统账户”:在线用 who、w、users;全部账户用 getent passwd、cat /etc/passwd、lslogins,多数情况下,getent passwd 比只读 /etc/passwd 更完整,因为它会查询 NSS 里的 LDAP、SSSD 等外部用户源。
Linux服务器查看所有用户命令有哪些
在Linux里,“用户”不是一个单一列表,有人正在SSH登录,有人只是本地系统账户,还有人来自LDAP、AD或SSSD,命令选错,结果就会漏。
据Linux man-pages项目文档,getent 会通过GNU C库的NSS机制查询 passwd、group 等数据库,它比直接读 /etc/passwd 更接近“系统实际能识别的账户”。
| 需求 | 推荐命令 | 说明 |
|---|---|---|
| 当前登录用户 | who、w、users |
只看在线会话 |
| 本地所有账户 | cut -d: -f1 /etc/passwd |
快,但不含外部用户源 |
| 完整账户列表 | getent passwd |
走NSS,包含本地和LDAP等 |
| 账户详情 | sudo lslogins -u |
依赖util-linux工具集 |
| 最近登录历史 | last、lastlog |
看过去谁登录过 |
| 指定用户信息 | id 用户名 |
看UID、GID、所属组 |
当前登录用户:who、w、users
只想看现在谁连着服务器,用下面这组:
who w users who -q loginctl list-users
who:列出登录用户、终端、登录时间。w:比who多显示负载和正在执行的命令。users:只输出用户名,适合脚本。who -q:只给登录用户数量和用户名。loginctl list-users:适合systemd发行版,查看登录会话。
系统本地用户:/etc/passwd 与 getent passwd
/etc/passwd 每行代表一个账户,字段用冒号分隔,第一列是用户名。
cut -d: -f1 /etc/passwd
awk -F: '{print $1}' /etc/passwd
getent passwd | cut -d: -f1
如果你只关心本地账户,
/etc/passwd 够用,但服务器接入LDAP、AD或SSSD后,/etc/passwd 看不到远端用户,这时用:
getent passwd
getent passwd | awk -F: '{print $1":"$3":"$7}'
第三列是UID,第七列是登录shell,UID为0的是root权限账户;现代发行版通常把普通用户UID从1000开始,系统用户多在1到999之间,不同发行版有差异,不能死记。
完整账户与登录历史:lslogins、last、lastlog
lslogins 能列出用户账户、UID、GID、家目录、shell、最近登录等信息。
sudo lslogins -u sudo lslogins --user-accs
查看登录历史:
last sudo lastlog sudo lastlog | grep -v "从未"
last 读的是 /var/log/wtmp,lastlog 读的是 /var/log/lastlog,如果服务器被清理过日志,这些记录可能不完整。
Linux查看当前登录用户和系统用户区别
很多人把“当前登录用户”和“系统所有用户”混在一起,前者是会话,后者是账户,会话会断,账户会留在系统里。
概念区别:登录用户、本地用户、系统用户、虚拟用户
- 登录用户:当前通过SSH、控制台或图形界面登录的人。
- 本地用户:写在
/etc/passwd里的账户。 - 系统用户:给服务使用的账户,如
www-data、nginx、mysql。 - 虚拟用户:来自LDAP、AD、SSSD等外部身份源,不一定在
/etc/passwd。 - 伪用户:shell为
/sbin/nologin、/usr/sbin/nologin、/bin/false的账户,通常不能交互登录。
实操:如何只列可登录用户
只列本地可登录用户:
awk -F: '$7 !~ /(nologin|false)$/ {print $1}' /etc/passwd
列UID大于等于1000的普通用户:
getent passwd | awk -F: '$3>=1000 && $3<65534 {print $1":"$3":"$7}'
查UID为0的超级用户:
awk -F: '$3==0 {print $1}' /etc/passwd
getent passwd | awk -F: '$3==0 {print $1}'
查某个用户属于哪些组:
id 用户名 groups 用户名 getent group | grep 用户名
如何判断用户能否登录
重点看三处:
- shell字段:不是
nologin、false,才有交互登录可能。 - 密码状态:
sudo passwd -S 用户名可看账户是否锁定。 - SSH密钥:
/home/用户名/.ssh/authorized_keys存在,说明可能免密登录。
北京Linux服务器运维怎么查看用户列表
在北京机房、云服务器或混合云环境里,运维接手一台服务器时,第一件事往往不是装软件,而是确认账户,行业共识认为,排查用户不能只看 /etc/passwd,还要结合 getent、登录历史和权限组。
云服务器查看Linux用户列表怎么操作
按下面顺序做,基本不会漏:
-
登录服务器,先看在线会话:
who w loginctl list-users
-
拉完整账户列表:
getent passwd | cut -d: -f1
-
筛可登录账户:
getent passwd | awk -F: '$7 !~ /(nologin|false)$/ {print $1":"$3":"$7}' -
查root权限账户:
getent passwd | awk -F: '$3==0 {print $1}' -
查sudo或wheel组:
getent group sudo getent group wheel
-
查最近登录:
last sudo lastlog
-
查家目录和SSH密钥:
ls -ld /home/ sudo find /home -maxdepth 3 -name authorized_keys -ls 2>/dev/null
-
查计划任务:
sudo ls -l /var/spool/cron/crontabs/ 2>/dev/null sudo ls -l /var/spool/cron/ 2>/dev/null
排查陌生用户的检查清单
- 是否有UID为0的非root账户。
- 是否有可登录shell但你不认识的账户。
- 是否在sudo、wheel、adm组里。
- 是否有异常家目录、SSH密钥、登录记录。
- 是否有定时任务或自启动服务。
- 是否来自LDAP/AD,而不是本地添加。
处理陌生账户要谨慎,锁定账户可用:
sudo usermod -L 用户名
禁止登录可用:
sudo usermod -s /usr/sbin/nologin 用户名
删除账户可用:
sudo userdel -r 用户名
系统账户不要随意删,删错 mysql
、nginx、systemd- 这类账户,服务可能直接起不来。
Linux服务器查看用户需要付费工具吗
不需要,Linux自带命令已经能覆盖大多数“查看用户”的需求。who、w、getent、lslogins、lastlog 都是免费工具。
业内专家指出,接入LDAP或AD的服务器,/etc/passwd 只代表本地账户,不能代表全部身份。getent passwd 更可靠。
免费命令够用的场景
- 单台服务器日常巡检。
- 临时排查在线用户。
- 确认本地账户和sudo权限。
- 查最近登录和失败登录。
- 检查家目录、SSH密钥、计划任务。
什么时候考虑付费工具
当服务器数量多、需要集中审计、权限审批、会话录像、命令阻断时,堡垒机或IAM平台才有价值,商业堡垒机通常按资产数、并发授权或功能模块收费,价格跨度较大,具体看厂商和部署方式,只看用户列表,没必要为单台Linux买工具。
查看Linux服务器有哪些用户,不需要复杂工具:先用 getent passwd 拿全量账户,再用 who、loginctl 看在线用户,最后用 lslogins、lastlog 和权限组做安全核对,把“本地账户”和“NSS外部账户”分开看,基本不会漏。
查看Linux服务器有哪些用户常见问答
Linux服务器查看所有用户命令有哪些?
常用组合是 getent passwd、cut -d: -f1 /etc/passwd、sudo lslogins -u,只看在线用户用 who、w、users、loginctl list-users,查历史登录用 last、lastlog。
cat /etc/passwd 和 getent passwd 哪个更准?
getent passwd 更完整,它走NSS机制,能查到本地账户,也能查到LDAP、AD、SSSD等外部用户源。cat /etc/passwd 只看本地文件,单机本地账户场景下,两者结果可能一致;接入统一身份认证后,差异会很明显。
怎么判断服务器有没有异常用户?
先查UID为0的账户:getent passwd | awk -F: '$3==0 {print $1}',再查可登录账户、sudo组、家目录、SSH密钥、最近登录和计划任务,没有密码且shell为 nologin 的系统账户,通常不是正常交互登录入口,但不应仅凭名称删除,需结合UID、组、家目录和登录历史确认。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/717433.html





