HCRM博客

CentOS怎么查看用户,如何查看系统所有用户列表

在CentOS系统中,高效准确地查询用户信息是系统管理员进行日常运维、权限管理及安全审计的基础技能,核心上文归纳在于:掌握/etc/passwd/etc/shadow等关键系统文件的解析逻辑,并结合idwhowlast等标准命令行工具,能够全方位覆盖从静态账户属性到动态登录会话的查询需求,通过分层查询方法,管理员不仅可以快速定位用户,还能深入评估系统的安全状态与用户行为轨迹。

基础静态信息查询:解析用户数据库

查询用户信息最直接的方式是读取系统维护的用户数据库,CentOS作为Linux发行版,其用户核心信息存储在文本文件中,理解这些文件的结构是深度查询的前提。

CentOS怎么查看用户,如何查看系统所有用户列表-图1

查看/etc/passwd文件 这是系统中最重要的用户信息文件,每一行代表一个用户,通过cat /etc/passwd即可查看全部内容,为了更精准地查询,通常结合grep命令使用,查询特定用户nginx是否存在,可以使用grep "^nginx:" /etc/passwd,该文件中的每一行由冒号(:)分隔为七个字段,其含义分别为:用户名、密码占位符(x表示实际密码在shadow文件中)、用户UID(User ID)、用户组GID(Group ID)、用户注释信息(如全名)、用户家目录、用户默认Shell。

使用id命令获取核心标识id命令是查询用户身份标识(UID和GID)最专业的工具,直接输入whoami仅显示当前用户名,而id能显示更详细的数字ID和组列表,执行id root,系统会返回uid=0(root) gid=0(root) groups=0(root),在排查权限问题时,UID的准确性至关重要,因为系统内核是通过UID而非用户名来识别权限主体的,如果需要查询当前用户的详细信息,直接输入id即可。

利用getent工具进行数据库查询 相较于直接读取文件,使用getent命令是更为规范和现代的做法,它能够查询Name Service Switch(NSS)配置的各类数据库,包括本地文件、LDAP、NIS等,执行getent passwd可以列出所有用户,其输出格式与/etc/passwd一致,这种方法的优势在于兼容性更强,特别是在企业级环境中使用了集中化认证服务时,getent依然能准确返回数据,而单纯查看文件可能会遗漏远程用户。

动态状态监控:当前登录与会话信息

除了静态的账户属性,管理员更需要关注当前谁在系统上以及他们在做什么,这部分查询侧重于实时性和交互性。

使用who命令查看登录用户who命令用于显示当前登录到系统的所有用户,它通过读取/var/run/utmp文件来获取信息,执行who H可以打印出表头,输出内容包括:登录用户名、登录使用的终端设备(如pts/0表示伪终端)、登录时间以及远程主机IP或主机名,这对于快速了解系统当前的负载来源非常有用。

使用w命令查看用户行为细节w命令是who的增强版,它不仅显示谁在登录,还显示用户正在执行的命令及系统资源状态,输出结果的第一行显示了系统时间、运行时间、当前登录用户数以及过去1分钟、5分钟和15分钟的系统平均负载,随后的列表中,JCPU表示该终端所有进程占用的CPU时间,PCPU表示当前进程占用的CPU时间,WHAT则列出了用户当前正在执行的命令行,通过w命令,管理员可以迅速判断是否有异常的高耗能进程或非授权的操作行为。

CentOS怎么查看用户,如何查看系统所有用户列表-图2

历史审计与安全追踪:登录日志分析

安全审计往往需要追溯历史,CentOS提供了完善的日志记录机制,通过分析日志可以还原用户的进出轨迹。

查询成功登录历史:last命令last命令读取/var/log/wtmp二进制文件,显示自该文件创建以来所有用户的登录历史记录,输出内容包括用户名、终端、登录IP、登录开始时间和结束时间以及持续时长,通过last | head可以查看最近的登录记录,若要查看特定用户的登录历史,可以使用last usernamelast n 10可以限制显示的行数,便于快速浏览最近的活动。

查询失败登录尝试:lastb命令lastb命令对应读取/var/log/btmp文件,该文件专门记录登录失败的尝试,在遭受暴力破解攻击时,lastb会输出大量的失败记录,管理员可以通过lastb | awk '{print $3}' | sort | uniq c | sort nr来统计尝试登录失败最多的IP地址,从而作为防火墙封禁的依据,这是系统安全加固中不可或缺的一环。

专业解决方案与深度见解

在实际的生产环境运维中,简单的命令组合往往不足以应对复杂的安全需求,以下提供基于EEAT原则的专业解决方案。

快速识别特权用户(UID为0的用户) 在Linux系统中,UID为0的用户拥有超级管理员权限,除了默认的root用户外,系统中是否存在其他UID为0的用户是安全审计的重点,可以使用以下单行命令进行深度排查: awk F: '$3==0 {print $1}' /etc/passwd 此命令利用awk工具以冒号为分隔符,提取第三个字段(UID)为0的行,并打印出第一个字段(用户名),如果输出中包含除root以外的用户,必须立即进行核查和删除,这是典型的提权后门特征。

识别无密码登录的用户 虽然现代CentOS版本将密码哈希存储在/etc/shadow中,但检查/etc/passwd中密码位为空的情况依然具有兼容性意义,更专业的做法是检查/etc/shadow文件中密码字段为空或被锁定的情况,查找密码为空的用户: awk F: '($2=="") {print $1}' /etc/shadow 注意,读取/etc/shadow需要root权限,检查拥有有效登录Shell(如/bin/bash)但长期不登录的系统用户也是一种优化策略,可以通过lastlog命令结合分析,找出拥有Shell但从未登录过的异常账号。

CentOS怎么查看用户,如何查看系统所有用户列表-图3

系统用户与普通用户的界限划分 CentOS系统通常约定,UID小于1000的为系统用户(如bin、daemon、mail等),UID大于等于1000的为普通登录用户,在查询时,利用这一逻辑可以过滤掉大量系统噪音,只列出普通人类用户: awk F: '$3>=1000 {print $1}' /etc/passwd 这种过滤逻辑在编写自动化备份脚本或权限检查脚本时非常实用,能够确保操作仅针对真实用户,避免误操作系统服务账号导致服务不可用。

相关问答

Q1:在CentOS中如何查看一个用户属于哪些用户组?A: 查看用户所属组最准确的方法是使用groups命令后接用户名,例如groups nginx,使用id命令(如id nginx)也会输出用户所属的主组(gid)和附加组(groups),如果需要查看系统中所有组的详细信息,可以查看/etc/group文件,或使用getent group命令。

Q2:如何临时锁定一个CentOS用户使其无法登录?A: 有多种方法可以锁定用户,最常用的是使用usermod命令配合L参数,例如sudo usermod L username,这会在/etc/shadow文件的密码哈希前添加一个感叹号(!),从而禁用密码验证,另一种方法是直接修改用户的Shell为/sbin/nologin,使用命令sudo usermod s /sbin/nologin username,这样用户即使输入正确密码也无法进入系统交互环境。

通过以上分层级的查询方法和专业审计技巧,系统管理员可以全面掌握CentOS环境下的用户状态,为系统稳定运行和数据安全提供坚实保障,如果您在具体操作中遇到权限问题或需要更复杂的脚本辅助,欢迎在下方留言交流。

本站部分图片及内容来源网络,版权归原作者所有,转载目的为传递知识,不代表本站立场。若侵权或违规联系Email:zjx77377423@163.com 核实后第一时间删除。 转载请注明出处:https://blog.huochengrm.cn/pc/93301.html

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
请登录后评论...
游客游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~