Linux chmod与chown
网站目录权限配置不当,轻则导致网站无法访问,重则引发数据泄露。
本文针对零基础用户,从实际场景出发,讲清 chmod 和 chown 的区别、用法,以及如何为网站目录设置安全合理的权限。
理解权限与归属:chmod 和 chown 到底改什么
chmod 修改文件或目录的读写执行权限,决定谁可以读、写、执行。chown 修改文件或目录的所有者和所属组,决定文件归谁所有。
两者配合,才能让网站程序在安全的前提下正常运行。
例如,Web 服务器进程(如 Nginx 的 www-data 用户)需要对上传目录有写权限,但不应有执行权限;
而网站根目录通常只允许读取和执行,禁止写入。
关键结论:权限数字表示法中,755 表示所有者可读写执行,组和其他人可读可执行;644 表示所有者可读写,组和其他人只读。
操作前的准备工作
开始前,请确认:
- 你已通过 SSH 登录服务器,并拥有
sudo权限。 - 知道网站根目录的绝对路径,例如
/www/wwwroot/yourdomain.com。 - 了解 Web 服务器运行用户,常见的有
www、www-data、nginx。可通过ps aux | grep nginx或ps aux | grep apache查看。
如果使用宝塔面板,可在“网站”设置中查看“网站目录”和“运行用户”。
分步设置网站目录权限
以下命令请将 /www/wwwroot/yourdomain.com 替换为你的实际路径。
1. 修改所有者与所属组
假设 Web 服务器运行用户为 www,执行:
sudo chown -R www:www /www/wwwroot/yourdomain.com
-R 表示递归处理所有子目录和文件。
2. 设置目录权限为 755
目录需要执行权限才能进入,因此通常设为 755:
sudo find /www/wwwroot/yourdomain.com -type d -exec chmod 755 {} \;
3. 设置文件权限为 644
普通文件不需要执行权限,设为 644 更安全:
sudo find /www/wwwroot/yourdomain.com -type f -exec chmod 644 {} \;
4. 单独处理上传目录
如果网站有上传功能,上传目录需要写权限,可设为 775 或 777(不推荐 777)。
更安全的做法是将上传目录所有者设为 Web 用户,并设置 755,但确保 Web 用户有写权限。
例如:
sudo chown -R www:www /www/wwwroot/yourdomain.com/uploads
sudo chmod -R 755 /www/wwwroot/yourdomain.com/uploads
5. 宝塔面板操作路径
若使用宝塔面板,可进入“文件”管理,右键网站目录 -> “权限”,设置所有者为 www,权限为 755,并勾选“应用到子目录”。
对于上传目录,可单独设置权限为 775。
避坑指南:常见错误与安全建议
- 不要随意使用
chmod -R 777:这会让所有用户都可写,极易被植入恶意脚本。 - 避免所有者混乱:如果部分文件属于
root,Web 进程可能无法读取或写入。统一用chown修正。 - 谨慎递归修改:
chmod -R和chown -R会作用于所有子文件,操作前最好备份或确认路径。 - 注意 umask 影响:新创建的文件权限受 umask 控制,必要时调整 umask 值。
验证权限是否生效
执行 ls -l 查看目录和文件权限:
ls -l /www/wwwroot/yourdomain.com
输出中应显示类似 drwxr-xr-x(目录)和 -rw-r--r--(文件),所有者和组为 www。
然后访问网站,测试页面打开、文件上传、后台更新等功能是否正常。
如果出现“403 Forbidden”或“无法写入”错误,检查对应目录的权限和所有者。
可独立摘录的结论:
- 网站目录权限推荐设置为目录
755、文件644,所有者与 Web 服务器运行用户一致。 - 上传目录需确保 Web 用户有写权限,但不应赋予执行权限。
- 修改权限后,务必用
ls -l验证,并实际测试网站功能。
常见疑问
问:chmod 和 chown 可以只用一个吗?
通常需要配合使用。
只改权限不改所有者,可能导致 Web 进程无权访问;
只改所有者不改权限,可能权限过宽或过窄。
问:为什么设置了 755 还是无法上传?
检查上传目录的所有者是否为 Web 用户,以及 PHP 等运行方式是否限制了写入。
有时需要临时开启 SELinux 或 AppArmor 的相应规则。
问:如何恢复默认权限?
如果没有备份,可重新安装或从版本控制中恢复。
建议操作前用 tar 备份目录。
如果你正在处理 Linux chmod 与 chown 的网站目录权限问题,建议先按本文步骤完整执行,再根据自己的环境微调;
遇到异常时优先回看避坑和高频问题部分。