www-data - Ubuntu Web服务所属用户/组
理解并配置www-data用户/用户组,解决Typecho无法直接编辑主题文件、上传附件等问题。
www-data - Ubuntu Web服务所属用户/组
1 问题由来
1.1 Typecho环境下的问题
- Console中无法直接编辑html及php文件
- 文章无法上传附件,提示附件上传失败
- 无法创建配置文件*.conf
- ……
1.2 网上流传的解决方案
- 网络上常见的解决方法集中是放宽权限,如:
- 对Typecho所在的Web目录赋予最高的777权限;
- 给相关子文件夹,如
theme
,usr
,uploads
赋予最高权限;
- 注意:这种方式确实是可以解决以上问题的,但是,这种赋予所有用户最高权限的方式极其草率,用于测试、分析原因尚可,但最大化的权限赋予极不规范。
1.3 分析
- 经测试,赋予777权限确实可以解决问题,其原因在于 其它用户 的获得了完整的权限,这里就包含了服务器框架程序执行进程所属于的用户/组。服务器进程拥有了写权限,也就可以写入修改主题文件、写入接收到的上传文件了。
2 www-data
2.1 www-data是什么?
www-data 是 Debian/Ubuntu 上处理Web服务的用户/用户组。
服务器程序,如:Apache,Nginx(读作:engine X),运行在www-data用户/用户组的身份下。
2.2 理解
Web服务运行于www-data的这个机制就类似于数据库管理机制,存在Role的对象。
Role 实质上是一种身份,是一组特定权限的集合。数据库中通过定义Role来实现清晰明确、有条理的权限分配。
Debian/Ubuntu 中的原理也类似,通过专用的身份,也就是由专用的用户/用户组来执行特定类型的程序或服务。
通过 lastlog
命令可以看到系统的诸多用户/用户组:
1 | ubuntu@VM-49-193-ubuntu:~$ lastlog |
- 可以看到,一个Ubuntu Server里就有这么多用户/用户组,事实上它们具体都对应着特定类型的程序和服务。
因此,只要把所在的Web路径下的文件及子目录放心地交给www-data用户/用户组即可!
权限方面,采用默认方案即可,目录配755,文件配644,比777不知妥当到那里去了。
2.3 操作
更改所属用户及用户组的bash命令如下(递归):
1 | sudo chown -R www-data /var/www/html/ |
修改权限命令如下:
1 | sudo chmod 755 /var/www/html/ |