.## 1. 介绍
Ubuntu 是一种流行的 Linux 发行版,广泛用于个人环境到企业服务器系统。在管理 Ubuntu 系统时,用户账户的管理至关重要。特别是,查看已注册用户列表有助于安全管理和账户组织。
本文阐述了如何在 Ubuntu 上列出用户。内容涵盖从基本命令到获取详细信息的方法,适用于初学者和有经验的管理员。
2. 如何在 Ubuntu 中检查用户列表
在 Ubuntu 中,可以通过特定文件和命令轻松获取用户信息。以下方法可帮助你查看用户列表。
2.1 使用 /etc/passwd 显示用户列表
在 Ubuntu 中,所有用户信息都存储在 /etc/passwd 文件中。显示该文件即可验证所有已注册用户。
命令示例
cat /etc/passwd
运行此命令后,信息将以如下格式显示:
root:x:0:0:root:/root:/bin/bash
user1:x:1000:1000:User One,,,:/home/user1:/bin/bash
user2:x:1001:1001:User Two,,,:/home/user2:/bin/bash
每行由冒号(:)分隔的字段组成,包含以下信息:
- 用户名
- 密码(现在显示为 x)
- 用户 ID(UID)
- 组 ID(GID)
- 用户信息(注释字段)
- 主目录
- 默认登录 Shell
由于该文件还包含系统用户,你可以使用下面的方法仅提取普通登录用户。
2.2 仅列出用户名
要仅列出用户名,使用以下命令:
cut -d: -f1 /etc/passwd
或者,你也可以使用 awk 命令:
awk -F':' '{ print $1 }' /etc/passwd
示例输出:
root
user1
user2
2.3 搜索特定用户
要检查某个特定用户是否存在,使用 grep 命令:
grep 'user1' /etc/passwd
该命令仅显示与 user1 相关的条目。
2.4 通过 /etc/group 列出组
要查看用户所属的组,请参考 /etc/group 文件:
cat /etc/group | cut -d: -f1
要列出特定用户所属的组,使用:
groups user1
示例输出:
user1 : user1 sudo
这表明 user1 也是 sudo 组的成员。
3. 如何检查当前登录的用户
Ubuntu 提供了多条命令来验证当前哪些用户已登录。这些命令有助于获取会话和登录信息。
3.1 使用 who 检查已登录用户
who 命令列出所有当前已登录的用户。
命令示例
who
示例输出
user1 tty1 2025-02-16 10:05
user2 pts/0 2025-02-16 11:30
字段说明
- 用户名(已登录用户)
- 终端名称(例如本地的
tty1,SSH 的pts/0) - 登录时间
who 命令简洁易用,适合快速检查登录状态。
3.2 使用 w 检查详细信息
w 命令提供比 who 更详细的信息。
命令示例
w
示例输出
11:35:25 up 2:15, 2 users, load average: 0.03, 0.02, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
user1 tty1 10:05 1:30m 0.10s 0.10s -bash
user2 pts/0 192.168.1.10 11:30 0.00s 0.05s 0.02s sshd
字段说明
- 系统运行时间
- 已登录用户数
- CPU 负载平均值
- 用户名
- 终端
- 远程主机
- 登录时间
- 空闲时间
- CPU 使用率
- 正在运行的进程
FROM 字段中的 IP 地址有助于验证远程 SSH 登录,适用于监控和安全管理。
3.3 使用 users 显示已登录用户
如果您想要一个仅显示已登录用户名的简化列表,users 命令非常有用。
命令示例
users
示例输出
user1 user2
此命令是 who 的简化版本,仅显示已登录的用户名。
3.4 使用 whoami 识别当前用户
要检查当前会话正在执行的用户,请使用 whoami 命令。
命令示例
whoami
示例输出
user1
此命令简单显示当前会话用户的用户名,有助于验证执行上下文。
3.5 使用 last 检查登录历史
last 命令允许您查看用户的登录历史。
命令示例
last
示例输出
user1 pts/0 192.168.1.10 Mon Feb 15 10:20 still logged in
user2 tty1 Mon Feb 15 09:30 - 10:00 (00:30)
root tty1 Sun Feb 14 22:15 - 23:45 (01:30)
- 用户名
- 使用的终端
- 远程 IP 地址
- 登录开始时间
- 注销时间(或仍处于登录状态)
- 总会话持续时间
此命令有助于管理员监控先前的访问并检测可疑登录。
4. 如何检查详细的用户信息
Ubuntu 提供了几个命令来检索注册用户的详细信息。查看 UID、组成员资格和登录 shell 等细节有助于管理员准确管理权限。本节解释使用 id、groups、finger 和 chage 的方法。
4.1 使用 id 检查 UID、GID 和组
id 命令显示用户的 UID(用户 ID)、GID(组 ID) 和 组成员资格。
命令示例
id user1
示例输出
uid=1001(user1) gid=1001(user1) groups=1001(user1),27(sudo),1002(docker)
uid→ 用户标识符gid→ 主组标识符groups→ 用户所属的所有组
检查当前用户信息
id
4.2 通过 groups 检查组成员资格
groups 命令快速列出用户所属的组。
命令示例
groups user1
示例输出
user1 : user1 sudo docker
groups 在您只想查看组名称而不带详细 ID 时非常有用。
4.3 使用 finger 检索用户详细信息
finger 命令提供详细的用户信息,例如全名、登录目录和 shell 类型。
安装命令
sudo apt install finger
命令示例
finger user1
示例输出
Login: user1 Name: User One
Directory: /home/user1 Shell: /bin/bash
Last login: Mon Feb 16 10:20 (UTC) on pts/0
- Login → 用户名
- Name → 全名(可选)
- Directory → 主目录
- Shell → 默认 shell
- Last login → 上次登录时间

4.4 使用 chage 检查密码到期
chage 命令允许管理员查看密码到期期限和上次密码更改时间。
命令示例
sudo chage -l user1
示例输出
Last password change : Jan 15, 2025
Password expires : Mar 15, 2025
Password inactive : never
Account expires : never
Minimum number of days between password change : 7
Maximum number of days between password change : 60
Number of days of warning before password expires : 5
- Last password change → 最近一次密码更改的日期
- Password expires → 密码过期日期
- Password inactive → 密码失效前的非活动时长
- Account expires → 账户过期日期
- Minimum number of days between password changes → 两次密码更改之间的最少天数
- Maximum number of days between password changes → 两次密码更改之间的最多天数
- Warning days before password expires → 密码过期前的警告天数
管理员可以使用这些信息来强制执行密码策略并提升系统安全性。
5. 在 Ubuntu 中管理用户(添加、删除、修改)
合理的用户管理可以提升系统的稳定性和安全性。Ubuntu 提供了多个管理命令,例如 adduser、deluser 和 usermod。本节将说明如何添加、删除和修改用户。
5.1 添加用户
Ubuntu 允许使用 adduser 或 useradd 命令来添加新用户。
5.1.1 adduser 命令(推荐)
adduser 命令提供了一种交互式的方式来添加用户。
sudo adduser newuser
交互式提示示例:
Adding user `newuser' ...
Adding new group `newuser' (1002) ...
Adding new user `newuser' (1002) with group `newuser' ...
Creating home directory `/home/newuser' ...
Copying files from `/etc/skel' ...
Enter new UNIX password: ********
Retype new UNIX password: ********
passwd: password updated successfully
Changing the user information for newuser
Enter the new value, or press ENTER for the default
Full Name []:
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n]
- 用户账户
- 专用组
- 主目录 (
/home/newuser) - 登录密码
- 基本账户信息
5.1.2 useradd 命令(高级)
useradd 命令适合脚本使用,提供更细粒度的控制,但不会自动完成所有设置。
sudo useradd -m -s /bin/bash newuser
sudo passwd newuser
-m→ 创建主目录-s /bin/bash→ 设置登录 Shell
使用此命令时,需要单独设置密码。
5.2 删除用户
您可以使用 deluser 或 userdel 来删除用户。
5.2.1 deluser 命令(推荐)
deluser 命令用于删除用户账户。
sudo deluser newuser
同时删除主目录
sudo deluser --remove-home newuser
这将删除账户以及目录 /home/newuser。
5.2.2 userdel 命令(高级)
userdel 命令提供了更多的控制选项。
sudo userdel newuser
sudo userdel -r newuser
5.3 修改现有用户
使用 usermod 命令来修改现有用户信息。
5.3.1 更改用户名
sudo usermod -l newname oldname
5.3.2 更改主目录
sudo usermod -d /new/home/path user1
sudo usermod -d /home/newuser -m user1
5.3.3 修改组成员关系
sudo usermod -aG sudo user1
groups user1
5.3.4 更改密码
sudo passwd user1
Enter new UNIX password: ********
Retype new UNIX password: ********
passwd: password updated successfully
6. 用户管理的实际场景
Ubuntu 中的用户管理不仅仅是列出和修改账户。了解如何在实际场景中使用这些命令对于维护安全高效的环境至关重要。本节将介绍常见的使用案例以及相应的解决方案。
6.1 按特定条件搜索用户
6.1.1 显示具有管理员权限(sudo)的用户
要列出具有 sudo 权限的用户,可使用 getent 命令检查 /etc/group 文件:
getent group sudo
示例输出
sudo:x:27:user1,user2
sudo:x:27:→ 组信息user1,user2→ 属于 sudo 组的用户
6.1.2 显示可登录的用户
./etc/passwd 文件包含系统账户。要仅提取可以登录的用户:
grep '/bin/bash' /etc/passwd
示例输出
user1:x:1001:1001::/home/user1:/bin/bash
user2:x:1002:1002::/home/user2:/bin/bash
- 仅包括使用
/bin/bash或/bin/sh等 shell 的用户 - 使用
/usr/sbin/nologin或/bin/false的系统账户被排除
6.1.3 显示系统用户(非登录账户)
grep -E '/usr/sbin/nologin|/bin/false' /etc/passwd
示例输出
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
syslog:x:104:110::/home/syslog:/bin/false
这有助于管理员识别不应意外删除的账户。
6.2 定期清理未使用的用户
6.2.1 显示所有用户的最近登录时间
lastlog
示例输出
Username Port From Latest
root tty1 Mon Feb 12 14:02:08 +0000 2025
user1 pts/0 192.168.1.10 Mon Jan 15 10:30:12 +0000 2025
user2 pts/1 192.168.1.20 Never logged in
- 从未登录 → 用户从未登录过
sudo deluser user2 --remove-home
6.2.2 验证最近的密码更改
sudo chage -l user1
sudo passwd --expire user1
下次用户登录时,出于安全原因将要求重置密码。
6.3 检查通过 SSH 连接的用户
who | grep pts
示例输出
user1 pts/0 192.168.1.10 11:30
这有助于识别远程用户及其 IP 地址。
6.4 导出所有用户信息为 CSV
getent passwd | awk -F: '{print $1 "," $3 "," $4 "," $6}' > users.csv
示例 users.csv
root,0,0,/root
user1,1001,1001,/home/user1
user2,1002,1002,/home/user2
- 导出用户名、UID、GID 和主目录
- 数据可使用 Excel 或电子表格进行分析
7. 常见问题
7.1 我可以直接编辑 /etc/passwd 吗?
答案: 直接编辑 不推荐。错误的修改可能导致无法登录或损坏系统。
更安全的方法:
sudo vipw
7.2 who 与 users 命令的区别
| Command | Description |
|---|---|
who | Displays detailed login information |
users | Displays only usernames of logged-in users |
7.3 如何检查特定用户的登录历史
last user1
7.4 如何更改用户密码
sudo passwd user1
7.5 如何临时禁用用户
sudo usermod -L user1
sudo usermod -U user1
7.6 将用户添加到 sudo 组
sudo usermod -aG sudo user1
7.7 更改用户的主目录
sudo usermod -d /new/home/path -m user1
7.8 彻底删除用户及其数据
sudo deluser --remove-home user1
或
sudo userdel -r user1
7.9 检查已登录用户的详细活动
w
- 已登录用户
- 远程 IP 地址
- 当前进程
- 系统负载
这使管理员能够监控使用情况并检测未授权访问。



