www-data用户上传文件时的权限处理
采用apache调用PHP脚本执行操作时,其默认的调用用户为www-data,如果操作发生在一个www-data用户没有权限的地方,会因权限问题导致失败,本文总结了一些处理这种问题的办法
方法一 赋予777权限
- 操作前赋予777权限,www-data就什么权限都有了
- 会极大影响Linux系统的权限体系
- 不推荐
方法二 setfacl
- setfacl可以用来单独设置针对某用户或某用户组的权限,是一个比777更好的选择
- 由于linux的权限的mask定义的关系,对一个755的文件夹 setfacl u:www-data:rwx后,其权限会变成775,因此推荐使用setfacl g:www-data:rwx来实现
- 对Linux的权限体系影响较小,仅影响了www-data这个用户组的权限
- 推荐在需要快速实现并且能承受对Linux权限体系影响的场景下使用
方法三 修改属主+sudo
- 先将文件属主修改为www-data,这样通过PHP内置函数能对文件进行任何操作
- 如果需要调用Linux命令对文件进行操作,带上sudo,这样就会以相当于root的身份对文件进行操作
- 操作完成后再sudo chown修改为真正的属主
- 推荐在需要对Linux权限系统无任何影响时使用