引言
在 Linux 系统中,有两个非常重要的技能:学会查阅帮助文档 和掌握用户管理。前者让你遇到问题时能够自助解决,后者让你能够安全地管理多用户环境。
在我学习 Linux 的过程中,man 命令是我最常用的工具之一。它不仅提供了命令的详细说明,还能查询系统调用和库函数。而用户管理则是系统管理员的基本功,从创建用户到删除用户,每一步都需要谨慎操作。
今天,我将通过自己的学习笔记,系统地整理 Linux 帮助手册的使用方法和用户管理命令。
第一部分:Linux 帮助手册(man)
一、man 命令基础
man 是 manual 的缩写,用于查看 Linux 系统中的命令、函数、配置文件的帮助文档。
bash
# 基本语法
man [编号] 查询内容
# 示例
man ls # 查看 ls 命令的帮助
man pwd # 查看 pwd 命令的帮助
man strlen # 查看 strlen 函数的帮助
man fork # 查看 fork 系统调用的帮助
退出方式: 按 q 键退出帮助手册界面
实例:
man ls

二、man 编号系统
Linux 帮助手册分为多个章节,通过编号可以精确查找:
| 编号 | 说明 | 示例 |
|---|---|---|
| 1 | 用户命令 | man 1 ls, man 1 pwd |
| 2 | 系统调用(内核函数) | man 2 fork, man 2 open |
| 3 | 库函数(C标准库) | man 3 printf, man 3 strlen |
| 4 | 特殊文件(设备文件) | man 4 null |
| 5 | 文件格式与配置文件 | man 5 passwd, man 5 group |
| 6 | 游戏 | man 6 fortune |
| 7 | 宏包与约定 | man 7 man |
| 8 | 系统管理命令 | man 8 useradd |
三、同名命令与函数的区分
bash
# 问题:printf 既是命令又是库函数
# 查询 printf 命令(编号1)
man 1 printf
# 输出:printf - format and print data
# 查询 printf 库函数(编号3)
man 3 printf
# 输出:printf, fprintf, dprintf, sprintf, snprintf - formatted output conversion
# 不加编号时,默认显示第一个匹配的章节(通常是编号1)
man printf # 默认显示命令版本
四、帮助手册使用示例
cpp
# 基本操作
man grep # 查看 grep 命令的帮助
man group # 查看 group 相关帮助
# 参数说明
grep -v # -v 表示反向匹配(显示不匹配的行)
grep -a # 将二进制文件当作文本处理
# 函数查询
man strlen # 查看 strlen 函数说明
# 包含:接口属性、线程安全信息、相关标准(C11、POSIX.1-2008)
五、man 手册内容解析
bash
# 1. 函数名称
strlen - calculate the length of a string
# 2. 标准规范
# 包含 C11、POSIX.1-2008 等标准兼容性说明
# 历史版本支持:POSIX.1-2001、C89 等
# 3. 安全说明
# MT-Safe 表示线程安全
# 4. 替代方案
# 当输入缓冲区可能不含终止空字节时,建议使用 strnlen(3)
# 5. 相关参考
# string(3) - 字符串操作函数
# wcslen(3) - 宽字符字符串长度函数
六、man 手册浏览技巧
| 操作 | 说明 |
|---|---|
| 方向键 | 上下滚动 |
| 空格键 | 向下翻一页 |
| /关键词 | 搜索关键词(按 n 查找下一个) |
| q | 退出帮助手册 |
第二部分:Linux 用户管理
一、用户信息存储
1. /etc/passwd 文件
用户信息存储在 /etc/passwd 文件中,每行代表一个用户。
bash
# 查看 passwd 文件
cat /etc/passwd
# 示例输出
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
# 普通用户(UID 从 1000 开始)
ubuntu:x:1000:1000:Ubuntu:/home/ubuntu:/bin/bash
字段说明:
| 字段位置 | 含义 | 示例 |
|---|---|---|
| 1 | 用户名 | root |
| 2 | 密码占位符(x 表示密码存储在 shadow 文件) |
x |
| 3 | UID(用户ID) | 0(root),1000(普通用户) |
| 4 | GID(主组ID) | 0 |
| 5 | 用户全名/描述 | root |
| 6 | 家目录路径 | /root,/home/用户名 |
| 7 | 登录 Shell | /bin/bash,/usr/sbin/nologin |
特殊用户:
-
root用户 UID 为 0,拥有最高权限 -
普通用户 UID 从 1000 开始分配
-
/usr/sbin/nologin或/bin/false表示禁止登录
2. /etc/shadow 文件
密码实际存储在 /etc/shadow 文件中,使用单向加密算法。
bash
# 查看 shadow 文件(需要 root 权限)
sudo cat /etc/shadow
# 格式:用户名:加密密码:最后修改时间:最小天数:最大天数:警告天数:...
3. /etc/group 文件
组信息存储在 /etc/group 文件中
bash
cat /etc/group
# 格式:组名:组密码占位符:GID:组成员
# 示例
sudo:x:27:ubuntu
docker:x:999:ubuntu,user2
字段说明:
| 字段 | 含义 |
|---|---|
| 1 | 组名 |
| 2 | 组密码占位符(通常为 x) |
| 3 | GID(组ID) |
| 4 | 组成员(逗号分隔) |
二、用户操作命令
1. useradd------创建用户
bash
# 基本语法
useradd 用户名 # 基本创建(不推荐,需要手动配置)
adduser 用户名 # 交互式创建(推荐)
# 示例:创建用户 zhangsan
sudo adduser zhangsan
# 执行过程
# 1. 提示设置密码(至少8个字符,不能是简单回文)
# 2. 输入用户信息(可选)
# 3. 确认创建
# 创建后的变化:
# - /etc/passwd 增加一行用户信息
# - /etc/shadow 增加密码记录
# - /home/zhangsan 创建家目录
useradd vs adduser:
| 命令 | 特点 | 推荐程度 |
|---|---|---|
useradd |
基础命令,需要手动配置 | 不推荐 |
adduser |
交互式,自动创建家目录、设置 Shell | 推荐 |
2. userdel------删除用户
bash
# 删除用户(保留家目录)
sudo userdel 用户名
# 删除用户并删除家目录
sudo userdel -r 用户名
# 示例
sudo userdel zhangsan # 仅删除用户,/home/zhangsan 仍在
sudo userdel -r lisi # 删除用户和家目录
# 验证删除
cat /etc/passwd | grep 用户名 # 无输出表示已删除
ls /home/ # 确认家目录是否还在
3. passwd------修改密码
bash
# 修改当前用户密码
passwd
# 修改指定用户密码(需要管理员权限)
sudo passwd 用户名
# 示例
passwd # 修改自己的密码
sudo passwd zhangsan # 修改 zhangsan 的密码
# 密码策略:
# - 输入时不显示字符(安全考虑)
# - 需要输入两次确认
# - 新用户首次登录必须修改密码
# - 建议定期更换密码
三、用户切换与注销
1. su------切换用户
bash
# 基本语法
su 用户名 # 切换用户(不加载目标用户环境)
su - 用户名 # 切换用户并加载完整环境(推荐)
# 示例
su zhangsan # 切换到 zhangsan
su - zhangsan # 切换到 zhangsan,并进入其家目录
# 切换到 root
su # 切换到 root
su - # 切换到 root 并加载环境
# 退出当前用户
exit # 退出当前 shell,返回原用户
四、用户组管理
1. groupadd------创建组
bash
# 创建新组
sudo groupadd 组名
# 示例
sudo groupadd developers
sudo groupadd testers
# 验证
cat /etc/group | grep developers
# 输出:developers:x:1002:
2. usermod------修改用户所属组
bash
# 将用户加入组
sudo usermod -G 组名 用户名
# 示例:将 zhangsan 加入 developers 组
sudo usermod -G developers zhangsan
# 注意:-G 会覆盖用户原有的附加组
# 如需添加多个组,用逗号分隔
sudo usermod -G group1,group2,group3 zhangsan
# 查看用户所属组
groups zhangsan
3. groupdel------删除组
bash
# 删除组
sudo groupdel 组名
# 示例
sudo groupdel testers
# 注意:不能删除有用户的主组
五、用户管理完整示例
bash
# 1. 创建新用户
sudo adduser alice
# 设置密码:alice123456
# 输入用户信息(可跳过)
# 2. 创建用户组
sudo groupadd project_a
# 3. 将用户加入组
sudo usermod -G project_a alice
# 4. 查看用户信息
id alice
# uid=1002(alice) gid=1002(alice) groups=1002(alice),1003(project_a)
# 5. 查看 passwd 文件
cat /etc/passwd | grep alice
# alice:x:1002:1002:Alice,,,:/home/alice:/bin/bash
# 6. 切换用户测试
su - alice
pwd # /home/alice
exit
# 7. 删除用户(保留家目录)
sudo userdel alice
# 8. 删除用户及家目录
sudo userdel -r bob
# 9. 删除组
sudo groupdel project_a
第三部分:常用命令速查
一、帮助手册命令
| 命令 | 说明 | 示例 |
|---|---|---|
man 命令 |
查看命令帮助 | man ls |
man 编号 名称 |
指定章节查询 | man 3 printf |
man -k 关键词 |
搜索相关手册 | man -k password |
info 命令 |
查看更详细的帮助 | info ls |
命令 --help |
快速查看参数 | ls --help |
二、用户管理命令
| 命令 | 说明 | 示例 |
|---|---|---|
adduser |
创建用户(推荐) | sudo adduser alice |
userdel |
删除用户 | sudo userdel alice |
userdel -r |
删除用户及家目录 | sudo userdel -r alice |
passwd |
修改密码 | passwd 或 sudo passwd alice |
su - |
切换用户 | su - alice |
exit |
退出当前用户 | exit |
id |
查看用户信息 | id alice |
groups |
查看用户所属组 | groups alice |
groupadd |
创建组 | sudo groupadd dev |
groupdel |
删除组 | sudo groupdel dev |
usermod -G |
修改用户附加组 | sudo usermod -G dev alice |
三、用户信息文件
| 文件 | 说明 | 查看命令 |
|---|---|---|
/etc/passwd |
用户信息 | cat /etc/passwd |
/etc/shadow |
密码信息 | sudo cat /etc/shadow |
/etc/group |
组信息 | cat /etc/group |
/etc/sudoers |
sudo 权限 | sudo cat /etc/sudoers |
总结
一、man 手册核心要点
| 编号 | 内容 | 常用命令 |
|---|---|---|
| 1 | 用户命令 | ls, pwd, grep |
| 2 | 系统调用 | fork, open, read |
| 3 | 库函数 | printf, strlen, malloc |
| 5 | 配置文件 | passwd, group |
| 8 | 系统管理 | useradd, userdel |
二、用户管理核心要点
| 操作 | 命令 | 注意事项 |
|---|---|---|
| 创建用户 | adduser |
必须设置密码,至少8位 |
| 删除用户 | userdel -r |
-r 会删除家目录 |
| 修改密码 | passwd |
新用户首次登录必须修改 |
| 切换用户 | su - |
使用 - 加载完整环境 |
| 用户信息 | /etc/passwd |
UID 0 是 root |
三、学习建议
-
善用 man 手册 :遇到不懂的命令,先
man 命令 -
区分命令和函数 :
man 1 printfvsman 3 printf -
用户管理需谨慎:删除用户前确认数据已备份
-
使用 adduser 而不是 useradd:交互式更友好
Linux 的魅力在于它的透明性和可定制性。man 手册让你能够深入了解每个命令的细节,而用户管理则让你能够安全地管理多用户环境。
掌握这些基础技能,你就能更加自信地在 Linux 系统中工作和探索。下一篇文章,我将分享关于 Linux 文件权限和进程管理的内容,敬请期待!