当前位置: 首页 > news >正文

拒绝瞎 777!一文搞懂 Linux 文件权限底层到高阶玩法

在 Linux 操作系统的安全体系中,文件权限管理是核心基石之一。它通过精细化的权限分配机制,实现了对文件访问、修改、执行等操作的严格管控,保障了系统数据的安全性与完整性。本文将从基础权限原理出发,逐步深入到权限配置、特殊权限应用及默认权限管理,结合实操案例,为你全面拆解 Linux 文件权限管理的核心逻辑与实践技巧。

文章目录

    • 一、Linux 文件系统权限基础原理
      • 1.三类权限主体
      • 2.权限字符串解析:10位字符的核心含义
      • 3.权限优先级规则
      • 4.rwx 权限的核心含义(文件 vs 目录)
    • 二、文件权限管理实操:chmod、chown、chgrp 命令
      • 1.chmod 命令:修改文件/目录权限
        • (1)符号法:直观易懂,适合精细化调整
        • (2)数字法:高效便捷,适合批量配置
      • 2.chown 与 chgrp 命令:修改属主与属组
        • (1)chown 命令:修改属主/同时修改属主和属组
        • (2)chgrp 命令:专门修改属组
      • 3.文件权限总结
    • 三、默认权限管理:umask 命令
      • 1.umask 核心规则
      • 2.umask 实操案例
      • 3.umask 持久化配置
    • 四、高级权限管理:特殊权限(SUID、SGID、Sticky)
      • 1.SUID:针对可执行文件,临时获取属主权限
      • 2.SGID:针对目录,实现组内文件共享
      • 3.Sticky:针对公共目录,防止文件被误删
      • 4.查找系统中的特殊权限文件
    • 五、总结

一、Linux 文件系统权限基础原理

Linux 采用灵活且严谨的权限模型,能够适配绝大多数场景下的权限管控需求。其核心逻辑围绕“权限主体”与“权限类型”展开,通过二者的组合,实现对文件操作的精准限制。

1.三类权限主体

Linux 将文件的访问主体划分为三类,分别对应不同的权限层级,优先级依次递减:

  • 文件属主(User):通常是创建该文件的用户,对文件拥有最高级别的管控权限,权限优先级最高。

  • 文件属组(Group):默认是文件属主所属的主组,组内所有成员共享该组对应的文件权限。

  • 其他用户(Other):除文件属主和属组成员外,系统中所有其他用户,权限优先级最低。

2.权限字符串解析:10位字符的核心含义

通过ls -l命令可查看文件的详细权限信息,以示例-rw-r-----. 1 laoma wheel 2262 Dec 23 08:47 myfile为例,权限部分-rw-r-----.的10位字符可分为四部分,各部分含义如下:

字符位置代表含义示例解析(myfile)
第1位文件类型标识-:普通文件;d:目录;l:软链接;b/c:块/字符设备
第2-4位文件属主(User)权限rw-:属主拥有读、写权限,无执行权限
第5-7位文件属组(Group)权限r--:属组成员仅拥有读权限,无写、执行权限
第8-10位其他用户(Other)权限---:其他用户无任何权限

3.权限优先级规则

若某用户同时属于文件属主和属组成员(如示例中 laoma 用户既是属主,也是 wheel 组成员),系统将优先匹配**文件属主权限**,属组权限不再生效。这一规则确保了文件创建者的核心管控权,避免权限冲突。

4.rwx 权限的核心含义(文件 vs 目录)

需特别注意的是,r(读)w(写)x(执行)三种基础权限,在普通文件和目录上的含义截然不同,这是权限管理的易错点,也是核心考点。

二、文件权限管理实操:chmod、chown、chgrp 命令

掌握权限管理的核心命令,是实现精细化权限配置的关键。Linux 提供chmod(修改权限)、chown(修改属主)、chgrp(修改属组)三大命令,满足各类权限调整需求。

1.chmod 命令:修改文件/目录权限

chmod是权限管理最常用的命令,用于调整文件或目录的读、写、执行权限,支持两种语法格式:符号法和数字法,可根据场景灵活选择。

(1)符号法:直观易懂,适合精细化调整

语法格式:chmod WhoHowWhat /path/to/file

参数说明:

  • Who:指定权限主体,u(属主)、g(属组)、o(其他)、a(所有用户)。

  • How:指定权限操作,+(添加权限)、-(移除权限)、=(精确设置权限)。

  • What:指定权限类型,r(读)、w(写)、x(执行)。

实操案例:以/lab/passwd文件为例,演示符号法权限调整:

# 1. 查看文件初始权限[root@centos7 lab]# ls -l passwd-rw-r--r--.1root root231211814:17passwd# 2. 给属主添加执行权限[root@centos7 lab]# chmod u+x ./passwd[root@centos7 lab]# ls -l passwd-rwxr--r--.1root root231211814:17passwd# 3. 一次性调整多主体权限:属主移除写、执行权限,属组添加写权限,其他用户移除所有权限[root@centos7 lab]# chmod u-wx,g+w,o=- passwd[root@centos7 lab]# ls -l passwd-r--rw----.1root root231211814:17passwd# 4. 一次性设置所有用户权限为读、写、执行[root@centos7 lab]# chmod a=rwx passwd[root@centos7 lab]# ls -l passwd-rwxrwxrwx.1root root231211814:17passwd
(2)数字法:高效便捷,适合批量配置

语法格式:chmod ### /path/to/file

参数说明:三位数字分别对应属主、属组、其他用户的权限,每位数字取值为0-7,对应二进制权限组合(0代表无权限,7代表读、写、执行全权限),二进制与十进制、权限的对应关系如下:

二进制十进制对应权限权限说明
0000---无任何权限
0011--x仅执行权限
0102-w-仅写权限
0113-wx写+执行权限
1004r--仅读权限
1015r-x读+执行权限
1106rw-读+写权限
1117rwx读+写+执行权限

实操案例:以/lab/passwd文件为例,演示数字法权限调整:

# 1. 设置权限为属主读、写,属组写、执行,其他用户读(对应二进制110 011 100,十进制634)[root@centos7 lab]# chmod 634 passwd[root@centos7 lab]# ls -l passwd-rw--wxr--.1root root231211814:17passwd# 2. 设置权限为属主读、写、执行,属组读、执行,其他用户读、执行(常用的755权限,适合可执行程序)[root@centos7 lab]# chmod 755 passwd[root@centos7 lab]# ls -l passwd-rwxr-xr-x.1root root231211814:17passwd# 3. 查看文件权限的数字形式和符号形式[root@centos7 lab]# stat -c %A passwd # 查看符号权限-rwxr-xr-x[root@centos7 lab]# stat -c %a passwd # 查看数字权限755

2.chown 与 chgrp 命令:修改属主与属组

在实际运维中,经常需要调整文件的属主和属组,以适配团队协作、权限管控需求。chown用于修改文件属主(可同时修改属组),chgrp专门用于修改文件属组。

(1)chown 命令:修改属主/同时修改属主和属组

语法格式:

  • 仅修改属主:chown 新属主 /path/to/file

  • 同时修改属主和属组:chown 新属主:新属组 /path/to/file

  • 递归修改目录及内部所有文件权限:chown -R 新属主:新属组 /path/to/dir

实操案例:

# 1. 查看文件初始属主和属组[root@centos7 lab]# ls -l passwd-rwxr-xr-x.1root root231211814:17passwd# 2. 修改文件属主为 laoma[root@centos7 lab]# chown laoma passwd[root@centos7 lab]# ls -l passwd-rwxr-xr-x.1csh root231211814:17passwd# 3. 同时修改属主为 laowang、属组为 wheel[root@centos7 lab]# chown laowang:wheel passwd[root@centos7 lab]# ls -l passwd-rwxr-xr-x.1laowang wheel231211814:17passwd# 4. 递归修改目录 dir01 及内部所有文件的属主和属组为 laowang:wheel[root@centos7 lab]# chown -R laowang:wheel dir01/[root@centos7 lab]# ls -R -ld dir01 dir01/*drwxrwx---.2laowang wheel2011814:22 dir01 -rwxrwx---.1laowang wheel011814:22 dir01/file01
(2)chgrp 命令:专门修改属组

语法格式:chgrp 新属组 /path/to/file(支持-R递归参数,用法与chown一致)。

实操案例:将passwd文件的属组修改为 wheel:

[root@centos7 lab]# chgrp wheel passwd[root@centos7 lab]# ls -l passwd-rwxr-xr-x.1csh wheel231211814:17passwd

3.文件权限总结

三、默认权限管理:umask 命令

在 Linux 中,新建文件或目录时,其默认权限由umask(权限掩码)决定。umask的核心作用是“剔除权限”,即从默认最大权限中,剔除umask对应的权限,得到实际默认权限。

1.umask 核心规则

  • 新建普通文件的最大默认权限为666(读、写权限,无执行权限,避免安全风险)。

  • 新建目录的最大默认权限为777(读、写、执行全权限)。

  • 实际默认权限 = 最大默认权限 - umask 值(数字法计算)。

2.umask 实操案例

# 1. 查看当前 umask 值(默认值为 0022)[csh@centos7 ~]$umask0022# 2. 新建文件和目录,查看默认权限(文件:666-022=644;目录:777-022=755)[csh@centos7 ~]$mkdirlab&&cdlab[csh@centos7 lab]$touchf1&&mkdird1[csh@centos7 lab]$ls-ltotal0drwxr-xr-x.2csh csh6Nov817:05 d1# 755权限-rw-r--r--.1csh csh0Nov817:05 f1# 644权限# 3. 修改 umask 值为 0000(不剔除任何权限),新建文件和目录[csh@centos7 lab]$umask0[csh@centos7 lab]$touchf2&&mkdird2[csh@centos7 lab]$ls-ld*2 drwxrwxrwx.2csh csh6Nov817:07 d2# 777权限-rw-rw-rw-.1csh csh0Nov817:07 f2# 666权限# 4. 修改 umask 值为 0077(剔除属组、其他用户所有权限),新建文件和目录[csh@centos7 lab]$umask077[csh@centos7 lab]$touchf3&&mkdird3[csh@centos7 lab]$ls-ld*3 drwx------.2csh csh6Nov817:10 d3# 700权限-rw-------.1csh csh0Nov817:10 f3# 600权限

3.umask 持久化配置

临时修改的 umask 值仅在当前终端生效,若需永久生效,可将配置写入对应配置文件:

  • 针对单个用户:将umask 077写入用户家目录的~/.bashrc文件。

  • 针对所有用户:将umask 077写入系统全局配置文件/etc/bashrc

# 单个用户持久化配置[csh@centos7 lab]$echo'umask 077'>>~/.bashrc[csh@centos7 lab]$source~/.bashrc# 使配置立即生效# 所有用户持久化配置(需 root 权限)[root@centos7 ~]# echo 'umask 077' >> /etc/bashrc[root@centos7 ~]# source /etc/bashrc # 使配置立即生效

四、高级权限管理:特殊权限(SUID、SGID、Sticky)

除基础的 rwx 权限外,Linux 还提供三种特殊权限:SUID、SGID、Sticky,用于解决特殊场景下的权限管控问题,进一步提升系统安全性和协作效率。

1.SUID:针对可执行文件,临时获取属主权限

核心作用:普通用户执行带有 SUID 权限的可执行文件时,会临时获取该文件属主的权限,执行结束后权限恢复。最典型的应用是passwd命令(普通用户可通过该命令修改自身密码,实际修改的是/etc/shadow文件,该文件默认仅 root 可修改)。

# 1. 查看 /etc/shadow 文件权限(仅 root 可修改)[csh@centos7 ~]$ls-l/etc/shadow ----------.1root root1264Nov816:38 /etc/shadow# 2. 查看 passwd 命令权限(带有 SUID 权限,权限位显示为 s)[csh@centos7 ~]$ls-l$(whichpasswd)-rwsr-xr-x.1root root27856Apr12020/usr/bin/passwd# 3. 给可执行文件添加 SUID 权限(以 vim 为例)[root@centos7 ~]# chmod u+s /usr/bin/vim[root@centos7 ~]# ls -l /usr/bin/vim-rwsr-xr-x.1root root233721610142020/usr/bin/vim# 4. 删除 SUID 权限[root@centos7 ~]# chmod u-s /usr/bin/vim

2.SGID:针对目录,实现组内文件共享

核心作用:针对目录设置 SGID 权限后,该目录内新建的所有文件和子目录,其属组会继承父目录的属组,而非创建者的主组,适用于团队协作场景(如开发组共享目录)。

# 1. 准备用户和组[root@centos7 lab]# groupadd devops # 创建开发组[root@centos7 lab]# useradd -G devops dev1 # 创建用户 dev1,加入 devops 组[root@centos7 lab]# useradd -G devops dev2 # 创建用户 dev2,加入 devops 组# 2. 准备共享目录,修改属组为 devops,添加属组读写执行权限[root@centos7 lab]# mkdir webapp[root@centos7 lab]# chgrp devops webapp[root@centos7 lab]# chmod g=rwx webapp# 3. 无 SGID 权限:用户 dev1 创建的文件,属组为自身主组[root@centos7 lab]# su dev1[dev1@centos7 lab]$touchwebapp/dev-f1[dev1@centos7 lab]$ ll webapp/dev-f1 -rw-rw-r--.1dev1 dev1072215:12 webapp/dev-f1# 属组为 dev1# 4. 添加 SGID 权限:用户 dev1 创建的文件,属组继承父目录的 devops[root@centos7 lab]# chmod g+s webapp[root@centos7 lab]# su dev1[dev1@centos7 lab]$touchwebapp/dev-f2[dev1@centos7 lab]$ ll webapp/dev-f2 -rw-rw-r--.1dev1 devops072215:13 webapp/dev-f2# 属组为 devops# 5. 验证组内共享:用户 dev2 可修改该文件[root@centos7 lab]# su dev2[dev2@centos7 lab]$echohello world>>webapp/dev-f2[dev2@centos7 lab]$catwebapp/dev-f2 hello world

3.Sticky:针对公共目录,防止文件被误删

核心作用:针对公共目录(如/tmp)设置 Sticky 权限后,目录内的文件仅能被其属主、目录属主或 root 用户删除,其他用户即使拥有目录写权限,也无法删除他人文件,避免公共目录文件被误删。

# 1. 查看 /tmp 目录权限(带有 Sticky 权限,权限位显示为 t,数字权限为 1777)[root@centos7 lab]# ls -ld /tmpdrwxrwxrwt.20root root409611816:50 /tmp[root@centos7 lab]# stat -c %a /tmp1777# 2. 验证:普通用户无法删除他人文件[csh@centos7 ~]$rm/tmp/other-user-file# 尝试删除他人文件rm: cannot remove'/tmp/other-user-file':Operation not permitted# 3. 验证:普通用户可删除自己创建的文件[csh@centos7 ~]$touch/tmp/csh-f1[csh@centos7 ~]$rm/tmp/csh-f1# 可正常删除

4.查找系统中的特殊权限文件

可通过find命令查找系统中带有特殊权限的文件,便于排查安全隐患:

# 查找系统中所有带有 SUID 权限的文件[root@centos7 ~]# find / -perm -4000 # 4000 对应 SUID 权限的数字标识[root@centos7 ~]# find / -perm -u+s # 符号法查找 SUID 文件# 查找系统中所有带有 SGID 权限的文件[root@centos7 ~]# find / -perm -2000[root@centos7 ~]# find / -perm -g+s# 查找系统中所有带有 Sticky 权限的目录[root@centos7 ~]# find / -perm -1000[root@centos7 ~]# find / -perm -o+t

五、总结

Linux 文件权限管理围绕“主体(u/g/o)”和“权限(r/w/x)”展开,核心要点可概括为:

  • 基础权限:rwx 权限在文件和目录上的含义截然不同,需重点区分。

  • 权限配置:chmod(修改权限)、chown(修改属主/属组)是核心命令,支持符号法和数字法。

  • 默认权限:由umask决定,核心规则是“最大权限 - umask 值”。

  • 特殊权限:SUID(临时获取属主权限)、SGID(目录文件属组继承)、Sticky(公共目录防误删),解决特殊场景权限问题。

通过本文的学习与实操,相信你已掌握 Linux 文件权限管理的核心逻辑与实操技巧。在实际运维中,需结合场景合理配置权限,兼顾安全性与便捷性,避免因权限配置不当引发安全风险。

http://www.jsqmd.com/news/1230353/

相关文章:

  • 常见问题解答:解决spotify-adblock-linux使用中的9个痛点
  • Linux操作系统RPM包结构化完整实操教程(安装/卸载/查询/升级/排错)
  • 小程序计算机毕设之智能自驾出行推荐服务系统的设计与实现 景区自驾导航与出行攻略小程序的设计与实现(完整前后端代码+说明文档+LW,调试定制等)
  • 绍兴亨得利维修点服务中心在哪里有承接手表售后保养服务权威公示(2026年7月最新) - 亨得利官方
  • Windows系统文件DolbyDecMFT.dll丢失找不到问题解决
  • 【系统架构设计师】预测试卷三:综合知识(75道选择题)
  • FunClip终极指南:3步搭建本地智能视频剪辑工作站
  • 2026 年当下,浙江专业的锯齿道路标线施工品牌哪家可靠,颠覆认知:这看似繁琐的标线,竟是交通安全的“隐形盔甲” - 行业推荐官【官方】
  • [具身智能-597]:RDK X5 4G/5G 模组对接云端完整方案 + 可运行代码示例
  • 上海物流数字化解决方案选哪家?2026年权威实力排行解析 - 互联网科技品牌测评
  • 金山办公获2026世界人工智能大会AI办公效率合作伙伴,将展示两款全新AI办公智能体
  • 劳力士长沙官方服务网点地址与售后客服热线2026年7月最新公告公示 - 劳力士服务中心
  • 2026新乡装修,新乡金螳螂全流程透明,让业主装修更放心 - 信息热点
  • 2026 年新消息:阿拉善左旗专业的扇形管供货厂家哪家权威,揭秘:这个小物件如何颠覆你的管道维修观 - 企业推荐官【认证官方】
  • 2026精选:西安雁塔区诚信可靠的智界V9改装本地门店深度推荐 - 互联网科技品牌测评
  • 鸿蒙 ArkTS 实战:Focus White Noise 从专注白噪音到个人成长工具完整解析
  • 3分钟掌握NVIDIA显卡色彩校准:硬件级色彩管理终极指南
  • 西安新能源汽车全维升级避坑指南:21年行业老兵拆解汽服门店选择逻辑 - 互联网科技品牌测评
  • 宝玑中国官方售后服务中心|全新维修地址和售后服务电话权威信息声明(2026年7月最新) - 亨得利官方服务中心
  • PDF版本转换与格式兼容性测试:各工具PDF/A及版本降级能力对比
  • 2026年7月最新劳力士温州万象城维修保养服务电话 - 劳力士官方服务中心
  • 佛山实体门店AI拓客首选考察:美诚AI私域运营自动化流程
  • GitHub Copilot SDK Rust系统级集成:安全高效的AI代理实现
  • 计算机毕业设计之基于springboot的校园失物招领系统的设计与实现
  • 全自动落地!Python定时任务实现办公流程无人值守
  • Underscore.js 终极指南:JavaScript 开发必备的实用工具库完整解析
  • 【202】仓库管理系统
  • 【系统架构设计师】预测试卷四:综合知识(75道选择题)
  • tprPix输入系统详解:同时支持键盘与手柄的跨平台控制方案
  • 破解3D打印钣金加工定制痛点:OSDC方法论如何缩短迭代周期? - 全域品牌推荐