跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Shell / Bash

Linux 基础操作:用户身份、文件权限与修改命令详解

Linux 系统安全核心在于用户身份管理与文件权限控制。 root、普通用户及系统用户的 UID 区别,阐述 rwx 字符权限与数字权限的转换逻辑。重点解析 chmod、chown、chgrp 三大命令的语法、参数及递归用法,涵盖 RHEL、CentOS、Ubuntu、macOS 等主流系统的适配差异。结合脚本执行、目录共享、隐私文件等场景提供配置方案,并总结最小权限原则与安全避坑指南,助力运维人员保障系统与数据安全。

晚风告白发布于 2026/2/8更新于 2026/10/266.4K 浏览
Linux 基础操作:用户身份、文件权限与修改命令详解

Linux 基础操作:用户身份、文件权限与权限修改命令全解析(跨发行版适配)

用户身份管理与文件权限控制是 Linux 系统安全性的核心基础,贯穿系统使用、运维配置、数据保护全流程。本文将系统讲解用户身份体系(root / 普通用户 / 用户组)、文件 / 目录权限标识(rwx / 数字权限 / 三类权限主体),并深度拆解权限修改三大核心命令(chmod/chown/chgrp),明确红帽(RHEL)、CentOS、EulerOS、Ubuntu、Debian 及 macOS 的适配要点,助力新手理解权限逻辑、熟练掌握修改操作,保障系统与数据安全。

一、核心概念基础:用户身份与权限体系

1.用户身份体系(全发行版通用)

Linux/macOS 是多用户操作系统,不同用户拥有不同操作权限,核心身份分为三类:

  • root 用户(超级管理员):UID=0,拥有系统最高权限,可执行所有操作(如修改系统配置、删除任意文件、创建用户),日常操作不建议直接使用,避免误操作风险。
  • 普通用户:UID≥1000(Linux 主流发行版)/ UID≥500(旧版),仅拥有自身主目录(/home/用户名)及授权文件的操作权限,需通过 sudo 提权执行高权限操作。
  • 系统用户:UID 介于 1-999(Linux),用于运行系统服务(如 nginx、mysql 用户),无登录权限,仅保障服务正常运行。
2.用户组(权限聚合单元)
  • 定义:将多个用户归为一组,统一分配权限,简化权限管理(如将开发人员加入 dev 组,授予项目目录访问权限)。
  • 核心类型:
    • 主组(初始组):用户创建时默认分配的组,通常与用户名同名(如 user001 的主组为 user001);
    • 附加组(额外组):用户后续加入的其他组(如 user001 加入 dev 组,拥有两组权限)。
3.文件 / 目录权限标识体系

Linux/macOS 中,每个文件 / 目录的权限通过10 位字符标识描述,同时支持3 位数字权限简化表示,核心逻辑全发行版一致。

(1)字符权限标识(ls -l 查看)

示例:-rwxr-xr-- 1 root root 120 Jul 10 10:00 test.txt

  • 第 1 位:文件类型(-= 普通文件、d= 目录、l= 符号链接、c= 字符设备);
  • 第 2-4 位:所有者权限(u,User),描述文件创建者的操作权限;
  • 第 5-7 位:所属组权限(g,Group),描述文件所属组用户的操作权限;
  • 第 8-10 位:其他用户权限(o,Other),描述系统中其他所有用户的操作权限;
  • 权限字符含义:r(Read,读权限)、w(Write,写权限)、x(Execute,执行权限)、-(无对应权限)。
(2)数字权限标识(简化版,核心常用)

将 r/w/x 对应为数字,通过求和表示权限组合,每类主体(所有者 / 所属组 / 其他)对应 1 位数字:

  • =4(读权限)、=2(写权限)、=1(执行权限)、=0(无权限);
r
w
x
-
  • 常见组合:
    • 755:所有者 rwx(4+2+1)、所属组 r-x(4+0+1)、其他 r--(4+0+0)→ 普通文件 / 目录默认权限;
    • 644:所有者 rw-(4+2+0)、所属组 r--、其他 r-- → 普通文件默认权限;
    • 777:所有用户 rwx(权限最高,慎用,易引发安全风险);
    • 600:所有者 rw-、其他无权限 → 隐私文件(如 ~/.ssh/id_rsa)默认权限。
  • (3)三类权限主体(权限控制对象)
    • u(User):文件所有者(创建者);
    • g(Group):文件所属组;
    • o(Other):除所有者和所属组外的其他用户;
    • a(All):所有用户(u+g+o 的缩写)。

    二、权限修改三大核心命令(chmod/chown/chgrp)

    1.chmod:修改文件 / 目录的权限(核心命令)
    命令释义

    chmod(Change Mode)用于修改文件 / 目录的权限(字符权限或数字权限),是权限管理最常用的命令,支持针对不同主体(u/g/o/a)精准分配权限。

    核心语法(两种模式,全发行版通用)
    # 1. 字符模式(灵活,按主体分配权限) chmod [选项] [主体][操作符][权限] 文件名/目录
    # 2. 数字模式(简洁,直接指定三类主体权限) chmod [选项] 数字权限 文件名/目录
    
    关键参数与符号说明
    主体(u/g/o/a)操作符(+/-/=)权限(r/w/x)选项
    u:所有者+:添加权限r:读-R:递归修改目录及子目录 / 文件权限(目录必用)
    g:所属组-:移除权限w:写-v:显示修改过程
    o:其他用户=:覆盖权限x:执行-c:仅显示权限变更的文件
    a:所有用户
    实战经典示例
    # 1. 数字模式(最常用,直接指定权限)
    chmod 755 test.sh # 所有者 rwx,所属组 r-x,其他 r--(可执行文件默认)
    chmod 644 test.txt # 所有者 rw-,所属组 r--,其他 r--(普通文件默认)
    chmod -R 777 data/ # 递归修改 data 目录及所有子内容为所有用户 rwx(慎用)
    
    # 2. 字符模式(精准修改,灵活)
    chmod u+x test.sh # 给所有者添加执行权限
    chmod g-w test.txt # 给所属组移除写权限
    chmod o=r test.txt # 给其他用户设置仅读权限(覆盖原有权限)
    chmod a+rwx test.py # 给所有用户添加 rwx 权限(等价于 chmod 777)
    chmod u=rw,g=r,o=- test.conf # 所有者 rw-,所属组 r--,其他无权限(等价于 640)
    
    # 3. 目录权限修改(必须加-R 递归)
    chmod -R 750 docs/ # 递归修改 docs 目录,所有者 rwx,所属组 r-x,其他无权限
    
    发行版适配说明

    ✅ 红帽 / CentOS/EulerOS/Ubuntu/Debian/macOS:chmod 命令的语法、参数、权限逻辑完全一致,无任何差异。 ⚠️ 注意:目录必须加 -R 才能递归修改子内容权限;普通用户仅能修改自身拥有的文件 / 目录权限,修改系统文件或他人文件需 sudo 提权。

    2.chown:修改文件 / 目录的所有者与所属组
    命令释义

    chown(Change Owner)用于修改文件 / 目录的所有者或所有者 + 所属组,核心作用是转移文件的权限归属(如将项目文件交给 dev 用户和 dev 组管理)。

    核心语法(全发行版通用)
    # 1. 仅修改所有者 chown [选项] 新所有者 文件名/目录
    # 2. 同时修改所有者和所属组(用冒号分隔) chown [选项] 新所有者:新所属组 文件名/目录
    # 3. 仅修改所属组(等价于 chgrp,较少用) chown [选项] :新所属组 文件名/目录
    
    关键选项
    • -R:递归修改目录及子目录 / 文件的所有者 / 所属组(目录必用);
    • -v:显示修改过程;
    • -c:仅显示所有者 / 所属组变更的文件。
    实战经典示例
    # 1. 仅修改所有者(需 root 权限,普通用户无权限转移他人文件)
    sudo chown user001 test.txt # 将 test.txt 的所有者改为 user001
    
    # 2. 同时修改所有者和所属组(最常用)
    sudo chown user001:dev test.sh # 所有者改为 user001,所属组改为 dev
    sudo chown root:root /etc/hosts # 恢复系统文件的所有者和所属组为 root
    
    # 3. 递归修改目录的所有者和所属组(目录必用-R)
    sudo chown -R dev:dev project/ # 将 project 目录及所有子内容交给 dev 用户和 dev 组
    
    # 4. 仅修改所属组(等价于 chgrp dev project/)
    sudo chown -R :dev docs/ # 递归修改 docs 目录的所属组为 dev
    
    发行版适配说明

    ✅ 红帽 / CentOS/EulerOS/Ubuntu/Debian/macOS:核心语法、选项完全一致,修改时均需 root 权限(普通用户仅能修改自身文件的所有者为自己,无实际意义)。 ⚠️ 差异点:macOS 的用户 UID 起始值为 501(普通用户),Linux 为 1000,但不影响命令使用;macOS 支持用用户名或 UID 修改(如 chown 501:20 test.txt,20 为 staff 组 GID)。

    3.chgrp:修改文件 / 目录的所属组(简化版)
    命令释义

    chgrp(Change Group)是 chown 的简化命令,仅用于修改文件 / 目录的所属组,功能单一但更直观,适合仅需调整组权限的场景。

    核心语法(全发行版通用)
    chgrp [选项] 新所属组 文件名/目录
    
    关键选项
    • -R:递归修改目录及子目录 / 文件的所属组(目录必用);
    • -v:显示修改过程;
    • -c:仅显示所属组变更的文件。
    实战经典示例
    # 1. 修改单个文件的所属组
    sudo chgrp dev test.txt # 将 test.txt 的所属组改为 dev
    
    # 2. 递归修改目录的所属组(最常用)
    sudo chgrp -R dev data/ # 递归修改 data 目录及所有子内容的所属组为 dev
    
    # 3. 显示修改过程
    sudo chgrp -v dev docs/ # 输出:changed group of 'docs/' from root to dev
    
    发行版适配说明

    ✅ 红帽 / CentOS/EulerOS/Ubuntu/Debian/macOS:命令语法、选项完全一致,与 chown :新所属组 功能等价。 ⚠️ 注意:chgrp 仅修改所属组,不影响所有者;普通用户仅能修改自身文件的所属组为自己所在的组(需 groups 命令查看所属组),跨组修改需 sudo 提权。

    三、各发行版权限体系与命令适配汇总表

    核心维度红帽(RHEL)CentOSEulerOSUbuntuDebianmacOS
    用户身份root(UID=0)、普通用户(UID≥1000)、系统用户(1-999)✅ 完全一致✅ 完全一致✅ 完全一致✅ 完全一致root(UID=0)、普通用户(UID≥501)、系统用户(1-500)
    用户组主组 + 附加组,/etc/group 存储组信息✅ 一致✅ 一致✅ 一致✅ 一致主组 + 附加组,/private/etc/group 存储组信息
    权限标识10 位字符标识、3 位数字权限(r=4/w=2/x=1)✅ 一致✅ 一致✅ 一致✅ 一致✅ 完全一致
    chmod 命令字符模式 + 数字模式,-R 递归参数必用✅ 一致✅ 一致✅ 一致✅ 一致✅ 完全一致
    chown 命令支持所有者 + 所属组修改,-R 递归✅ 一致✅ 一致✅ 一致✅ 一致✅ 完全一致,组分隔符支持冒号(:)
    chgrp 命令仅修改所属组,与 chown : 组功能等价✅ 一致✅ 一致✅ 一致✅ 一致✅ 完全一致
    默认权限普通文件 644,目录 755(受 umask 022 影响)✅ 一致✅ 一致✅ 一致✅ 一致普通文件 644,目录 755(umask 022),隐私文件 600

    四、权限配置场景化指南(安全高效)

    ✅ 场景 1:创建可执行脚本(如 Shell 脚本、Python 脚本)

    → 权限配置:chmod 755 script.sh(所有者可执行,他人仅读),无需 777(避免安全风险)。

    ✅ 场景 2:项目目录共享给开发组(如 dev 组用户共同编辑)

    → 配置步骤:

    1. 创建 dev 组:sudo groupadd dev;
    2. 添加用户到 dev 组:sudo usermod -aG dev user001;
    3. 修改目录权限:sudo chown -R :dev project/ && sudo chmod -R 770 project/(仅 dev 组用户可读写执行)。
    ✅ 场景 3:隐私文件(如密钥文件、配置文件)

    → 权限配置:chmod 600 private.key(仅所有者可读写,其他无权限),避免泄露。

    ✅ 场景 4:系统配置文件(如 /etc/nginx/nginx.conf)

    → 权限配置:sudo chown root:root nginx.conf && chmod 644 nginx.conf(所有者 root 可写,他人仅读)。

    ✅ 场景 5:公共只读目录(如文档共享目录)

    → 权限配置:chmod -R 755 public_docs/(所有用户可读,仅所有者可修改)。

    五、常见问题与避坑指南(全发行版通用)

    ❌ 问题 1:修改权限提示 Operation not permitted(权限不足)

    → 原因:① 普通用户修改他人文件 / 系统文件;② 文件被设置为只读(chattr +i); → 解决方案:① 用 sudo 提权(如 sudo chmod 755 /etc/test.conf);② 解除只读属性(sudo chattr -i 文件名)。

    ❌ 问题 2:目录设置 755 后,普通用户仍无法进入

    → 原因:目录的所属组或其他用户无 x(执行权限),x 权限是进入目录的必要条件; → 解决方案:chmod o+x 目录 或 chmod 755 目录(确保其他用户有 x 权限)。

    ❌ 问题 3:文件设置 644 后,普通用户仍无法读取

    → 原因:文件的所属组和其他用户无 r(读权限),或上级目录无 x 权限(无法进入目录则无法读取文件); → 解决方案:① 给其他用户添加读权限(chmod o+r 文件名);② 确保上级目录有 x 权限(chmod o+x 上级目录)。

    ❌ 问题 4:chown -R 修改目录权限后,部分文件权限异常

    → 原因:修改时用户 / 组不存在,或文件被进程占用; → 解决方案:① 确认用户 / 组存在(id 用户名/grep 组名 /etc/group);② 关闭占用进程后重新修改。

    ❌ 问题 5:macOS 修改权限后,Finder 中仍无法操作

    → 原因:macOS 同时存在 POSIX 权限(Linux 兼容)和 ACL 权限(额外访问控制); → 解决方案:① 用 chmod 修改 POSIX 权限;② 清除 ACL 权限(sudo chmod -N 文件名)。

    六、权限安全最佳实践(必遵循)

    1. 最小权限原则:不给多余权限(如普通文件无需 x 权限,目录无需 777),避免被恶意利用;
    2. 禁用 root 日常登录:用普通用户 +sudo 提权执行高权限操作,减少误操作风险;
    3. 定期检查关键文件权限:系统配置文件(/etc/)、密钥文件(~/.ssh/)需保持 644 或 600,避免权限过宽;
    4. 目录权限必加 - R 递归:修改目录权限时忘记 -R,仅目录本身权限变更,子内容权限不变;
    5. 避免 chmod 777:所有用户可读写执行,易导致文件被篡改、病毒注入,仅测试环境临时使用。

    总结

    用户身份、文件权限与 chmod/chown/chgrp 命令是 Linux/macOS 系统安全的核心,跨发行版核心逻辑完全一致(仅 macOS 的 UID 范围、组配置文件路径有细微差异)。学习关键在于理解'权限标识体系(rwx / 数字权限)'和'三类权限主体(u/g/o)',并按场景精准配置权限(如脚本 755、隐私文件 600、共享目录 770)。

    红帽、CentOS、EulerOS、Ubuntu、Debian 五大 Linux 发行版的权限命令用法完全统一,无需额外适配;macOS 仅需注意 ACL 权限可能干扰 POSIX 权限,核心操作与 Linux 一致。通过本文的示例与最佳实践,可快速掌握权限管理技能,保障系统与数据的安全性和可用性。

    目录

    1. Linux 基础操作:用户身份、文件权限与权限修改命令全解析(跨发行版适配)
    2. 一、核心概念基础:用户身份与权限体系
    3. 1.用户身份体系(全发行版通用)
    4. 2.用户组(权限聚合单元)
    5. 3.文件 / 目录权限标识体系
    6. (1)字符权限标识(ls -l 查看)
    7. (2)数字权限标识(简化版,核心常用)
    8. (3)三类权限主体(权限控制对象)
    9. 二、权限修改三大核心命令(chmod/chown/chgrp)
    10. 1.chmod:修改文件 / 目录的权限(核心命令)
    11. 命令释义
    12. 核心语法(两种模式,全发行版通用)
    13. 1. 字符模式(灵活,按主体分配权限) chmod [选项] [主体][操作符][权限] 文件名/目录
    14. 2. 数字模式(简洁,直接指定三类主体权限) chmod [选项] 数字权限 文件名/目录
    15. 关键参数与符号说明
    16. 实战经典示例
    17. 1. 数字模式(最常用,直接指定权限)
    18. 2. 字符模式(精准修改,灵活)
    19. 3. 目录权限修改(必须加-R 递归)
    20. 发行版适配说明
    21. 2.chown:修改文件 / 目录的所有者与所属组
    22. 命令释义
    23. 核心语法(全发行版通用)
    24. 1. 仅修改所有者 chown [选项] 新所有者 文件名/目录
    25. 2. 同时修改所有者和所属组(用冒号分隔) chown [选项] 新所有者:新所属组 文件名/目录
    26. 3. 仅修改所属组(等价于 chgrp,较少用) chown [选项] :新所属组 文件名/目录
    27. 关键选项
    28. 实战经典示例
    29. 1. 仅修改所有者(需 root 权限,普通用户无权限转移他人文件)
    30. 2. 同时修改所有者和所属组(最常用)
    31. 3. 递归修改目录的所有者和所属组(目录必用-R)
    32. 4. 仅修改所属组(等价于 chgrp dev project/)
    33. 发行版适配说明
    34. 3.chgrp:修改文件 / 目录的所属组(简化版)
    35. 命令释义
    36. 核心语法(全发行版通用)
    37. 关键选项
    38. 实战经典示例
    39. 1. 修改单个文件的所属组
    40. 2. 递归修改目录的所属组(最常用)
    41. 3. 显示修改过程
    42. 发行版适配说明
    43. 三、各发行版权限体系与命令适配汇总表
    44. 四、权限配置场景化指南(安全高效)
    45. ✅ 场景 1:创建可执行脚本(如 Shell 脚本、Python 脚本)
    46. ✅ 场景 2:项目目录共享给开发组(如 dev 组用户共同编辑)
    47. ✅ 场景 3:隐私文件(如密钥文件、配置文件)
    48. ✅ 场景 4:系统配置文件(如 /etc/nginx/nginx.conf)
    49. ✅ 场景 5:公共只读目录(如文档共享目录)
    50. 五、常见问题与避坑指南(全发行版通用)
    51. ❌ 问题 1:修改权限提示 Operation not permitted(权限不足)
    52. ❌ 问题 2:目录设置 755 后,普通用户仍无法进入
    53. ❌ 问题 3:文件设置 644 后,普通用户仍无法读取
    54. ❌ 问题 4:chown -R 修改目录权限后,部分文件权限异常
    55. ❌ 问题 5:macOS 修改权限后,Finder 中仍无法操作
    56. 六、权限安全最佳实践(必遵循)
    57. 总结

    更多推荐文章

    查看全部
    • Midjourney 以图生图与提示词反推教程
    • Webhook 自动化部署指南:搭建智能触发器系统
    • PX4 结合 Mid360 与 Fast-LIO 实现无人机室内定点悬停
    • VMware Workstation 安装 Kali Linux 虚拟机教程
    • 5 款主流开源 AI Agent 框架深度解析
    • YOLO-DRONE 无人机低空巡检检测模型技术解析
    • 华三 H3C 交换机 NTP 时钟配置步骤(命令及 WEB 配置)
    • VMware 中安装 Kali Linux 虚拟机的实操记录
    • Stable Diffusion XL 1.0 镜像免配置方案:灵感画廊部署指南
    • 基于 Python Flask 与 Vue3 的学生成绩管理系统设计实现
    • MySQL 迁移金仓数据库:高兼容与自动化低成本落地方案
    • GLM-4.6V-Flash-WEB 模型参数量与显存占用解析
    • 使用U盘离线部署GLM-4.6V-Flash-WEB视觉模型
    • OpenClaw 安装与飞书机器人接入教程
    • Git 新建分支后首次推送到远程仓库的步骤
    • Visual Studio Code 跨平台升级指南:Windows / macOS / Linux
    • MIT 电机混合模式控制参数与调试指南
    • C++ Lambda 表达式详解:语法、捕获与底层原理
    • GitHub Copilot 学生认证入门指南
    • Android Framework 源码学习指南:系统启动、IPC 及核心组件解析

    相关免费在线工具

    • Base64 字符串编码/解码

      将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

    • Base64 文件转换器

      将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

    • Markdown转HTML

      将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

    • HTML转Markdown

      将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

    • JSON 压缩

      通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online

    • JSON美化和格式化

      将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online