吃透Linux文件权限!基础权限+UMASK+特殊权限+扩展属性 全网超全实战教程

发布时间:2026/7/22 6:17:49
吃透Linux文件权限!基础权限+UMASK+特殊权限+扩展属性 全网超全实战教程 吃透Linux文件权限基础权限UMASK特殊权限扩展属性 全网超全实战教程前言Linux权限是运维、开发、云计算面试必考核心知识点也是生产环境权限安全管控的基础。很多同学只会简单chmod 777却不懂rwx本质、umask原理、SUID/SGID/粘滞位、文件锁属性。本文从零拆解Linux普通权限、数字权限、属主属组、默认umask、特殊权限、扩展锁属性全程可复现实战命令零基础也能彻底吃透一、Linux权限核心架构三大权限主体Linux所有文件/目录权限只针对三类用户生效这是权限体系的基石u(user 属主)文件创建者、所有者权限优先级最高g(group 属组)文件所属用户组组内所有成员拥有对应权限o(other 其他用户)除属主、属组外的所有系统用户1.1 ls -l 权限字符串完整拆解执行查看文件详情命令# 查看文件[fangbingcentos7 ~17:06:56]$ls-l/etc/passwd -rw-r--r--.1root root27267月2016:04 /etc/passwd整行权限字符分为文件类型 三段权限 SELinux标记第1位文件类型-普通文件d目录l软链接文件2-4位(u权限)属主用户权限5-7位(g权限)属组用户权限8-10位(o权限)其他用户权限末尾.文件开启SELinux安全上下文CentOS7默认存在1.2 权限优先级高频易错如果一个用户既是文件属主又在文件属组内优先生效属主权限组权限不生效Linux权限匹配规则精准匹配优先属主权限优先级 属组权限 其他用户权限。二、rwx权限深度解析文件 vs 目录完全不同这是90%新手踩坑点文件和目录的rwx权限含义完全不一样2.1 普通文件 rwx 作用文件存储的是数据内容r(读)查看文件内容cat、less、vim查看w(写)修改、覆盖、追加文件内容x(执行)运行脚本/二进制程序无r权限无法执行2.2 目录 rwx 作用核心重点目录存储的是文件索引列表不存真实数据r(读)列出目录内文件名ls 目录无法进入目录、无法查看文件详情x(执行)进入目录cd、访问目录内文件内容必须权限w(写)新建、删除、重命名目录内文件/子目录必须搭配x权限生效终极结论删除文件的权限看文件所在目录的wx权限和文件本身的w权限无关三、chmod 权限修改命令两种用法chmod专门用于修改文件/目录的读写执行权限支持符号法和数字法。3.1 符号语法灵活精准语法chmod WhoHowWhat 文件/目录Who u(user) g(group) o(other) a(all)How (添加) -(减去) (精确设置)What r(read) w(write) x(excute) -(读、写、执行权限)实战示例针对文件# 创建环境新建/lab文件且复制文件到该目录下[rootcentos7 ~21:12:41]# mkdir /lab[rootcentos7 ~21:12:58]# cd /lab[rootcentos7 lab21:13:08]# cp /etc/passwd .[rootcentos7 lab21:13:43]# ls -l passwd-rw-r--r--.1root root27267月2021:13passwd# 给u增加x权限[rootcentos7 lab21:13:47]# chmod ux passwd[rootcentos7 lab21:15:05]# ls -l passwd-rwxr--r--.1root root27267月2021:13passwd#一次性修改多个权限[rootcentos7 lab21:15:08]# chmod u-wx,gw,o- passwd[rootcentos7 lab21:16:19]# ls -l passwd-r--rw----.1root root27267月2021:13passwd# 一次性设置全部对象[rootcentos7 lab21:16:34]# chmod arwx passwd[rootcentos7 lab21:17:50]# ls -l passwd-rwxrwxrwx.1root root27267月2021:13passwd针对目录# 准备目录和文件[rootcentos7 lab21:20:47]# ls -ld dir01 dir01/file01drwxr-xr-x.2root root207月2021:20 dir01 -rw-r--r--.1root root07月2021:20 dir01/file01[rootcentos7 lab21:20:54]## 递归清除所有对象权限[rootcentos7 lab21:20:54]# chmod -R a- dir01[rootcentos7 lab21:21:39]# ls -ld dir01 dir01/file01d---------.2root root207月2021:20 dir01 ----------.1root root07月2021:20 dir01/file01# 递归修改user的权限[rootcentos7 lab21:23:18]# ls -ld dir01 dir01/file01drwx------.2root root207月2021:20 dir01 -rwx------.1root root07月2021:20 dir01/file013.2 数字八进制语法工作最常用语法chmod ### 文件/目录通过二进制换算权限三位数字依次对应u g o。二进制八进制权限含义0000--- 无权限0011--x 执行0102-w- 写入1004r-- 读取1106rw- 读写1015r-x 读执行1117rwx 读写执行实战换算644-rw-r--r-- 文件默认权限755drwxr-xr-x 目录默认权限700drwx------ 私有目录# 文件权限为634对应的权限[rootcentos7 lab21:30:02]# chmod 634 passwd[rootcentos7 lab21:30:26]# ls -l passwd-rw--wxr--.1root root27267月2021:13passwd查看权限显示方式statLinux 文件元信息查看命令可读取权限、属主、时间、inode 等文件属性-cLinux 文件元信息查看命令可读取权限、属主、时间、inode 等文件属性% A以符号形式输出文件权限字符串rwxrwxrwx 格式直观可读% a以八进制数字形式输出文件权限数字权限chmod 用的 3 位数字# 示例[rootcentos7 lab21:30:29]# stat -c %A passwd-rw--wxr--[rootcentos7 lab21:34:20]# stat -c %a passwd634四、chown / chgrp 修改文件归属权限是规则归属是身份通过修改属主、属组可改变权限生效对象。# 仅修改属主[rootcentos7 lab21:34:31]# ls -l passwd-rw--wxr--.1root root27267月2021:13passwd[rootcentos7 lab21:38:28]# chown fangbing passwd[rootcentos7 lab21:38:51]# ls -l passwd-rw--wxr--.1fangbing root27267月2021:13passwd# 仅修改属组[rootcentos7 lab21:38:54]# chgrp wheel passwd[rootcentos7 lab21:40:31]# ls -l passwd-rw--wxr--.1fangbing wheel27267月2021:13passwd# 同时修改属主属组[rootcentos7 lab21:40:35]# chown root:root passwd[rootcentos7 lab21:41:04]# ls -l passwd-rw--wxr--.1root root27267月2021:13passwd# 递归修改目录及所有文件归属[rootcentos7 lab21:41:32]# ls -ld dir01/ dir01/file01drwx------.2root root207月2021:20 dir01/ -rwx------.1root root07月2021:20 dir01/file01[rootcentos7 lab21:41:45]# chown -R fangbing:wheel dir01/[rootcentos7 lab21:42:07]# ls -ld dir01/ dir01/file01drwx------.2fangbing wheel207月2021:20 dir01/ -rwx------.1fangbing wheel07月2021:20 dir01/file01权限补充说明对于文件来说赋予 w 权限的时候也会赋予 r 权限。赋予 x 权限的时候也会赋予 r 权限。对于目录来说赋予 r 权限的时候也会赋予 x 权限。赋予 w 权限的时候也会赋予 rx 权限常见命令所需权限五、umask 默认权限掩码新手最难懂5.1 核心原理umask新建文件/目录需要减掉的权限目录最大默认权限777文件最大默认权限666默认无执行权限计算公式新建目录权限 777 - umask新建文件权限 666 - umask5.2 四位umask详解0027输出0027四位结构特殊位 属主 属组 其他第一位0不屏蔽SUID/SGID/粘滞位特殊权限日常均为0后三位控制普通读写执行权限设置创建新文件时要取消的权限。示例# 设置umask值为0创建目录和文件表示目录和文件均不剔除目录是777文件是666权限[rootcentos7 lab21:49:21]# umask 0[rootcentos7 lab21:49:33]# umask0000[rootcentos7 lab21:49:38]# touch f1;mkdir d1[rootcentos7 lab21:50:23]# ls -ld d1 f1drwxrwxrwx.2root root67月2021:50 d1 -rw-rw-rw-.1root root07月2021:50 f1# 设置umask值为0027表示目录u不剔除权限设置为rwxg剔除w权限只有rx权限0权限全剔除文件u只保留rwg保留r0无权限[rootcentos7 lab21:50:33]# umask 027[rootcentos7 lab21:53:07]# umask0027[rootcentos7 lab21:53:10]# touch f2;mkdir d2[rootcentos7 lab21:53:28]# ls -ld f2 d2drwxr-x---.2root root67月2021:53 d2 -rw-r-----.1root root07月2021:53 f2# 当前用户永久生效[rootcentos7 lab21:53:35]# echo umask 077 ~/.bashrc# 全局所有用户生效root[rootcentos7 lab21:53:35]# echo umask 077 /etc/bashrc六、Linux三大特殊权限面试高频6.1 SUID 特殊权限4000作用对象可执行文件核心功能普通用户执行该命令时临时拥有文件属主的身份经典案例passwd命令普通用户可修改自己密码本质是临时获得root权限修改/etc/shadow。# -rwsr-xr-x 带s标记SUID生效[fangbingcentos7 ~21:08:58]$ls-l/bin/passwd -rwsr-xr-x.1root root278564月12020/bin/passwd6.2 SGID 特殊权限2000作用对象目录多用于团队共享核心功能目录开启SGID后内部新建文件自动继承目录的属组实现团队文件共享编辑。实战案例# 创建用户组和用户rootcentos7 lab22:05:47]# groupadd devops[rootcentos7 lab22:05:55]# useradd -G devops dev1正在创建信箱文件: 文件已存在[rootcentos7 lab22:06:07]# useradd -G devops dev2# 准备目录[rootcentos7 lab22:06:13]# mkdir webapp[rootcentos7 lab22:07:15]# chgrp devops webapp[rootcentos7 lab22:07:27]# chmod grwx webapp# 准备默认权限[rootcentos7 lab22:07:39]# umask 002# 实验一普通用户创建文件只有自己可以编辑[rootcentos7 lab22:07:53]# su dev1[dev1centos7 lab22:08:35]$touchwebapp/dev-f1[dev1centos7 lab22:08:48]$ ll webapp/dev-f1 -rw-rw-r--.1dev1 dev107月2022:08 webapp/dev-f1# 实验二普通用户创建文件组中成员也可以编辑[rootcentos7 lab22:12:00]# chmod gs webapp/[rootcentos7 lab22:12:27]# ll -d webapp/drwxrws---.2root devops207月2022:08 webapp/[rootcentos7 lab22:12:33]# su dev1[dev1centos7 lab22:13:34]$touchwebapp/dev-f2[dev1centos7 lab22:13:48]$ ll webapp/ 总用量0-rw-rw-r--.1dev1 dev107月2022:08 dev-f1 -rw-rw-r--.1dev1 devops07月2022:13 dev-f2[rootcentos7 lab22:14:32]# su dev2[dev2centos7 lab22:15:02]$echohello worldwebapp/dev-f2[dev2centos7 lab22:15:23]$catwebapp/dev-f2 hello world6.3 Sticky 粘滞位1000作用对象公共目录典型目录/tmp权限1777核心功能公共目录所有人都能读写但只能删除自己创建的文件无法删除他人文件。实战案例# 示例文件[rootcentos7 lab22:20:25]# ls -ld /tmp /tmp/VMwareDnD/drwxrwxrwt.95root root81927月2022:20 /tmp drwxrwxrwt.2fangbing fangbing347月1415:15 /tmp/VMwareDnD/# 普通用户在/tmp目录中创建1个文件且把o权限设置为7[fangbingcentos7 ~22:22:24]$touch/tmp/test01[fangbingcentos7 ~22:23:41]$ls-ld/tmp/test01 -rw-rw-r--.1fangbing fangbing07月2022:23 /tmp/test01[fangbingcentos7 ~22:24:12]$chmodorwx /tmp/test01[fangbingcentos7 ~22:24:16]$ls-ld/tmp/test01 -rw-rw-rwx.1fangbing fangbing07月2022:23 /tmp/test01# 非文件创建者无法删除[rootcentos7 lab22:20:42]# su -l dev1上一次登录一7月2022:13:34 CST 2026pts/0 上[dev1centos7 ~22:24:35]$rm-rf/tmp/test01 rm: 无法删除/tmp/test01:不允许的操作# 用户只能删除自己创建的文件[fangbingcentos7 ~22:24:23]$rm-f/tmp/test01[fangbingcentos7 ~22:27:17]$ls-ld/tmp/test01 ls: 无法访问/tmp/test01: 没有那个文件或目录七、文件扩展属性chattr 锁文件普通权限root可以强制突破而chattr扩展属性可以锁住文件root也无法修改删除[rootcentos7 lab22:29:06]# chattr --helpUsage: chattr[-RVf][-aAcCdDeijsStTu][-v version]files...两个常用属性append only (a)只能追加文件内容。immutable (i)不可变更属性。7.1 a 属性仅追加模式只能追加内容不能覆盖、不能删除文件适合日志文件。[rootcentos7 ~22:31:10]# touch operator.log[rootcentos7 ~22:31:50]# chattr a operator.log# 不可覆盖。不可删除可追加[rootcentos7 ~22:32:00]# echo hell world operator.log-bash: operator.log: 不允许的操作[rootcentos7 ~22:32:19]# echo hell world operator.log[rootcentos7 ~22:32:29]# cat operator.loghell world[rootcentos7 ~22:33:01]# rm -f operator.logrm: 无法删除operator.log:不允许的操作7.2 i 属性不可变更模式最强锁锁定文件无法修改、无法追加、无法删除、无法改名root也无效# 加锁[rootcentos7 ~22:33:08]# cp /etc/passwd .[rootcentos7 ~22:34:57]# chattr i passwd[rootcentos7 ~22:35:13]# echo hello world passwd-bash: passwd: 权限不够[rootcentos7 ~22:35:43]# echo hello world passwd-bash: passwd: 权限不够[rootcentos7 ~22:36:03]# echo lw:x:1000:1000:lw:/home/lw:/bin/bash passwd-bash: passwd: 权限不够[rootcentos7 ~22:36:16]# ls -l passwd-rw-r--r--.1root root27267月2022:34passwd[rootcentos7 ~22:36:30]# rm -f passwdrm: 无法删除passwd:不允许的操作[rootcentos7 ~22:38:20]# mv passwd passwd01mv是否覆盖passwd01yesmv: 无法将passwd移动至passwd01:不允许的操作# 解锁之后可以正常删除[rootcentos7 ~22:38:50]# chattr -i passwd[rootcentos7 ~22:39:03]# rm -f passwd八、全文总结面试/工作速记权限三段式属主(u) 属组(g) 其他(o)属主权限优先级最高文件rwx读写执行目录rwx列目录、进入、增删文件删除文件看目录wx权限不看文件本身权限umask是减法掩码控制新建文件目录默认权限SUID临时继承文件属主身份SGID继承目录属组Sticky保护公共目录chattri 终极锁文件防止误删误改核心配置 码字不易如果对你有帮助欢迎点赞收藏关注后续持续更新Linux运维实战干货