Linux如何查看系统用户?

查看所有系统用户

/etc/passwd 文件解析

这是存储用户信息的核心文件,需用 rootsudo 权限查看:

cat /etc/passwd

输出示例
root:x:0:0:root:/root:/bin/bash
每行包含 7个字段(以冒号分隔):

  • 用户名(如 root
  • 密码占位符x 表示密码在 /etc/shadow
  • 用户ID(UID):系统用户通常 UID < 1000,普通用户 UID ≥ 1000
  • 组ID(GID)
  • 用户描述(如全名)
  • 家目录路径
  • 默认Shell(如 /bin/bash/sbin/nologin 表示禁止登录)

getent 命令

兼容性更强(支持LDAP等数据库):

getent passwd

输出格式与 /etc/passwd 相同。

列出可登录用户

过滤有效Shell的用户:

grep -v "/nologin\|/false" /etc/passwd | cut -d: -f1

或使用 awk

awk -F: '$7 !~ /\/nologin|\/false/ {print $1}' /etc/passwd

查看当前登录用户

who 命令

显示已登录用户及登录源:

who

输出:用户名 终端 登录时间 IP地址

w 命令

更详细(含正在运行的命令):

w

输出包括:用户、终端、登录时间、空闲时间、当前进程。

users 命令

仅显示用户名:

users

查看用户登录历史

last 命令

审计用户登录记录:

last

显示:用户名、终端、IP、登录/登出时间。
关键参数

  • last -5:显示最近5条记录
  • last username:查看特定用户记录

查看特定用户信息

id 命令

检查用户UID、GID及所属组:

id username  # 如 id root

输出示例:uid=0(root) gid=0(root) groups=0(root)

finger 命令(需安装)

显示用户详细信息:

sudo apt install finger  # Debian/Ubuntu
finger username

输出:登录名、真实姓名、Shell、家目录等。


高级工具

lslogins 命令

专业用户管理工具(需安装 util-linux):

lslogins -u  # 查看所有用户

输出包含:UID、GID、最后登录时间、是否锁定等。

compgen 命令(仅限Bash)

生成用户列表:

compgen -u

注意事项

  1. 权限要求
    • 查看 /etc/passwd 无需特权,但修改需 root 权限。
    • 敏感文件(如 /etc/shadow)仅 root 可读。
  2. 安全建议
    • 禁止删除系统用户(UID<1000),可能导致服务崩溃。
    • 定期审计用户:检查异常UID为0的用户(非root)。
  3. 用户状态判断
    • 密码字段为 或 表示账户被锁定。
    • nologin Shell 用户无法登录系统(如服务账户)。

场景 推荐命令
查看所有用户 cat /etc/passwd
检查当前登录用户 wwho
审计登录历史 last
获取用户详细信息 idfinger
专业级用户管理 lslogins

重要提示:直接编辑用户文件(如 /etc/passwd)可能导致系统不稳定,建议使用 useraddusermod 等命令管理用户。


引用说明: 基于 Linux man-pages 官方文档(如 man 5 passwd)。

  • 命令兼容性参考 GNU Coreutils 及 util-linux 工具集。
  • 安全规范遵循 Linux Foundation 最佳实践指南。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/4452.html

(0)
酷番叔酷番叔
上一篇 2025年6月14日 08:18
下一篇 2025年6月14日 08:49

相关推荐

  • Ubuntu还是Debian?哪个更合适你的需求

    在Linux系统中,Telnet是一种基于TCP/IP协议的远程登录工具,允许用户通过网络连接到其他主机进行操作,但请注意:Telnet传输数据为明文,存在严重安全风险,仅建议在测试或隔离环境中使用,生产环境强烈推荐使用SSH替代,以下是详细操作指南:Telnet客户端使用(连接远程服务)安装Telnet客户端……

    2025年7月1日
    900
  • Linux如何查看桌面环境及文件?

    查看当前桌面环境类型方法1:通过环境变量查询(推荐)echo $XDG_CURRENT_DESKTOP输出示例:GNOME、KDE、XFCE等原理:该变量由桌面环境自动设置,直接反映当前会话的桌面类型,方法2:检查进程列表ps -e | grep -E "gnome|kde|mate|cinnamon……

    2025年6月27日
    1100
  • 如何安全移除MySQL核心包及依赖?

    在Linux上彻底卸载MySQL的完整指南卸载MySQL前,请务必备份所有数据库数据,避免不可逆的数据丢失,以下步骤覆盖主流Linux发行版(Ubuntu/Debian 和 CentOS/RHEL),包含服务停止、软件移除、残留清理及验证方法,卸载前的关键准备备份数据库(防止误删): mysqldump -u……

    1天前
    300
  • Linux下Vim中文输入难题?

    基础方法:系统级输入法切换Vim本身不提供中文输入功能,需依赖系统输入法(如Fcitx、IBus),常用切换方式:全局快捷键切换Ctrl + 空格:中英文输入法切换(默认最常见)Ctrl + Shift:多个输入法间轮换Super(Windows键) + 空格:部分桌面环境(如GNOME)的默认切换键在Vim中……

    6天前
    900
  • Linux集群搭建与管理速成?

    集群基础操作登录集群使用SSH连接登录头节点(管理节点): ssh username@head-node-ip禁止直接登录计算节点,所有任务通过头节点提交,环境加载集群软件通常通过module管理环境变量,常用命令:module avail # 查看可用软件列表module load openmpi/4.1.2……

    2025年6月20日
    1300

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信