Apache以用户nobody身份运行php脚本,cron以用户身份运行php脚本

问题描述:

我的默认cpanel设置以“nobody”用户身份运行apache。所以当我通过输出文件的浏览器运行php脚本时,该文件的所有权nobody:nobody。当我从用户“fred”登录的cron作业运行脚本时,输出文件由fred拥有:fred 我需要浏览器和cron来覆盖同一个文件。我遇到的问题是,如果一个“用户”创建文件,另一个不能覆盖它。 请你让我知道基本问题在哪里和一个可能的解决方案。权限的文件是0775.Apache以用户nobody身份运行php脚本,cron以用户身份运行php脚本

  • 我是否需要设置组 - 将用户添加到同一组作为nobody?如果是这样如何?
  • 如何让cron作业以nobody用户身份运行?

非常感谢, 劳埃德

+0

http://superuser.com/questions/170866/how-to-run-a-cron-job-as-a-specific-user – AmazingDreams 2013-03-08 07:57:00

尝试你的代码更改文件的许可为后。 但是,这会产生一个安全问题,因为任何人都可以编辑你的文件。

我中有你需要实现一个逻辑:

  1. 创建一个shell脚本,临时文件的内容复制到您的实际文件
  2. 从PHP你只需要更新temp文件和Shell可以读取它作为临时文件将具有读取权限的所有人。
  3. 使用ssh2_exec命令用您的Linux用户名和密码执行shell脚本。

对于ssh2_exec手册请点击此链接:http://php.net/manual/en/function.ssh2-exec.php

希望这能解决你的问题。

+0

谢谢,但没有创建安全问题,因为我会创建每个人都有写入权限的文件? – hfuhruhurr 2013-03-08 09:00:23

+0

是...请再次阅读答案。我修改了它。 – 2013-03-08 09:40:43

+0

嗨Nitesh,我不认为我想把我的服务器的根密码放在一个shell脚本中 - 这对我并不好。我仍在寻找答案 - 有没有办法将cron作为“nobody”来运行? – hfuhruhurr 2013-03-11 09:41:21

好吧,我的解决方案是为用户“nobody”创建一个crontab。 我有一个标准的cPanel安装,因此去/ var/spool/cron创建了一个没有人的条目。运行crontab -e编辑并安装。 现在,php运行在cron作业中的任何人都完全像通过浏览器一样运行。所有写入的文件都属于nobody,没有人拥有rw权限。