登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
签到
每天签到奖励2-10圆
导读
排行榜
TG频道
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
写记录
VIP申请
VIP网盘
网盘
联系我们
发帖说明
每日签到
道具
勋章
任务
淘帖
动态
分享
留言板
导读
设置
我的收藏
退出
腾讯QQ
微信登录
返回列表
首页
›
业界区
›
业界
›
PHP 开发者应该理解的 Linux 入门权限指南 ...
PHP 开发者应该理解的 Linux 入门权限指南
[ 复制链接 ]
布相
3 小时前
PHP 开发者应该理解的 Linux 入门权限指南
如果你曾经将 PHP 应用部署到 Linux 服务器并遇到 Permission denied 错误(通常出现在最糟糕的时候),你并不孤单。在理解 Linux 权限之前,它们确实会让人感到困惑。本文将帮助你理解 PHP 代码实际运行时涉及的用户、文件组以及那些 rwx 字母的真正含义。
原文链接-PHP 开发者应该理解的 Linux 入门权限指南
10秒速览
Linux 中的每个文件或目录都有:
一个所有者(用户)
一个所属组
三组权限:所有者权限、组权限和其他用户权限
权限分为三种:
r = 读取
w = 写入
x = 执行(对文件)或"可进入"(对目录)
当 PHP 在服务器上运行时,你的代码通常以 web 服务器用户的身份执行(例如 Debian/Ubuntu 上的 www-data,CentOS/Red Hat 上的 apache,或者某些设置中的 nginx)——或者作为你配置的 PHP-FPM 池用户运行。大多数"在本地可以但在生产环境不行"的权限问题都可以归结为"到底是哪个用户在运行这段代码?"
专业解读权限
运行 ls -l 查看详情:
$ ls -l
-rw-r--r-- 1 deploy www-data 4238 Sep 17 10:12 index.php
drwxr-xr-x 2 deploy www-data 4096 Sep 17 10:12 public
drwxrwxr-x 4 deploy www-data 4096 Sep 17 10:12 storage
复制代码
-rw-r--r-- 的解析:
第一个字符:文件类型(- 表示普通文件,d 表示目录)
接下来 3 个:所有者权限(rw-)
再 3 个:组权限(r--)
最后 3 个:其他用户权限(r--)
所以 index.php 对所有人可读,但只有所有者可写。
你还会看到所有者(deploy)和组(www-data)。如果 PHP-FPM 以 www-data 运行,通常最简单的修复方法是给组设置正确的权限。
八进制 vs 符号模式(以及何时使用)
你可以使用以下两种方式设置权限:
符号表示法:chmod g+w storage(给组添加写权限)
八进制表示法:chmod 775 storage(所有者 rwx=7,组 rwx=7,其他用户 r-x=5)
常用的八进制组合:
644 用于文件:所有者可读写,其他用户只读
755 用于目录:所有者完全权限,其他用户可读可执行
664/775 当组也需要写权限时(共享部署)
避免使用 777——这是安全风险,几乎从不需要。
文件 vs 目录:微妙但重要的区别
文件
r:可以读取内容
w:可以修改内容
x:可以执行(作为程序或脚本运行)
目录
r:可以列出目录中的文件名
w:可以在目录中创建/删除/重命名条目
x:可以进入(遍历)该目录
这就是为什么可写上传目录同时需要 w 和 x 权限:
# 对于 PHP 需要写入的上传目录:
chmod 775 uploads
# 或者如果只需要所有者写入:
chmod 755 uploads # (但要确保所有权与 FPM 用户匹配)
复制代码
所有权:chown 和 chgrp
如果 web 服务器用户需要写入某个目录(例如 storage、cache、uploads),需要调整所有权或组:
# 将 web 服务器组设为所有者组
sudo chgrp -R www-data storage
# 允许组写入(和进入)目录
sudo chmod -R g+rwX storage
复制代码
大写的 X 只对目录(和已有的可执行文件)设置执行权限,这比通配符 +x 更安全。
如果你希望 web 服务器用户拥有文件:
sudo chown -R www-data:www-data storage
复制代码
这在单用户服务器上很常见。在多用户部署中,建议保持代码库归人类用户所有(例如 deploy),同时使用共享组(例如 www-data)和组写权限。
umask:谁设置默认权限?
创建新文件时,它们会从一个"基础"值开始(通常是文件 666,目录 777),然后减去 umask 指定的权限。
umask 为 022 会得到 644 文件和 755 目录
umask 为 002 会得到 664 文件和 775 目录(组可写)
你可以在服务配置中(例如 PHP-FPM 的 systemd 单元文件)或 PHP 内部(进程范围内)设置 umask。
在 PHP 中(进程生命周期内):
[code]
PHP
开发者
应该
理解
Linux
相关帖子
CRISP-DM的应用与理解
从SQL Server过渡到PostgreSQL:理解模式的差异
PHP交友聊天源码
PHP 图像处理实战 GD/Imagick 从入门到精通,构建高性能图像服务
别再用 PHP 动态方法调用了!三个坑让你代码难以维护
docker部署showdoc以及linux网关配置
嵌入式linux:虚拟机VMware下ubuntu的安装
Linux中tar、zip、gz、rar文件 解压缩归类
PHP 15 个高效开发的小技巧
智能侠PHP动态寄生虫刷新变动(1)
vip免费申请,1年只需15美金$
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
相关推荐
安全
CRISP-DM的应用与理解
1
392
铜坠匍
2025-10-07
安全
从SQL Server过渡到PostgreSQL:理解模式的差异
0
43
巴沛若
2025-10-07
程序
PHP交友聊天源码
0
33
新程序
2025-10-08
业界
PHP 图像处理实战 GD/Imagick 从入门到精通,构建高性能图像服务
0
363
边书仪
2025-10-09
业界
别再用 PHP 动态方法调用了!三个坑让你代码难以维护
0
644
东门芳洲
2025-10-10
安全
docker部署showdoc以及linux网关配置
0
155
咫噎
2025-10-10
安全
嵌入式linux:虚拟机VMware下ubuntu的安装
0
640
神泱
2025-10-11
安全
Linux中tar、zip、gz、rar文件 解压缩归类
0
900
时思美
2025-10-11
业界
PHP 15 个高效开发的小技巧
0
475
颜清华
2025-10-12
程序
智能侠PHP动态寄生虫刷新变动(1)
0
7
新程序
2025-10-12
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
签约作者
程序园优秀签约作者
发帖
布相
3 小时前
关注
0
粉丝关注
24
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
anyue1937
9994888
dage888
999994
3934307807
993678
4
富账慕
10007
5
刎唇
9993
6
柴古香
9989
7
匝抽
9986
8
孙淼淼
9989
9
筒濂
9977
10
崔瑜然
9984
查看更多