做运维和独立开发这些年,最常碰到的一类「小坑」不是代码写错,而是目录权限被弄乱:有人从 Windows 拷了一堆文件上来,有人用 root 解压了 zip,结果 Web 目录里文件变成 777、目录变成 600,Nginx/Apache 读不了、PHP 写不了、SSH 同事也进不去。
我一般会定一个简单规矩:目录 755、文件 644。目录需要可执行位,才能 cd 进去并遍历;普通文件不需要执行权限,644 对所有人可读、所有者可写,够用也相对安全。
怎么改
把 /path 换成你的实际路径(例如站点根目录),分别处理文件和目录:
find /path -type f -exec chmod 644 {} \; # 设置文件权限为644
find /path -type d -exec chmod 755 {} \; # 设置目录权限为755-type f 只匹配普通文件,-type d 只匹配目录,这样不会把目录和文件混着改。\; 是 find -exec 的结束符,别漏掉。
如果目录特别大,也可以用:
find /path -type f -print0 | xargs -0 chmod 644
find /path -type d -print0 | xargs -0 chmod 755批量时少起几次进程,会快一点。
注意几点
- 先确认路径再执行。 对
/或系统目录乱chmod,服务可能立刻起不来。 - 脚本、可执行文件别一律 644。 若目录里有 shell 脚本、二进制,改完后再单独
chmod +x。 - Web 可写目录要单独留口。 例如上传目录、缓存目录,可能需要属主是
www/nginx,或额外放宽写权限;不要整站 777。 - 权限只是一层。 还要看属主属组(
chown)和 SELinux/AppArmor;权限对了但属主不对,同样读不了。
为何记下
一人公司没有专职运维,站点、网盘、客户机经常自己搭。权限一乱,排查成本往往高于写代码。把「目录 755、文件 644」当成默认基线,出问题先统一权限再查业务,能少走很多弯路。这条命令本身很短,但用对场景,能省掉半下午。



No comments yet