跳到主要内容 Linux 基础操作:用户身份、文件权限与修改命令详解 | 极客日志
Shell / Bash
Linux 基础操作:用户身份、文件权限与修改命令详解 Linux 系统安全核心在于用户身份管理与文件权限控制。 root、普通用户及系统用户的 UID 区别,阐述 rwx 字符权限与数字权限的转换逻辑。重点解析 chmod、chown、chgrp 三大命令的语法、参数及递归用法,涵盖 RHEL、CentOS、Ubuntu、macOS 等主流系统的适配差异。结合脚本执行、目录共享、隐私文件等场景提供配置方案,并总结最小权限原则与安全避坑指南,助力运维人员保障系统与数据安全。
晚风告白 发布于 2026/2/8 更新于 2026/4/18 6.3K 浏览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 位数字:
r=4(读权限)、w=2(写权限)、x=1(执行权限)、-=0(无权限);
常见组合:
:所有者 (4+2+1)、所属组 (4+0+1)、其他 (4+0+0)→ 普通文件 / 目录默认权限;
微信扫一扫,关注极客日志 微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
相关免费在线工具 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
755
rwx
r-x
r--
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)精准分配权限。
核心语法(两种模式,全发行版通用)
关键参数与符号说明 主体(u/g/o/a) 操作符(+/-/=) 权限(r/w/x) 选项 u:所有者 +:添加权限 r:读 -R:递归修改目录及子目录 / 文件权限(目录必用) g:所属组 -:移除权限 w:写 -v:显示修改过程 o:其他用户 =:覆盖权限 x:执行 -c:仅显示权限变更的文件 a:所有用户
实战经典示例
chmod 755 test.sh
chmod 644 test.txt
chmod -R 777 data/
chmod u+x test.sh
chmod g-w test.txt
chmod o=r test.txt
chmod a+rwx test.py
chmod u=rw,g=r,o=- test.conf
chmod -R 750 docs/
发行版适配说明 ✅ 红帽 / CentOS/EulerOS/Ubuntu/Debian/macOS:chmod 命令的语法、参数、权限逻辑完全一致,无任何差异。
⚠️ 注意:目录必须加 -R 才能递归修改子内容权限;普通用户仅能修改自身拥有的文件 / 目录权限,修改系统文件或他人文件需 sudo 提权。
2.chown:修改文件 / 目录的所有者与所属组
命令释义 chown(Change Owner)用于修改文件 / 目录的所有者 或所有者 + 所属组 ,核心作用是转移文件的权限归属(如将项目文件交给 dev 用户和 dev 组管理)。
核心语法(全发行版通用)
关键选项
-R:递归修改目录及子目录 / 文件的所有者 / 所属组(目录必用);
-v:显示修改过程;
-c:仅显示所有者 / 所属组变更的文件。
实战经典示例
sudo chown user001 test.txt
sudo chown user001:dev test.sh
sudo chown root:root /etc/hosts
sudo chown -R dev:dev project/
sudo chown -R :dev docs/
发行版适配说明 ✅ 红帽 / 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 的简化命令,仅用于修改文件 / 目录的所属组 ,功能单一但更直观,适合仅需调整组权限的场景。
核心语法(全发行版通用)
关键选项
-R:递归修改目录及子目录 / 文件的所属组(目录必用);
-v:显示修改过程;
-c:仅显示所属组变更的文件。
实战经典示例
sudo chgrp dev test.txt
sudo chgrp -R dev data/
sudo chgrp -v dev docs/
发行版适配说明 ✅ 红帽 / CentOS/EulerOS/Ubuntu/Debian/macOS:命令语法、选项完全一致,与 chown :新所属组 功能等价。
⚠️ 注意:chgrp 仅修改所属组,不影响所有者;普通用户仅能修改自身文件的所属组为自己所在的组(需 groups 命令查看所属组),跨组修改需 sudo 提权。
三、各发行版权限体系与命令适配汇总表 核心维度 红帽(RHEL) CentOS EulerOS Ubuntu Debian macOS 用户身份 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 组用户共同编辑)
创建 dev 组:sudo groupadd dev;
添加用户到 dev 组:sudo usermod -aG dev user001;
修改目录权限: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 文件名)。
六、权限安全最佳实践(必遵循)
最小权限原则 :不给多余权限(如普通文件无需 x 权限,目录无需 777),避免被恶意利用;
禁用 root 日常登录 :用普通用户 +sudo 提权执行高权限操作,减少误操作风险;
定期检查关键文件权限 :系统配置文件(/etc/)、密钥文件(~/.ssh/)需保持 644 或 600,避免权限过宽;
目录权限必加 - R 递归 :修改目录权限时忘记 -R,仅目录本身权限变更,子内容权限不变;
避免 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 一致。通过本文的示例与最佳实践,可快速掌握权限管理技能,保障系统与数据的安全性和可用性。