chmod 755是目录最常用权限,因其赋予所有者rwx、组和其他用户r-x,确保目录可进入(x)、可列出内容(r),但禁止非所有者修改(无w),兼顾可用性与安全性;误设644会因缺x导致“Permission denied”。

为什么 chmod 755 是目录最常用权限
因为对目录来说,x 不是“能运行”,而是“能进入”——没有它,cd 进不去,ls 也列不出内容。r 决定能否列出文件名,w 决定能否在目录里增删改文件。所以 755(rwxr-xr-x)意味着:所有者可读写执行(进、看、改),组和其他人可读可执行(进、看),但不能改——既满足可用性,又守住安全底线。
-
755适合绝大多数网站根目录、代码仓库、共享项目目录 -
750更严格:组内成员可进可看,其他人完全无权访问,适合内部协作环境 -
700仅所有者可用,常用于私有配置目录(如~/.ssh) - 千万别对目录设
644:缺x就等于锁死,ls: Permission denied
递归修改目录权限时,为什么不能直接用 chmod -R 755
因为 -R 不区分文件和目录,会把所有子文件(比如 .txt、.conf、.log)也设成 755,导致配置文件变成可执行——Nginx/Apache 可能直接拒载,或引发安全警告。
- 正确做法是分开处理:
find /path/to/dir -type d -exec chmod 755 {} \;(只改目录) - 再执行:
find /path/to/dir -type f -exec chmod 644 {} \;(只改普通文件) - 如果要给脚本加执行权,单独用:
find /path/to/dir -name "*.sh" -exec chmod +x {} \; - 想省事又安全?用
X(大写 X):它只给目录和已有x权限的文件加执行位,chmod -R a+X dir/
chmod u+x 和 chmod +x 有什么区别
表面一样,实际影响范围不同:chmod +x 等价于 chmod a+x,会给所有者、组、其他用户都加 x;而 chmod u+x 只动所有者一栏。多数情况下,脚本只需所有者可执行就够了,没必要开放给所有人。
- 部署私有工具时,优先用
chmod u+x deploy.sh - 团队共享脚本且明确需组内共用,才考虑
chmod ug+x script.sh -
chmod o+x要极度谨慎——相当于让任意用户都能运行该文件,极易被滥用 - 检查是否生效?别只信命令输出,用
ls -l script.sh看第三段是否出现x
chmod 数字模式里,第一位 4/2/1 是什么
那是特殊权限位,日常几乎不用,但一旦误设就出问题:4 是 SUID(让普通用户以所有者身份运行)、2 是 SGID(让新建文件继承目录组)、1 是 Sticky Bit(如 /tmp,限制用户只能删自己文件)。普通权限设置应始终用三位数(如 755),加第四位(如 4755)意味着你主动启用了高风险机制。
- 除非明确需要(如
/usr/bin/passwd必须 SUID),否则永远不要手动设四位数 - 看到
ls -l输出权限位开头是r以外的字符(如s或t),说明特殊位已启用,得查清楚是否必要 - 误加 SGID 到普通目录,会导致所有新创建文件自动归属错误组,排查起来非常隐蔽


















