1. 首页 > 技术教程 > 正文

权限分配实战:chmod 与 chown 如何保护你的网站目录

权限分配实战:chmod 与 chown 如何保护你的网站目录

网站被挂马、目录被删、文件被篡改——这些问题十有八九是权限没配好。别问为什么,照着做就行。今天直接上实战,教你用 `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