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

读懂数字权限:777/755/644/400 代表的服务器安全等级

读懂数字权限:777/755/644/400 代表的服务器安全等级

服务器被入侵,十次有八次是文件权限设错了。主机选在多年的 Linux 教程和服务器运维实战中发现,很多新手甚至老手都搞不清 777、755、644、400 这几个数字到底代表什么安全等级。今天直接拆解权限数字的二进制逻辑,看完你就能自己判断一个文件该给什么权限。

读懂数字权限:777/755/644/400 代表的服务器安全等级的图片

权限数字是怎么算出来的?Linux 权限二进制拆解

Linux 文件权限针对三类对象:文件所有者、所属组、其他人。每个对象有三种操作:读(r=4)、写(w=2)、执行(x=1)。权限数字就是这三个值的和,比如 7=4+2+1(全开),5=4+1(读+执行),4=4(只读)。

777 权限:全开大门,危险等级最高

777 意味着所有用户都能读、写、执行。在 VPS 运维中,常见于某些一键安装脚本偷懒把网站目录设成 777。后果就是:任何能登录服务器的用户,或者通过 Web 漏洞执行的恶意脚本,都能直接修改你的文件。

查看文件权限的典型输出

ls -l /var/www/html/index.php

输出: -rwxrwxrwx 1 root root 1234 Jan 1 12:00 index.php

注意:rwx 重复三组,说明是 777

用数字修改为安全权限

chmod 755 /var/www/html/index.php

755:所有者可读写执行,组和其他人只能读和执行

755 权限:生产环境最常用

755 是绝大多数 VPS 上网站目录的标准配置。所有者可以修改文件,其他人只能读取和执行,无法写入。这能有效阻止通过 Web 上传漏洞写入恶意文件。

设置目录为 755

chmod 755 /var/www/html

目录必须有执行权限,否则无法进入

设置普通文件为 644(更严格)

chmod 644 /var/www/html/index.html

644:所有者可读写,其他人只读

644 权限:普通文件的标准

对于不需要执行的静态文件(HTML、CSS、JS、图片),644 是最安全的。所有者可以修改,其他人只能看。万一有人上传了 PHP shell,因为 644 没有执行权限,很多 Web 环境会拒绝执行。

批量设置静态文件为 644

find /var/www/html -type f -name “*.php” -exec chmod 644 {} \;

只改 PHP 文件,不改目录

400 权限:密钥和敏感配置文件专属

SSH 私钥、数据库密码配置、.env 文件,必须设为 400 或 600。400 表示所有者只读,连所有者自己都不能写,防止误修改。

SSH 私钥标准权限

chmod 400 ~/.ssh/id_rsa

如果你设成 600(所有者读写),SSH 连接也会报错

查看效果

ls -l ~/.ssh/id_rsa

输出: -r——– 1 root root 1679 Jan 1 12:00 id_rsa

只有第一个 r 有值,其他全是 –

权限设错了会出哪些幺蛾子?常见报错排查

WordPress 后台要求输入 FTP 信息

这是 777 权限设得太松的典型表现。WordPress 检测到目录可写,就会尝试直接写入文件,但因为没有配置 FTP,就会弹出提示。

正确做法:只给 wp-content 目录写权限

chmod 755 /var/www/html
chmod 755 /var/www/html/wp-content
chmod 644 /var/www/html/wp-config.php

wp-config.php 必须严格 644,否则有泄露数据库密码的风险

SSH 连接提示“Permissions 0777 for ‘id_rsa’ are too open”

SSH 客户端非常敏感,私钥权限不能大于 600。如果你不小心设成了 777,连接会直接拒绝。

修复命令

chmod 400 ~/.ssh/id_rsa

重新连接即可

网站返回 403 Forbidden

这通常是目录缺少执行权限(x)。比如目录是 644,没有 x 权限,Web 服务器无法进入目录读取文件。

给目录加上执行权限

chmod 755 /var/www/html

或者用 +X 只给目录加执行权限

chmod -R +X /var/www/html

注意:+X 不会给文件加执行权限,只会给目录加

老鸟叮嘱:千万别在生产环境无脑 chmod -R 777

很多人遇到权限报错,第一反应是 `chmod -R 777 /`。这是自杀式操作。一旦把整个系统设成 777,任何用户都能修改系统文件,比如替换 `/bin/ls` 为恶意程序。正确的做法是:只改出问题的目录或文件,并且用最严格的权限。

FAQ:权限相关高频问题

Linux 文件权限 777 和 755 有什么区别?

777 是所有用户可读写执行,755 是所有者可读写执行,其他人只能读和执行。777 极不安全,只建议在本地测试环境临时使用。

为什么我的 WordPress 目录设成 755 还是无法上传文件?

755 对目录来说,所有者可以写,其他人不能写。如果你用 www-data 用户运行 PHP,而目录所有者是 root,那 PHP 就无法写入。正确做法是:把目录所有者改为 www-data,权限设为 755。

chown -R www-data:www-data /var/www/html/wp-content
chmod 755 /var/www/html/wp-content

不小心把 /etc 目录设成了 777,怎么恢复?

如果系统还没崩,用包管理器重新安装所有软件包来恢复权限:

Debian/Ubuntu

apt-get –reinstall install $(dpkg -l | grep ‘^ii’ | awk ‘{print $2}’)

或者用 dpkg-statoverride 手动恢复

如果系统已经崩溃,只能从备份恢复或重装系统。

BBR 开启后为什么速度没有明显提升?

这和权限无关,但常见误区是:BBR 只对长连接有效,且需要服务端和客户端都支持。另外,如果服务器带宽本身就小(比如 1Mbps),BBR 也救不了。

Linux 小白可以直接用 root 账号操作吗?

可以,但风险极高。root 误操作 `chmod -R 777 /` 或 `rm -rf /` 是毁灭性的。建议用普通用户加 sudo,至少有个确认步骤。

VPS 防火墙端口放行后还是访问不了是什么原因?

先检查端口是否被进程监听:

ss -tlnp | grep 80

如果没输出,说明服务没启动

再检查防火墙规则:

iptables -L -n | grep 80

如果没规则,可能是云平台安全组没放行

最后检查 SELinux 或 AppArmor,它们可能会拦截端口。

转载请注明出处:https://www.zhujixuan.com/jishujiaocheng/9392.html 商家投稿邮箱:zhujixuanblog@qq.com