权限分配实战:chmod 与 chown 如何保护你的网站目录
网站被挂马、目录被删、文件被篡改——这些问题十有八九是权限没配好。别问为什么,照着做就行。今天直接上实战,教你用 `chmod` 和 `chown` 把网站目录锁死。

为什么权限分配是 Linux 服务器运维的第一道防线
在主机选的 Linux 教程里,权限问题一直是老手翻车重灾区。很多运维兄弟以为装好 LNMP 就完事了,结果一个不小心,`www` 用户对网站根目录有写权限,黑客上传个一句话木马,直接拿下整个站点。
权限分配的核心就两件事:
• **chmod**:控制谁可以读、写、执行。
• **chown**:控制文件或目录属于哪个用户和组。
这两条命令用好了,你的网站目录就算暴露在公网,也能挡住 90% 的脚本小子。
chmod 实战:给目录和文件上锁
目录权限:别给 777,用 755 或 750
大多数网站程序(如 WordPress)要求 `wp-content/uploads` 目录可写,但你不能图省事直接 `chmod 777`。777 意味着任何人(包括黑客)都能往里面塞文件。
正确做法:
设置网站根目录为 755,所有者可读写执行,组和其他用户只读执行
chmod 755 /var/www/html
设置上传目录为 755,如果程序需要写,再单独给上传目录加写权限
chmod 755 /var/www/html/wp-content/uploads
如果程序报错说无法写入,再改成 775:
给组加写权限,前提是组里只有信任的用户
chmod 775 /var/www/html/wp-content/uploads
文件权限:配置文件必须锁死
像 `wp-config.php` 这种配置文件,一旦泄露等于把数据库密码送给黑客。权限必须设为 600 或 640:
只有所有者能读写,其他人无权访问
chmod 600 /var/www/html/wp-config.php
如果组内用户需要读,用 640
chmod 640 /var/www/html/wp-config.php
批量设置:用 find 配合 chmod
一个常见场景:目录用 755,文件用 644。手动一个一个改太慢了,用 find 一步到位:
所有目录设为 755
find /var/www/html -type d -exec chmod 755 {} \;
所有文件设为 644
find /var/www/html -type f -exec chmod 644 {} \;
chown 实战:把所有权交给正确的人
网站运行用户与文件所有者必须一致
大多数 PHP 环境以 `www-data` 或 `nginx` 用户运行。如果文件所有者是 `root`,而程序以 `www-data` 运行,写入就会失败。反过来,如果所有文件都归 `www-data`,黑客一旦入侵就能改所有文件。
推荐做法:文件所有者为 `root`,运行用户只对特定目录有写权限。
网站根目录归 root:root
chown -R root:root /var/www/html
上传目录归 www-data:www-data,允许程序写入
chown -R www-data:www-data /var/www/html/wp-content/uploads
常见报错:Permission denied 怎么办
如果出现 `Permission denied`,先检查两点:
1. 文件所有者是谁?用 `ls -l` 看。
2. 运行 PHP 的用户是谁?用 `ps aux | grep nginx` 或 `ps aux | grep php` 确认。
然后执行:
假设运行用户是 www-data,把目录所有权给它
chown -R www-data:www-data /var/www/html
老鸟叮嘱:别让 root 跑 Web 服务
**千万不要** 让 Nginx 或 PHP-FPM 以 root 用户运行。一旦被提权,整个服务器就是别人的了。检查一下你的 PHP-FPM 配置文件(通常在 `/etc/php/` 下),确保 `user` 和 `group` 是 `www-data` 或 `nginx`。
排障区:权限配置后网站打不开
改了权限后网站报 403 或 500,通常是因为:
• 目录权限少了执行位(`x`),Web 服务器无法进入目录。
• 文件权限少了读位(`r`),Nginx 无法读取静态文件。
修复命令:
给目录加执行权限
chmod +x /var/www/html
给文件加读权限
chmod +r /var/www/html/index.php
FAQ
Q:Linux SSH 连不上怎么办?
先检查 SSH 服务是否运行:`systemctl status sshd`。再检查防火墙是否放行了 22 端口:`ufw status` 或 `iptables -L`。如果还是连不上,去 VPS 控制台用 VNC 或救援模式修复。
Q:VPS 防火墙端口放行后还是访问不了是什么原因?
大概率是云服务商的安全组没放行。去控制台检查入站规则,确保 80/443 等端口已添加。另外,检查本地防火墙:`ufw allow 80/tcp`。
Q:Linux 小白可以直接用 root 账号操作吗?
不推荐。日常操作建议用普通用户加 sudo,减少误操作风险。非要切 root,用 `su -` 或 `sudo -i`,但记得用完退出。
Q:BBR 开启后为什么速度没有明显提升?
BBR 只对长距离、高延迟的网络有效。如果是同城或同机房访问,效果不明显。另外,检查是否真的启用了:`sysctl net.ipv4.tcp_congestion_control`,输出应为 `bbr`。
Q:chmod 777 有什么风险?
777 意味着任何人都能读写执行。如果网站目录有 777,黑客上传的恶意脚本可以直接执行,导致网站被挂马、被篡改。用 755 或 750 代替。
Q:如何快速查看目录权限?
用 `ls -ld <目录名>` 查看目录权限,用 `ls -l <文件名>` 查看文件权限。重点关注第一个字段(如 `drwxr-xr-x`),前三位是所有者权限,中间三位是组权限,后三位是其他人权限。
转载请注明出处:https://www.zhujixuan.com/jishujiaocheng/9390.html 商家投稿邮箱:zhujixuanblog@qq.com
