Php 通过cronjob创建文件夹并在网站端手动上载的权限

Php 通过cronjob创建文件夹并在网站端手动上载的权限,php,linux,security,permissions,Php,Linux,Security,Permissions,我有一个运行cronjob并创建一些文件和文件夹的文件,但在网站模式下进入该文件夹时,我无法在该文件夹中创建文件或任何内容。 我认为cronjob所有者创建的文件夹是root文件夹,但是当我们想在网站模式下访问它时,我们是apache所有者,无法对其进行操作。 使用0777权限创建文件夹时,工作正常。有人知道通过不将文件夹权限从0775更改为0777来解决此问题的方法吗? 谢谢。如果创建文件夹的php脚本由root用户运行,那么您可以执行exec()chown命令将文件夹所有者更改为apache

我有一个运行cronjob并创建一些文件和文件夹的文件,但在网站模式下进入该文件夹时,我无法在该文件夹中创建文件或任何内容。
我认为cronjob所有者创建的文件夹是root文件夹,但是当我们想在网站模式下访问它时,我们是apache所有者,无法对其进行操作。
使用0777权限创建文件夹时,工作正常。有人知道通过不将文件夹权限从0775更改为0777来解决此问题的方法吗?
谢谢。

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

chown -R username:group /directory

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

chown -R username:group /directory

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

chown -R apache:apache /path/to/folder
编辑:
如果要执行此操作,web用户始终存在创建文件等的安全风险。

您可以将在cron作业中创建的文件夹的所有者更改为web用户的任何名称

chown -R apache:apache /path/to/folder
编辑:
如果要执行此操作,则web用户始终存在创建文件等的安全风险。

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

要以其他用户身份运行cronjob,请执行以下操作:

crontab -eu apache-user
这将以运行Apache的同一用户的身份运行作业,因此无需更改权限。如果文件不应在网站前面写入,则这并不理想

显然,您需要将“apache用户”更改为运行apache的用户。例如:Ubuntu上的www数据,CentOS上的apache

要将文件夹设置为继承组所有权,以便组可以访问在文件夹中创建的所有文件,请执行以下操作:

chmod g+s folder-you-are-writing-to/
chgrp apache-user folder-you-are-writing-to/
并确保将Apache组设置为以下组:

chmod g+s folder-you-are-writing-to/
chgrp apache-user folder-you-are-writing-to/

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

要以其他用户身份运行cronjob,请执行以下操作:

crontab -eu apache-user
这将以运行Apache的同一用户的身份运行作业,因此无需更改权限。如果文件不应在网站前面写入,则这并不理想

显然,您需要将“apache用户”更改为运行apache的用户。例如:Ubuntu上的www数据,CentOS上的apache

要将文件夹设置为继承组所有权,以便组可以访问在文件夹中创建的所有文件,请执行以下操作:

chmod g+s folder-you-are-writing-to/
chgrp apache-user folder-you-are-writing-to/
并确保将Apache组设置为以下组:

chmod g+s folder-you-are-writing-to/
chgrp apache-user folder-you-are-writing-to/