登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
导读
排行榜
资讯
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
写记录
写博客
小组
VIP申请
VIP网盘
网盘
联系我们
发帖说明
道具
勋章
任务
淘帖
动态
分享
留言板
导读
设置
我的收藏
退出
腾讯QQ
微信登录
返回列表
首页
›
业界区
›
业界
›
PHP 开发者应该理解的 Linux 入门权限指南 ...
PHP 开发者应该理解的 Linux 入门权限指南
[ 复制链接 ]
布相
2025-10-12 15:10:03
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
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
相关帖子
Linux常用命令查询工具(好记性不如烂笔头)
我们提供了这些企业和开发者所需的热门技术栈教程
理解整数在计算机中的表示
PHP 8.6 即将支持部分函数应用
Linux DMA开发指南(一)
关于linux编译c语言文件的一些错误问题
[Linux] 手写轻量C++函数性能探查器:CPU占用率&耗时
数据库开发者必装!立即免费下载!
PHP 8.6 新增 clamp() 函数
国内开发者合规订阅 Claude Code 的 3 条最优路径是什么?
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
相关推荐
安全
Linux常用命令查询工具(好记性不如烂笔头)
1
595
闾丘婉奕
2025-12-12
安全
我们提供了这些企业和开发者所需的热门技术栈教程
0
97
佴莘莘
2025-12-13
业界
理解整数在计算机中的表示
0
471
懵径
2025-12-13
业界
PHP 8.6 即将支持部分函数应用
0
709
昝琳怡
2025-12-14
业界
Linux DMA开发指南(一)
0
672
芮梦月
2025-12-15
安全
关于linux编译c语言文件的一些错误问题
1
955
诈知
2025-12-15
安全
[Linux] 手写轻量C++函数性能探查器:CPU占用率&耗时
0
612
颖顿庐
2025-12-15
安全
数据库开发者必装!立即免费下载!
0
415
存叭
2025-12-15
业界
PHP 8.6 新增 clamp() 函数
0
102
轩辕琳芳
2025-12-15
安全
国内开发者合规订阅 Claude Code 的 3 条最优路径是什么?
0
76
韶又彤
2025-12-16
回复
(3)
巴沛若
2025-11-3 14:29:10
回复
使用道具
举报
照妖镜
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
分享、互助 让互联网精神温暖你我
掳诚
6 天前
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
这个有用。
筒濂
前天 17:07
回复
使用道具
举报
照妖镜
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
喜欢鼓捣这些软件,现在用得少,谢谢分享!
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
浏览过的版块
安全
代码
签约作者
程序园优秀签约作者
发帖
布相
前天 17:07
关注
0
粉丝关注
24
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
3934307807
991124
anyue1937
9994893
kk14977
6845357
4
xiangqian
638210
5
韶又彤
9998
6
宋子
9983
7
闰咄阅
9993
8
刎唇
9993
9
俞瑛瑶
9998
10
蓬森莉
9951
查看更多
今日好文热榜
338
【节点】[Adjustment-WhiteBalance节点]原
298
上海专业建筑维修服务解析:标准化流程如何
942
【分析式AI】-带你弄懂XGBoost模型
728
【分析式AI】-带你弄懂XGBoost模型
48
【分析式AI】-带你弄懂XGBoost模型
270
C语言之统计天数
237
如何使用DashVector的多向量检索
270
【分析式AI】-朴素贝叶斯算法模型
215
【分析式AI】-朴素贝叶斯算法模型
933
【睿擎派】EtherCAT总线之IO模块读写
587
python3.13 3.14 新特性 好好好
783
Python新利器:用uv轻松管理venv虚拟环境和
956
Open-AutoGLM项目衍生自研app测试思路
180
.Net-Avalonia学习笔记(目录)
435
PoloAPI 绘画接口全攻略:从参数详解到实战
144
剑指offer-50、数组中重复的数字
179
嫌 Google 的 TCREI 太复杂?RACE 会更适合
975
Spring Boot中HTTP请求参数转换和请求体JSO
531
AI手机的“简单替换陷阱”与Hadoop、Cloude
474
用C#重现Gin风格:极简、效率与可扩展性设