# Linux基础Day05:命令补充+用户及组账号管理+密码管理
声明:本文仅作学习交流使用,引用需标明出处。
如有谬误,敬请指正
Linux作为多用户、多任务操作系统,文件操作是日常运维的基础能力,而用户/组账号及密码管理则是系统权限控制的核心。本文基于CentOS系统,整合文件查看与处理、用户账号管理、组账号管理、密码管理全量知识点,搭配实操命令和核心原理解析,从基础操作到实战技巧层层拆解,补充关键细节和易踩坑点,零基础也能快速掌握。
一、文件查看与处理核心命令
日常运维中需频繁查看、筛选、输出文件内容,这部分命令覆盖按行查看、分页查看、内容输出、结果写入、命令联动、内容过滤六大核心能力,命令间可灵活组合,大幅提升操作效率。
1.1 按行快速查看:head & tail
适用于快速获取文件前N行/后N行内容,语法简洁,行号选项-n可直接省略,是最常用的文件查看命令。
| 命令 | 格式 | 实操示例 |
|---|---|---|
| head(前N行) | head [-n] 行数 [路径/]文件名 |
head -n 2 /etc/shells(查看前2行)head -2 /etc/shells(省略-n,效果一致) |
| tail(后N行) | tail [-n] 行数 [路径/]文件名 |
tail -n 2 /etc/shells(查看后2行)tail -3 /etc/group(省略-n,查看后3行) |
拓展实用技巧:tail -f 文件名 可实时监控文件内容变化,是查看系统日志、应用日志的必备命令,比如tail -f /var/log/messages可实时查看系统日志更新。
1.2 大文件分页查看:less
针对大文件设计的交互式查看命令,解决cat一次性输出所有内容的弊端,支持翻页、关键字搜索,按q退出,是查看配置文件、日志文件的核心工具。
- 格式:
less [-N] [路径/]文件名(-N:添加行号标记,方便定位具体行) - 核心交互操作:
- 回车:以行为单位向下翻阅;
- 空格:以页为单位向下翻阅;
/关键字:搜索匹配内容;n:查找下一个匹配项;N:查找上一个匹配项;q:退出less查看模式(核心退出指令,必记)。
- 实操示例:
less /etc/passwd # 分页查看/etc/passwd less -N /etc/shadow # 带行号分页查看/etc/shadow
1.3 基础内容输出:echo
用于在终端直接打印指定内容,可单独使用,也可结合重定向写入文件,支持中英文、数字等任意内容输出,是脚本编写和快速输出的基础工具。
- 格式:
echo 要输出的内容 - 实操示例:
echo 123 # 输出数字 echo HelloWorld # 输出英文字符串 echo 服务器运维 # 输出中文字符串
进阶用法:利用双引号实现多行输入,结合重定向可完成非交互式多行内容写入:
[root@localhost ~]# echo "hello
> world
> hi"
hello
world
hi
# 结合重定向写入文件
[root@localhost ~]# echo "line1
> line2
> line3" > /opt/multi_line.txt
1.4 命令结果写入文件:重定向
将命令输出结果写入文件(文件不存在则自动创建),分为覆盖重定向和追加重定向两种,是实现“命令结果持久化”的核心操作:
| 符号 | 作用 | 实操示例 |
|---|---|---|
> |
覆盖写入(清空原有内容) | cat /etc/shells > /opt/file1.txthostname > /opt/hn.txt |
>> |
追加写入(保留原有内容) | echo 123 > /opt/1.txtecho 456 >> /opt/1.txt(最终内容:123+456) |
1.5 多命令联动:管道操作
通过管道符|将前一个命令的输出作为后一个命令的输入,实现多命令协作,可无限串联,是Linux命令高效组合的核心方式。
- 格式:
命令1 | 命令2 [| 命令3 ...] - 实操示例:
cat -n /etc/shells | head -2 # 加行号后取前2行 ls --help | less # 分页查看ls帮助信息 grep root /etc/passwd | tail -1 # 过滤含root的行并取最后1行
1.6 内容精准筛选:grep
Linux过滤三剑客之一,用于在文件中过滤满足条件的行,支持正则表达式,是处理配置文件、日志的核心命令,使用频率极高。
- 格式:
grep [选项] 筛选条件 [路径/]文件名 - 核心选项与正则规则(必背):
选项/规则 作用 -i忽略大小写 -v取反(过滤不满足条件的行) ^关键字匹配以关键字开头的行 关键字$匹配以关键字结尾的行 ^$匹配空行 - 实操示例:
grep root /etc/passwd # 过滤含root的行 grep "^root" /etc/passwd # 过滤以root开头的行 grep "bash$" /etc/passwd # 过滤以bash结尾的行(可登录用户) grep -i "ROOT" /etc/passwd # 忽略大小写过滤root grep -v "root" /etc/passwd # 过滤不含root的行 grep "^$" /etc/passwd # 过滤空行
二、用户账号管理:查/增/改/删全操作
Linux的多用户特性依赖用户账号实现身份识别和权限划分,所有管理命令需root权限执行,操作结果同步写入/etc/passwd,核心通过UID(用户唯一标识)区分不同用户。
前置知识:核心配置文件与用户分类
1. 本地账户核心配置文件
| 文件路径 | 作用 | 访问权限 |
|---|---|---|
/etc/passwd |
用户基础信息文件(执行用户管理命令时会被系统修改) | 所有用户可查看 |
/etc/shadow |
用户加密密码文件 | 仅root可查看 |
/etc/group |
组账号信息文件 | 所有用户可查看 |
/etc/gshadow |
组账号密码文件 | 仅root可查看 |
2. 用户分类与UID规则
Linux用户按权限分为三类,以UID(用户唯一标识,0~60000)区分,UID不可重复:
| 用户类型 | UID范围 | 核心特征 |
|---|---|---|
| 超级管理员 | 0 | root用户,拥有最高权限 |
| 系统用户 | 1-999 | 运行系统服务,无法登录 |
| 普通用户 | 1000~60000 | 手动创建,供真人使用,权限受限 |
注:组的唯一标识为GID,UID与GID通常保持一致,但非强制要求;创建普通用户时,系统会自动创建同名基本组(私有组),用户可额外加入多个附加组(从数组)。
2.1 查:查看用户信息(2种方式)
| 方式 | 命令 | 优势 | 实操示例 |
|---|---|---|---|
| 直接查询(推荐) | id 用户名 |
输出简洁,含UID/GID/所属组 | id tom → uid=1000(tom) gid=1000(tom) 组=1000(tom) |
| 间接查询 | grep 用户名 /etc/passwd |
查看完整基础信息 | grep jerry /etc/passwd → jerry:x:1001:1001::/home/jerry:/bin/bash (字段:用户名:密码占位符:UID:GID:描述信息:家目录:解释器) |
2.2 增:创建用户 - useradd
创建新普通用户,系统会自动创建同名基本组,用户信息写入/etc/passwd。
- 格式:
useradd [选项] 新用户名 - 核心选项(自定义用户属性):
选项 作用 注意事项 -u指定UID UID需未被使用 -G指定附加组 附加组需已存在 -s指定登录解释器 /sbin/nologin表示禁止登录-d指定家目录 默认 /home/用户名 - 实操示例:
useradd jerry # 默认创建 useradd -d /opt/lucy lucy # 指定家目录 useradd -s /sbin/nologin tina # 禁止登录 useradd -G root sam # 指定附加组 useradd -u 1100 eve # 指定UID
关键踩坑点:
正常情况下,useradd -d /路径 用户名能自动创建家目录,是因为/etc/login.defs中默认配置CREATE_HOME=yes,但该设置仅对useradd生效;usermod -d若不加-m,不会自动创建新家目录。
2.3 改:修改用户信息 - usermod
修改已存在用户的属性,核心选项与useradd一致,需注意“覆盖式修改”的特性。
- 格式:
usermod <选项> 已有用户名 - 核心选项说明:
-G:修改用户附加组(覆盖原有附加组,多组用逗号分隔,如-G 组1,组2,组3);-s:修改用户解释器(如将/sbin/nologin改为/bin/bash实现登录);-d:修改用户家目录(仅修改/etc/passwd配置,不自动创建目录);-m:强制创建新家目录,自动复制/etc/skel下的默认配置(如.bashrc)到该目录。
- 核心注意事项:
-d仅修改配置路径,不自动创建新目录;-G为覆盖式修改,新增附加组需注意保留原有组;-d -m组合可改家目录+自动创建并迁移文件(高频用法)。
- 实操示例:
groupadd mygroup # 先创建测试组 usermod -G mygroup tom # 修改附加组(覆盖原有) usermod -s /bin/bash tina # 允许登录 usermod -d /opt/jerry jerry # 仅改家目录配置 usermod -d /opt/jerry -m jerry # 改家目录+自动创建并迁移文件
2.4 删:删除用户 - userdel
删除已存在用户,默认仅删账号信息,需加-r彻底删除(含家目录/信箱),避免残留文件导致权限问题。
- 格式:
userdel [选项] 已有用户名 - 核心选项:
-r(递归删除,彻底清理用户相关文件) - 实操示例:
userdel -r tina # 彻底删除tina id tina # 验证:无此用户 grep tina /etc/passwd # 验证:无输出
高频踩坑点:UID分配规则
| 场景 | 系统默认行为 | 解决方案 |
|---|---|---|
| 删除tom(UID1000)→ 新建aom | aom的UID为1001(向后找下一个未用值) | 无需处理,默认规则即可 |
| 删除tom(UID1000)→ 新建tom | 新tom的UID为1001 | 手动指定:useradd -u 1000 tom |
注意:仅
userdel tom会残留家目录/信箱(归属UID1000),新tom(UID1001)会出现权限不匹配,建议先userdel -r tom再重新创建。
三、组账号管理:增/删/成员管理
组账号用于批量管理用户权限,唯一标识为GID(不可重复),组信息写入/etc/group,组账号仅用于权限归类,不具备登录系统的能力。
前置知识:组的核心规则
- 每个用户仅1个基本组,可拥有多个附加组;
- 普通组GID从1000开始,系统组GID为1-999;
- 创建用户自动生成同名基本组,创建组不会生成用户。
3.1 组本身管理:groupadd & groupdel
| 操作 | 命令 | 核心限制 | 实操示例 |
|---|---|---|---|
| 创建组 | groupadd 新组名 |
无(GID自动分配) | groupadd mygroup |
| 删除组 | groupdel 已有组名 |
不可删除用户的基本组 | groupdel mygroup |
关键注意事项:
- 用户未删除时,直接删除其基本组会失败;
- 若A用户的基本组是B用户的附加组,删除A用户后,A组(基本组)仍会保留,需手动删除。
3.2 组成员管理:gpasswd
添加/移除组成员,操作后该组成为用户的附加组,是批量管理用户权限的核心命令。
- 格式:
gpasswd [选项] 用户名 组名 - 核心选项:
选项 作用 英文释义 -a添加用户到组 add -d从组中移除用户 delete - 实操示例:
groupadd mygroup # 准备测试组 gpasswd -a tom mygroup # 添加tom到组 grep mygroup /etc/group # 验证:mygroup:x:1001:tom gpasswd -d tom mygroup # 移除tom grep mygroup /etc/group # 验证:mygroup:x:1001:
四、用户密码管理:修改+切换
用户密码以加密格式存储在/etc/shadow(仅root可查看),包含交互式修改、非交互式修改、用户切换三大核心操作,是用户登录系统的关键凭证。
前置知识:/etc/shadow字段解析
/etc/shadow每行对应一个用户的密码信息,共9个字段,以:分隔,示例:
tom:$6$xxxx:19500:0:99999:7:::
9个字段含义:
- 用户名:与
/etc/passwd对应; - 加密密码:SHA-512加密后的字符串,
*/!!表示无密码、无法登录; - 最后一次改密日期:从1970-01-01到改密当天的总天数;
- 密码最小使用天数:0表示随时可改;
- 密码最大使用天数:99999表示永久有效;
- 密码过期前警告天数:提前提醒用户改密;
- 密码过期后宽限天数:过期后仍可登录改密的时间;
- 账号失效日期:1970年算起的天数,到期彻底失效;
- 保留字段:暂未使用。
4.1 交互式修改密码:passwd(推荐)
原生安全方式,输入密码时终端无明文显示,root和普通用户权限不同:
| 用户身份 | 命令 | 规则 |
|---|---|---|
| root管理员 | passwd 用户名 |
可为任意用户改密码,无复杂度限制 |
| 普通用户 | passwd |
仅可改自身密码,需满足系统密码策略 |
- 实操示例(root视角):
useradd mike # 创建用户 passwd mike # 设置密码(输入时无显示)
注:
passwd直接回车,默认修改当前登录用户的密码。
4.2 非交互式修改密码:echo + passwd --stdin
适用于脚本批量操作,密码明文显示,仅root用户可使用,测试环境常用。
- 格式:
echo 密码 | passwd --stdin 用户名 - 实操示例:
echo 123456 | passwd --stdin mike # 无交互设置密码
安全提醒:该方式密码明文暴露在命令行,生产环境建议结合加密方式使用。
4.3 用户切换:su - 用户名
临时切换用户身份,-必须添加(同步加载目标用户的环境变量、家目录、PATH等,等同于正常登录)。
- 权限规则:
- root → 普通用户:免密切换;
- 普通用户 → 其他用户(含root):需输入目标用户密码。
- 终端提示符标识:
- root用户:
#;普通用户:$(快速判断当前身份)。
- root用户:
- 实操示例:
su - mike # root切普通用户(免密) [mike@localhost ~]$ passwd # 普通用户改自身密码 [mike@localhost ~]$ exit # 退出返回root
五、核心知识点总结(必背)
5.1 文件操作
- 快速看行用
head/tail(tail -f实时监控日志),大文件分页用less(/搜索、q退出); - 输出用
echo(支持多行输入),写入用>(覆盖)/>>(追加),多命令联动用|管道; - 过滤用
grep(必背:-i/-v、^/$/^$正则规则)。
5.2 用户/组管理
- 用户:
id查看、useradd创建(-u/-G/-s/-d自定义)、usermod修改(-d -m创建新家目录)、userdel -r彻底删除; - 组:
groupadd创建、groupdel删除(不可删基本组)、gpasswd -a/-d管理成员; - 关键规则:UID默认向后分配,复用需手动指定;
CREATE_HOME=yes仅对useradd生效。
5.3 密码与切换
- 改密码:
passwd(交互式,推荐)、echo + passwd --stdin(非交互式,测试用); - 切换用户:
su - 用户名(必加-,root切普通用户免密); - 核心文件:
/etc/passwd(用户)、/etc/group(组)、/etc/shadow(密码)。
总结
- 本文整合了Linux文件操作、用户/组/密码管理的全量核心知识点,补充了实操拓展技巧和高频踩坑点,适配新手学习逻辑;
- 核心命令需结合实操巩固,重点掌握
grep正则过滤、usermod家目录修改、gpasswd组成员管理等易混淆操作; - 权限管理是Linux核心,理解UID/GID规则、基本组/附加组区别,是后续云计算运维、权限配置的基础。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)