数字权限(如755)与符号权限(如u+rwx,g+rx,o+rx)本质是同一规则的两种表达:数字为八进制精确赋值,符号支持增量修改;需微调时必须用符号,因数字会覆盖全部九位。
chmod 数字权限和符号权限到底怎么对应
数字权限(如
)和符号权限(如
)本质是同一套规则的两种写法,不是两种权限系统。数字是八进制速记,符号是可读性操作——改权限时选哪个,取决于你是在初始化设值,还是在已有基础上增删某类权限。
为什么
不等于
它们完全等价,但容易出错的地方在于「等号」和「加减号」的行为差异:
表示**精确赋值**:写
就会清掉所有其他位(比如 group 的
、other 的
),哪怕原来有也会被抹掉
/
表示**增量修改**:写
只加执行权,不碰读写;
只去掉写,不影响读和执行
数字权限全是「=」语义:
直接覆盖全部九位,不管之前是什么
什么时候必须用符号权限,不能用数字
当你需要保留原有权限结构、只微调某一部分时,数字权限无能为力:
给某个用户组追加执行权限:
(不用先
查当前值再算新数字)
移除其他人的写权限但不动读和执行:
递归设置目录可执行但文件不可执行:
(
只对目录或已有
的文件生效)
这类操作若硬套数字权限,要么得写 shell 循环判断类型,要么误伤文件执行位。
PHP 8.5.5
PHP 8.5.5 是 PHP 8.5 分支的维护更新版本。该版本延续了“小步快跑”的迭代逻辑,通过深度错误修复、底层性能微调以及安全加固,旨在为开发者提供一个更健壮、更高效的运行环境。该版本严格遵守语义化版本规范,不包含破坏性变更。
下载
立即学习
“
PHP免费学习笔记(深入)
”;
常见误用:
和
真的一样吗
效果相同,但含义和风险点不同:
是硬
编码
,隐含「所有位全开」,一旦目录下混入敏感文件(如
),就直接暴露
是动作指令,如果目标是符号链接,
默认操作的是链接本身(而非指向的目标),而数字权限在某些老系统上可能行为不一致
更隐蔽的问题:
会清除 setuid/setgid 位(
),而
不影响这些特殊位——除非显式加上
或
实际部署中,
几乎总该被拒绝;符号写法虽安全些,但
同样危险——真正该做的是按最小权限原则,明确指定谁需要什么。
755u+rwx,g+rx,o+rxchmod 644chmod u=rw,g=r,o=r=u=rw,g=r,o=rxw+-g+xo-w644chmod g+x script.shstatchmod o-w config.inichmod -R a-x,a+X /pathXxchmod 777chmod a+rwx777.enva+rwxchmod7774000/2000a+rwxu+sg+s777a+rwx