通过cron作业创建文件夹并在网站端操作它的权限

时间:2014-08-28 21:29:52

标签: php linux security permissions

我有一个使用cronjob运行并创建一些文件和文件夹的文件,但是当在网站模式下进入该文件夹时,我无法在该文件夹中创建文件或任何内容。
我认为cronjob所有者创建的文件夹是root,但是当想要在网站模式下访问它时,我们是apache所有者,无法操纵它。
创建具有0777权限的文件夹时,它可以正常工作。没有人从0775到0777更改文件夹权限,任何人都知道这个问题的解决方案吗? 感谢。

3 个答案:

答案 0 :(得分:2)

您可以将您在cron作业中创建的文件夹的所有者更改为您的Web用户。

chown -R apache:apache /path/to/folder

编辑: 如果您要执行此操作,则始终存在使Web用户能够创建文件等的安全风险。

答案 1 :(得分:1)

如果创建文件夹的php脚本是由root运行的,那么你可以使用exec()chown命令将文件夹所有者更改为apache

chown -R username:group /directory

答案 2 :(得分:0)

这可以通过将cronjob作为Apache所有者运行或设置要创建文件的文件夹来将组所有权传播到所有创建的文件/文件夹来解决。

以另一个用户身份运行cronjob:

crontab -eu apache-user

这将以运行Apache的同一用户身份运行作业,因此无需更改权限。如果文件不能在网站前写入,这是不理想的。

显然你需要改变" apache-user"对于运行Apache的用户。例如:关于Ubuntu的www-data,关于CentOS的apache。

要将文件夹设置为继承组所有权,以便该组可以访问该文件夹中创建的所有文件:

chmod g+s folder-you-are-writing-to/

确保将Apache组设置为组:

chgrp apache-user folder-you-are-writing-to/