在终端敲 chmod -r 755 folder 想批量改权限,结果直接被弹回来。这不是权限不够,是参数写错了:递归开关是大写 R,小写 r 在多数 Linux 发行版里不是有效选项。
chmod -r 和 chmod -R 只差一个大小写
chmod 的选项区分大小写,大写 R 才是递归处理目录下所有子目录和文件;小写 r 不是开关,GNU 版本会直接报 invalid option,有的实现还会把它当成去掉读权限的模式去解析,结果更混乱。真想给文件去掉读权限,正确写法是 chmod a-r file 这种带主体的形式。拿不准的时候加个 -v 参数,每改一个文件都会打印出来,出问题好对照。
递归调整的常用写法
chmod -R 755 /var/www/site
find /var/www/site -type d -exec chmod 755 {} +find /var/www/site -type f -exec chmod 644 {} +目录和文件分开处理是正经做法:目录必须有 x 权限才能进入,一股脑刷成 644 会让网站和脚本走不进目录,这是递归改权限最常见的翻车现场,比重写错大小写还常见。
数字和符号两种写法
数字写法里 4 是读,2 是写,1 是执行,三位数字分别对应属主、属组和其他人。755 即属主可读写执行、其他人可读可执行;Web 目录常用 755 配 644,带密码的配置文件收紧到 600。符号写法用 u、g、o 代表属主、属组、其他人,a 代表全部,比如 chmod u+x script.sh 给脚本加执行权限,chmod go-w file 收走属组和其他人的写权限。chmod +x 和 755 的区别在于:+x 是在现有权限上叠加,755 是直接重设。
最后一句提醒:chmod -R 777 是典型的错误操作,全开放等于把门拆了,线上机器别这么干;系统目录里偶尔见到的 s、t 特殊权限位更别乱动。递归调整前先用 find 把目标文件列出来确认范围,小范围试过再放量,出了问题也好回滚。