声明:本文仅作学习交流使用,引用需标明出处。

如有谬误,敬请指正

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.txt
hostname > /opt/hn.txt
>> 追加写入(保留原有内容) echo 123 > /opt/1.txt
echo 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 tomuid=1000(tom) gid=1000(tom) 组=1000(tom)
间接查询 grep 用户名 /etc/passwd 查看完整基础信息 grep jerry /etc/passwdjerry: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)到该目录。
  • 核心注意事项:
    1. -d仅修改配置路径,不自动创建新目录;
    2. -G为覆盖式修改,新增附加组需注意保留原有组;
    3. -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. 每个用户仅1个基本组,可拥有多个附加组;
  2. 普通组GID从1000开始,系统组GID为1-999;
  3. 创建用户自动生成同名基本组,创建组不会生成用户。

3.1 组本身管理:groupadd & groupdel

操作 命令 核心限制 实操示例
创建组 groupadd 新组名 无(GID自动分配) groupadd mygroup
删除组 groupdel 已有组名 不可删除用户的基本组 groupdel mygroup

关键注意事项

  1. 用户未删除时,直接删除其基本组会失败;
  2. 若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个字段含义

  1. 用户名:与/etc/passwd对应;
  2. 加密密码:SHA-512加密后的字符串,*/!!表示无密码、无法登录;
  3. 最后一次改密日期:从1970-01-01到改密当天的总天数;
  4. 密码最小使用天数:0表示随时可改;
  5. 密码最大使用天数:99999表示永久有效;
  6. 密码过期前警告天数:提前提醒用户改密;
  7. 密码过期后宽限天数:过期后仍可登录改密的时间;
  8. 账号失效日期:1970年算起的天数,到期彻底失效;
  9. 保留字段:暂未使用。

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等,等同于正常登录)。

  • 权限规则:
    1. root → 普通用户:免密切换;
    2. 普通用户 → 其他用户(含root):需输入目标用户密码。
  • 终端提示符标识:
    • root用户:#;普通用户:$(快速判断当前身份)。
  • 实操示例:
    su - mike            # root切普通用户(免密)
    [mike@localhost ~]$ passwd      # 普通用户改自身密码
    [mike@localhost ~]$ exit        # 退出返回root
    

五、核心知识点总结(必背)

5.1 文件操作

  1. 快速看行用head/tailtail -f实时监控日志),大文件分页用less/搜索、q退出);
  2. 输出用echo(支持多行输入),写入用>(覆盖)/>>(追加),多命令联动用|管道;
  3. 过滤用grep(必背:-i/-v^/$/^$正则规则)。

5.2 用户/组管理

  1. 用户:id查看、useradd创建(-u/-G/-s/-d自定义)、usermod修改(-d -m创建新家目录)、userdel -r彻底删除;
  2. 组:groupadd创建、groupdel删除(不可删基本组)、gpasswd -a/-d管理成员;
  3. 关键规则:UID默认向后分配,复用需手动指定;CREATE_HOME=yes仅对useradd生效。

5.3 密码与切换

  1. 改密码:passwd(交互式,推荐)、echo + passwd --stdin(非交互式,测试用);
  2. 切换用户:su - 用户名(必加-,root切普通用户免密);
  3. 核心文件:/etc/passwd(用户)、/etc/group(组)、/etc/shadow(密码)。

总结

  1. 本文整合了Linux文件操作、用户/组/密码管理的全量核心知识点,补充了实操拓展技巧和高频踩坑点,适配新手学习逻辑;
  2. 核心命令需结合实操巩固,重点掌握grep正则过滤、usermod家目录修改、gpasswd组成员管理等易混淆操作;
  3. 权限管理是Linux核心,理解UID/GID规则、基本组/附加组区别,是后续云计算运维、权限配置的基础。
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐