用户账户到底是什么?

用户账户是个人在系统中的数字身份凭证,用于识别身份、管理访问权限、存储个性化设置及操作数据,是享受个性化服务和进行交互的基础。

想知道你的计算机系统上目前有哪些用户账户吗?无论是出于系统管理、安全检查还是单纯的好奇心,了解如何查看用户列表都是一项实用的基础技能。查看用户的方法取决于你使用的操作系统,下面我们将详细介绍在主流操作系统(Windows, Linux, macOS)上的操作步骤和命令。

在操作系统中,用户账户是系统识别个体身份、分配权限和资源(如文件、程序访问权)的基础,每个账户通常包含唯一的用户名(Username)和用户标识符(UID – User ID,在Linux/macOS中)或安全标识符(SID – Security Identifier,在Windows中)。

在 Linux 系统中查看用户

Linux 提供了多种命令行工具来查看用户信息,这是系统管理员最常用的方式。

  1. 查看 /etc/passwd 文件 (最基础的方法)

    • 命令: cat /etc/passwd
    • 说明: 这是存储所有本地用户账户核心信息的文本文件(注意:它存储密码,密码存储在加密的 /etc/shadow 文件中)。
    • 输出解读: 每一行代表一个用户账户,由冒号 分隔成7个字段:
      • 用户名:用户登录名。
      • x:表示密码存储在 /etc/shadow 文件中。
      • UID:用户ID。0 代表 root(超级用户),1-999 通常是系统账户,1000 及以上是普通用户(具体范围可能因发行版而异)。
      • GID:用户的主要组ID。
      • GECOS注释:通常包含用户全名、房间号、电话等描述信息(可选)。
      • 家目录:用户登录后的默认工作目录(如 /home/username)。
      • 登录Shell:用户登录后默认启动的Shell程序(如 /bin/bash/usr/sbin/nologin 表示该账户不能用于交互式登录)。
    • 示例输出:
      root:x:0:0:root:/root:/bin/bash
      daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
      ... (其他系统用户) ...
      alice:x:1000:1000:Alice Smith,,,:/home/alice:/bin/bash
      bob:x:1001:1001:Bob Johnson:/home/bob:/bin/bash
  2. 使用 getent 命令 (更通用,支持多种数据库)

    • 命令: getent passwd
    • 说明: 这个命令从系统数据库(包括 /etc/passwd 和可能的网络用户数据库如 LDAP、NIS)获取用户信息,输出格式与 cat /etc/passwd 完全相同,在仅使用本地用户的环境中,两者结果一致,如果系统配置了网络用户服务,getent 能显示更完整的列表。
    • 查看特定用户: getent passwd username (将 username 替换为你想查询的具体用户名)。
  3. 使用 compgen 命令 (Bash Shell 内置命令)

    • 命令: compgen -u
    • 说明: 这个命令会列出所有用户名(仅用户名,没有其他详细信息),它非常简洁,适合只需要用户名列表的场景。
  4. 查看当前登录的用户

    • 命令: whow
    • 说明: 这两个命令显示当前哪些用户已经登录到系统,以及他们正在做什么(w 命令信息更详细,包括运行的程序和系统负载),这显示的是活动会话,而不是所有存在的账户。
    • 示例输出 (w):
       12:34:56 up 10 days,  2:30,  3 users,  load average: 0.00, 0.01, 0.05
      USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
      alice    tty7     :0               Mon10    2days  1:15m  0.01s /usr/libexec/gnome-session-binary --session=gnome
      bob      pts/0    192.168.1.100    12:15    5.00s  0.10s  0.00s sshd: bob [priv]

在 Windows 系统中查看用户

Windows 提供了图形界面和命令行两种方式。

  1. 图形用户界面 (GUI) 方法

    • 方法 1 (本地用户和组 – 适用于专业版及以上):
      1. Win + R 打开“运行”对话框。
      2. 输入 lusrmgr.msc 并按回车。
      3. 在打开的“本地用户和组”管理控制台中,点击左侧的“用户”文件夹,右侧窗格将列出所有本地用户账户。
    • 方法 2 (计算机管理):
      1. 右键点击“此电脑”或“我的电脑”图标,选择“管理”。
      2. 在“计算机管理”窗口中,展开“系统工具” -> “本地用户和组” -> 点击“用户”。
    • 方法 3 (设置 – 适用于所有版本):
      1. 打开“设置” (Win + I)。
      2. 转到“账户” -> “家庭和其他用户”(或“其他用户”,取决于Windows版本)。
      3. 在“其他用户”部分,会列出已添加的本地账户和Microsoft账户(但此列表可能不包含所有内置系统账户或通过其他方式创建的账户,不如前两种方法全面)。
  2. 命令行 (CMD 或 PowerShell) 方法

    • 使用 net user 命令 (CMD/PowerShell):
      • 查看所有本地用户: net user
      • 查看特定用户详细信息: net user username (将 username 替换为具体用户名)
      • 说明: net user 会列出所有本地账户的用户名,它不会显示域用户(如果是域成员计算机)或某些内置系统账户(如 SYSTEM)。
    • 使用 PowerShell (更强大):
      • 查看所有本地用户 (基本): Get-LocalUser
      • 查看所有本地用户 (详细信息): Get-LocalUser | Format-List *Get-LocalUser | Format-Table Name, Enabled, Description, SID
      • 说明: PowerShell 的 Get-LocalUser cmdlet 提供了更丰富的信息和筛选能力,是更现代、推荐的方式。

在 macOS 系统中查看用户

macOS 基于 Unix (BSD),其方法与 Linux 类似,主要使用命令行。

  1. 查看 /etc/passwd 文件

    • 命令: cat /etc/passwd
    • 说明: 与 Linux 相同,此文件包含本地用户的核心信息,格式也完全一致(用户名:x:UID:GID:描述:家目录:登录Shell),macOS 的系统用户 UID 通常小于 500,普通用户 UID 从 501 开始。
  2. 使用 dscl 命令 (目录服务命令行工具 – 更强大,推荐)

    • 命令: dscl . -list /Users
    • 说明: 这是 macOS 上管理本地目录数据库(包括用户、组)的标准工具。dscl . -list /Users 会列出所有用户名
    • 查看特定用户详细信息: dscl . -read /Users/username (将 username 替换为具体用户名),这会显示该用户的大量属性,包括 UID、GID、家目录、Shell、真实姓名等。
    • 查看所有用户 UID: dscl . -list /Users UniqueID
    • 查看所有用户及其真实姓名: dscl . -list /Users RealName
  3. 使用 id 命令查看当前用户信息

    • 命令: id
    • 说明: 显示当前登录用户的 UID、GID 以及所属的所有组。id username 可以查看指定用户的信息。

重要提示与安全考虑

  • 权限: 在 Linux/macOS 上查看 /etc/passwd 通常不需要管理员权限,因为密码哈希值并不存储在这里(在 /etc/shadow 中),执行某些管理命令(如创建/删除用户)或查看 /etc/shadow 需要 root (超级用户) 权限(使用 sudo)。
  • /etc/passwd/etc/shadow 再次强调,/etc/passwd 是全局可读的,包含用户的基本配置信息,真正的加密密码哈希存储在 /etc/shadow 文件中,该文件只有 root 用户可读,这是系统安全的关键设计。
  • 系统用户 vs. 普通用户: 输出列表中会包含大量以 daemon, www-data, nobody 等命名的系统用户,这些账户通常用于运行系统服务或后台进程,一般不允许用于交互式登录,普通用户通常是你在系统安装或后期创建时自己设置的那些账户。
  • 网络用户: 如果计算机加入了域(Windows)或配置了 LDAP/NIS 等网络认证服务(Linux/macOS),上述本地命令可能无法列出所有用户,需要使用域管理工具(如 Windows 的 net user /domain)或网络目录服务查询工具(如 Linux 的 getent passwd 在配置正确时会自动包含网络用户)。
  • GUI vs. CLI: 图形界面通常更直观,适合普通用户快速查看主要账户,命令行(CLI)则更强大、灵活,尤其在服务器管理、脚本编写和获取详细信息方面不可或缺,是系统管理员的首选。

查看系统用户是理解和管理计算机环境的基础操作,选择哪种方法取决于你的操作系统(Windows, Linux, macOS)以及你的具体需求(是只需要用户名列表,还是需要详细信息,或是查看当前登录用户),掌握这些命令和工具,能让你更有效地进行系统监控、用户管理和故障排查,请始终注意操作的安全性和所需的权限。

引用说明:

  • Linux passwd, getent, who, w, compgen 命令的手册页 (man passwd, man getent, man who, man w, man compgen)
  • Windows net user 命令文档 (Microsoft Docs)
  • Windows Get-LocalUser PowerShell cmdlet 文档 (Microsoft Docs)
  • macOS dscl 命令手册页 (man dscl)
  • 操作系统安全基本原理(/etc/passwd/etc/shadow 的权限设计)

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

(0)
酷番叔酷番叔
上一篇 2025年7月13日 04:13
下一篇 2025年7月13日 04:37

相关推荐

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信