setgid与setfacl的结合,能够解决apache/nginx自动生成的文件导致ftp用户删除时权限不足的问题。

需求这样的:

1:ThinkPHP框架运行时生成Runtime(755)文件,文件权限所有者为apache:apache用户、组。

2:而ftp用户已属apache组用户,因为Runtime文件夹的所有组(不可写),所以此文件夹下面的文件无法被ftp用户删除,而开发的时候又需要实时的删除缓存文件来使更改生效。


关于两个命令的讲解建议观看另两篇文章:

setgid

setfacl


这里是执行setgid以后的目录效果:

#chmod g+s Runtime/

wKiom1hSMf2yGHVAAAAi0F7EO88354.png

#setfacl -m d:g:www-data:rwx Runtime/

然后

#getfacl Runtime

wKioL1hSM-mT76p_AAAq6TBqmQk577.png

现已完全okay,ftp用户可以完全删除项目框架运行生成的缓存文件

wKiom1hSNGGS2WTPAABdk0iMDzQ961.jpg