如何在 Linux 中查看所有可用用户:VPS 管理员完整指南
管理用户账户是任何Linux系统管理员最基本的职责之一。无论您是在审计访问权限、排查登录问题,还是加强服务器的安全态势,准确了解系统上存在哪些用户是一项必不可少的技能。本指南将引导您了解列出和检查Linux用户的每一种实用方法——从读取原始系统文件到利用强大的命令行实用程序。
如果您正在使用AlexHost运行VPS Hosting环境,这些技术直接适用于您的Ubuntu、Debian或CentOS服务器,将帮助您完全控制谁可以访问您的基础设施。
为什么查看 Linux 用户对服务器安全很重要
在深入了解命令之前,值得理解*为什么*这项任务如此重要。在任何 Linux 服务器上——尤其是托管 WordPress、Laravel 或自定义 API 等 Web 应用程序的服务器——多个用户账户会随着时间积累:
- 系统用户由已安装的服务自动创建(例如
www-data、mysql、nginx) - 管理用户具有
sudo或 root 级权限 - 应用程序用户与特定软件堆栈相关联
- 被遗忘或孤立的账户在软件删除或员工变更后留下
定期审计这些账户可以帮助您:
- 检测未授权或可疑账户
- 实施最小权限原则
- 遵守安全策略和审计要求
- 识别配置错误的 shell 或主目录
借助 AlexHost 的 root 访问权限、NVMe 支持的存储和内置 DDoS 防护,运行这些命令既快速、可靠,又安全——即使在负载下的生产系统上也是如此。
理解 /etc/passwd 文件
Linux 中的所有用户账户信息都存储在 /etc/passwd 文件中。这是一个纯文本数据库,操作系统在身份验证和用户管理操作期间读取它。文件中的每一行代表一个单一用户账户,并遵循以下结构化格式:
username:password:UID:GID:comment:home_directory:shell以下是每个字段的含义:
| 字段 | 描述 |
|---|---|
username | 用户的登录名 |
password | 历史上存储在此处;现已被 x 替代(实际哈希值在 /etc/shadow 中) |
UID | 用户 ID 号(0 = root,1–999 = 系统用户,1000+ = 普通用户) |
GID | 主要组 ID |
comment | 可选的描述或全名(GECOS 字段) |
home_directory | 用户主文件夹的路径 |
shell | 分配给用户的默认 shell |
一个典型的条目如下所示:
alexadmin:x:1001:1001:Alex Admin,,,:/home/alexadmin:/bin/bash理解这个结构使下面的每个方法都更容易解释。
方法 1:直接读取 /etc/passwd 查看所有用户
最直接的方法是将 /etc/passwd 的全部内容打印到您的终端。根据您想如何导航输出,您有两个主要选项。
使用 cat(最适合短输出或管道)
cat /etc/passwd这会将整个文件转储到标准输出。在典型的服务器上,您会看到数十个条目 — 其中大多数是系统账户。
使用 less(最适合交互式浏览)
less /etc/passwdless 分页器让您可以交互式地滚动浏览文件。按 q 退出,/ 搜索,使用箭头键导航。
示例输出
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
alexadmin:x:1001:1001::/home/alexadmin:/bin/bash
deploy:x:1002:1002::/home/deploy:/bin/bash专业提示:以 /usr/sbin/nologin 或 /bin/false 作为 shell 的账户无法交互式登录 — 它们是系统守护进程使用的服务账户。
方法 2:使用 getent 查询用户数据库
getent 命令(*get entries* 的缩写)从 /etc/nsswitch.conf 中定义的系统数据库检索记录。这是现代 Linux 环境中的首选方法,因为它即使在用户账户来自 LDAP 或 NIS 等外部目录时也能正确工作——而不仅仅是本地 /etc/passwd 文件。
getent passwd输出格式与 /etc/passwd 相同,但 getent 确保您看到*所有*用户,无论它们存储在何处。在标准 AlexHost VPS 上,输出将与 /etc/passwd 匹配,但使用 getent 被认为是可移植性和完整性的最佳实践。
筛选特定用户
getent passwd alexadmin这仅返回 alexadmin 用户的记录——对于快速验证账户是否存在和检查其配置很有用。
方法 3:使用 cut 仅提取用户名
当您只需要一个干净的用户名列表——不包括 UID、主目录或 shell 信息——将 getent 与 cut 命令结合使用以隔离第一个字段。
getent passwd | cut -d: -f1工作原理:
getent passwd输出完整的用户数据库| cut -d: -f1将该输出管道传输到cut,它使用:作为分隔符(-d:)并仅提取第一个字段(-f1)——用户名
示例输出
root
daemon
bin
sys
www-data
alexadmin
deploy
backup这个干净的列表非常适合脚本编写、日志记录或快速扫描意外账户。
仅显示人类(登录)用户
系统账户的 UID 通常低于 1000。要仅筛选常规人类用户,将 awk 与 UID 检查结合使用:
awk -F: '$3 >= 1000 && $1 != "nobody" {print $1}' /etc/passwd这在共享托管环境或具有许多服务账户的服务器上特别有用。
方法 4:使用 awk 进行自定义、选择性输出
awk 命令是一个强大的文本处理工具,让您完全控制要显示的字段以及如何格式化它们。当您需要快速查看用户账户以进行管理或安全审查时,这非常宝贵。
显示用户名和主目录
getent passwd | awk -F: '{print "Username: " $1 "t Home Directory: " $6}'示例输出
Username: root Home Directory: /root
Username: www-data Home Directory: /var/www
Username: alexadmin Home Directory: /home/alexadmin
Username: deploy Home Directory: /home/deploy显示用户名、UID 和 Shell
getent passwd | awk -F: '{print "User: " $1 "t UID: " $3 "t Shell: " $7}'仅显示具有有效登录 Shell 的用户
getent passwd | awk -F: '$7 == "/bin/bash" || $7 == "/bin/sh" {print $1, $6, $7}'此命令对于安全审计特别有用 — 它显示每个可以在您的服务器上实际打开交互式 shell 会话的账户。
方法 5:计算用户总数
需要快速计算系统上所有用户账户的数量?
getent passwd | wc -l仅计算人类用户(UID ≥ 1000):
awk -F: '$3 >= 1000' /etc/passwd | wc -lMethod 6: Check Which Users Have Sudo Privileges
了解谁可以提升权限对安全至关重要。使用这些命令来识别特权账户:
Check the sudo group members
getent group sudoCheck the wheel group (common on CentOS/RHEL)
getent group wheelList all sudoers (requires root)
sudo cat /etc/sudoersOn your VPS with cPanel or any managed control panel environment, some users may have sudo rights granted through panel-specific configuration files in /etc/sudoers.d/.
方法 7:查看当前登录用户
要查看谁*当前*活跃登录到您的服务器,请使用 who 或 w 命令:
whoww 命令提供更多详细信息,包括每个用户当前正在运行的内容、他们的登录时间和空闲时长。这是调查服务器上可疑活动时的绝佳第一步。
实用安全工作流:审计您的 Linux VPS 上的用户
以下是您可以定期在任何 AlexHost 服务器上运行的推荐工作流,以维护干净和安全的用户环境:
# Step 1: List all human users
awk -F: '$3 >= 1000 && $1 != "nobody" {print $1}' /etc/passwd
# Step 2: Check who has sudo access
getent group sudo wheel
# Step 3: Identify accounts with login shells
getent passwd | awk -F: '$7 ~ /bash|sh/ {print $1, $7}'
# Step 4: See who is currently logged in
w
# Step 5: Review recent login history
last | head -20定期运行此审计 — 或使用 cron 作业自动化它 — 是保持服务器安全的简单但有效的方法。如果您的 VPS 托管多个 Web 应用程序或您已向开发人员或承包商授予 SSH 访问权限,这尤其重要。
超越查看的用户管理:后续步骤
一旦您识别了用户,您可能需要采取行动。以下是最常见的用户管理命令:
| 任务 | 命令 |
|---|---|
| 添加新用户 | sudo adduser newusername |
| 删除用户 | sudo deluser --remove-home username |
| 锁定账户 | sudo passwd -l username |
| 更改用户的shell | sudo chsh -s /usr/sbin/nologin username |
| 将用户添加到sudo组 | sudo usermod -aG sudo username |
这些操作在AlexHost的Linux VPS环境中完全受支持,您可以获得无限制的root访问权限来完全按照需要管理您的系统。
为您的需求选择合适的 AlexHost 主机
本指南中的命令和技术适用于所有 Linux 服务器环境,但合适的主机计划会对性能和可管理性产生重大影响:
- VPS 主机 — 完全 root 访问权限、专用资源和 NVMe 存储。适合需要完全控制 Linux 环境的开发人员和企业。
- 专用服务器 — 为高流量应用或需要严格用户访问控制的安全敏感工作负载提供最大性能和隔离。
- 共享虚拟主机 — 为更简单的项目提供托管环境,服务器级用户管理由 AlexHost 团队处理。
- VPS 控制面板 — 通过 cPanel、Plesk 或 DirectAdmin 等直观的图形界面简化用户和服务器管理。
结论
在 Linux 服务器上查看和审计用户账户不仅仅是一项日常管理任务 — 它是良好安全卫生的基石。通过掌握本指南涵盖的方法,您可以清楚地了解系统上的每个账户:
/etc/passwd和getent passwd为您提供完整的图景cut将输出精简为仅用户名awk让您构建自定义、可读的报告who和w实时显示活跃会话- 组查询暴露权限提升风险
无论您是经验丰富的系统管理员还是刚开始接触 Linux 服务器管理,这些工具都是不可或缺的。将它们与 AlexHost 的强大基础设施相结合 — 具有 NVMe 支持的存储、完全 root 访问权限和企业级 DDoS 保护 — 您将拥有运行快速、安全和管理良好的服务器所需的一切。
准备好完全控制您的 Linux 环境了吗?探索 AlexHost VPS 托管并立即开始。
