Linux权限是访问时的动态匹配规则:先判所有者,再判所属组,最后归other,匹配即止;目录rwx与文件含义不同,删除取决于父目录w+x;数字权限是r=4、w=2、x=1的二进制和;chown改身份、chmod改权限位,须配合使用。

权限不是“文件自带的属性”,而是“访问时的动态匹配规则”
Linux 权限模型的真实含义,不是文件“拥有”某种固定能力,而是当某个用户尝试访问它时,系统按固定顺序查三件事:这个用户是不是所有者?→ 不是,那他在所属组里吗?→ 也不是,那就归为 other。一旦匹配上某类角色,就**立刻停止检查**,用该类的权限位决定能否执行操作——不会叠加、不允许多重匹配。
这意味着:
• chmod o+r 开放其他用户读取权限,对属于该组但非所有者的用户完全无效(因为优先走 group 分支);
• 把一个用户加进文件所属组,比改 other 权限更精准、更安全;
• root 用户不受此规则约束——它绕过整个 UGO 匹配,直接放行(除非启用了 SELinux 等强制策略)。
目录的 r、w、x 和文件完全不同,搞错就进不去也删不掉
新手最常栽在这里:以为 r 对目录就是“能看内容”,其实 r 只允许 ls 列出名字;没有 x,连 cd 都被拒绝;没有 w + x,就无法在目录里 touch 或 rm 文件——哪怕文件本身权限是 777。
典型误操作:
• chmod 644 logs/ → 目录变“只读不可进”,cd logs 直接报 Permission denied;
• chmod 755 logs/ 是安全起点,既可进入、可列内容,又防其他用户写入;
• 删除文件实际检测的是**父目录的 w+x 权限**,不是文件自身的权限——所以你删不掉别人的文件,往往是因为你没权限改他家目录,而不是文件锁住了你。
数字权限不是“魔法口诀”,而是三位二进制的直译
755 不是经验公式,它是 rwx r-x r-x 的算术展开:r=4, w=2, x=1,每位相加得数。理解这点,才能灵活应对非常规组合。
比如:
• 要让组内成员可写但不可执行目录?用 775(rwxrwxr-x),不是 770(会砍掉 other 的 x,导致别人进不了);
• 想让脚本仅自己可运行、组和他人完全不可访问?700(rwx------),而非 755;
• 644 中的中间 4 表示组只有 r(4+0+0),不是“默认值”——如果你漏掉 w 却又希望组能修改配置,就得显式改成 664。
chown 和 chmod 解决的是两类问题,混用等于白干
chmod 改的是“权限位”,chown 改的是“归属身份”。两者配合才完整:
• 先 chown alice:devs project/,再 chmod 770 project/,才能让 alice 和 devs 组全员协作;
• 只改 chmod 770 却不把用户加进 devs 组,或不改属组,那 770 的中间 7 就形同虚设;
• chown -R alice:devs project/ 后,别忘了递归补权限:chmod -R u=rwX,g=rwX,o= project/(注意大写 X:只给目录和已有 x 的文件加执行权,避免给普通文本误加执行位)。
真正卡住人的,往往不是记不住 755 或 rwx,而是忘了权限生效依赖两个条件同时满足:用户身份归属正确 且 对应权限位打开——少一个,Permission denied 就照常报。










