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

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

用户身份管理与文件权限控制是 Linux 系统安全性的核心基础,贯穿系统使用、运维配置、数据保护全流程。本文将系统讲解用户身份体系(root / 普通用户 / 用户组)、文件 / 目录权限标识(rwx / 数字权限 / 三类权限主体),并深度拆解权限修改三大核心命令(chmod/chown/chgrp),明确红帽(RHEL)、CentOS、EulerOS、Ubuntu、Debian 及 macOS 的适配要点,助力新手理解权限逻辑、熟练掌握修改操作,保障系统与数据安全。
Linux/macOS 是多用户操作系统,不同用户拥有不同操作权限,核心身份分为三类:
/home/用户名)及授权文件的操作权限,需通过 sudo 提权执行高权限操作。nginx、mysql 用户),无登录权限,仅保障服务正常运行。dev 组,授予项目目录访问权限)。user001 的主组为 user001);user001 加入 dev 组,拥有两组权限)。Linux/macOS 中,每个文件 / 目录的权限通过10 位字符标识描述,同时支持3 位数字权限简化表示,核心逻辑全发行版一致。
ls -l 查看)示例:-rwxr-xr-- 1 root root 120 Jul 10 10:00 test.txt
-= 普通文件、d= 目录、l= 符号链接、c= 字符设备);u,User),描述文件创建者的操作权限;g,Group),描述文件所属组用户的操作权限;o,Other),描述系统中其他所有用户的操作权限;r(Read,读权限)、w(Write,写权限)、x(Execute,执行权限)、-(无对应权限)。将 r/w/x 对应为数字,通过求和表示权限组合,每类主体(所有者 / 所属组 / 其他)对应 1 位数字:
r=4(读权限)、w=2(写权限)、x=1(执行权限)、-=0(无权限);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)默认权限。u(User):文件所有者(创建者);g(Group):文件所属组;o(Other):除所有者和所属组外的其他用户;a(All):所有用户(u+g+o 的缩写)。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 提权。
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)。
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) | 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 |
→ 权限配置:chmod 755 script.sh(所有者可执行,他人仅读),无需 777(避免安全风险)。
→ 配置步骤:
sudo groupadd dev;sudo usermod -aG dev user001;sudo chown -R :dev project/ && sudo chmod -R 770 project/(仅 dev 组用户可读写执行)。→ 权限配置:chmod 600 private.key(仅所有者可读写,其他无权限),避免泄露。
→ 权限配置:sudo chown root:root nginx.conf && chmod 644 nginx.conf(所有者 root 可写,他人仅读)。
→ 权限配置:chmod -R 755 public_docs/(所有用户可读,仅所有者可修改)。
Operation not permitted(权限不足)→ 原因:① 普通用户修改他人文件 / 系统文件;② 文件被设置为只读(chattr +i);
→ 解决方案:① 用 sudo 提权(如 sudo chmod 755 /etc/test.conf);② 解除只读属性(sudo chattr -i 文件名)。
→ 原因:目录的所属组或其他用户无 x(执行权限),x 权限是进入目录的必要条件;
→ 解决方案:chmod o+x 目录 或 chmod 755 目录(确保其他用户有 x 权限)。
→ 原因:文件的所属组和其他用户无 r(读权限),或上级目录无 x 权限(无法进入目录则无法读取文件);
→ 解决方案:① 给其他用户添加读权限(chmod o+r 文件名);② 确保上级目录有 x 权限(chmod o+x 上级目录)。
chown -R 修改目录权限后,部分文件权限异常→ 原因:修改时用户 / 组不存在,或文件被进程占用;
→ 解决方案:① 确认用户 / 组存在(id 用户名/grep 组名 /etc/group);② 关闭占用进程后重新修改。
→ 原因:macOS 同时存在 POSIX 权限(Linux 兼容)和 ACL 权限(额外访问控制);
→ 解决方案:① 用 chmod 修改 POSIX 权限;② 清除 ACL 权限(sudo chmod -N 文件名)。
sudo 提权执行高权限操作,减少误操作风险;-R,仅目录本身权限变更,子内容权限不变;用户身份、文件权限与 chmod/chown/chgrp 命令是 Linux/macOS 系统安全的核心,跨发行版核心逻辑完全一致(仅 macOS 的 UID 范围、组配置文件路径有细微差异)。学习关键在于理解'权限标识体系(rwx / 数字权限)'和'三类权限主体(u/g/o)',并按场景精准配置权限(如脚本 755、隐私文件 600、共享目录 770)。
红帽、CentOS、EulerOS、Ubuntu、Debian 五大 Linux 发行版的权限命令用法完全统一,无需额外适配;macOS 仅需注意 ACL 权限可能干扰 POSIX 权限,核心操作与 Linux 一致。通过本文的示例与最佳实践,可快速掌握权限管理技能,保障系统与数据的安全性和可用性。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online
通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online
将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online