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


Apache runs php scripts as user nobody, cron runs php scripts as user

我的默认cpanel设置以用户"nobody"运行apache。所以当我通过浏览器运行php脚本输出一个文件时,这个文件的所有权是nobody。当我以"fred"用户身份在cron作业中运行脚本时,输出文件归fred:fred所有我需要两个浏览器和cron覆盖相同的文件。我遇到的问题是,如果一个"用户"创建了文件,另一个用户不能覆盖它。请让我知道根本问题在哪里以及可能的解决方案。文件的权限是0775.

  • 我是否需要设置组-将用户添加到与nobody相同的组?如果有,那是怎么回事?
  • 如何让cron作业以nobody用户的身份运行?

很多谢谢,劳埃德

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

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

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

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

好的,我的解决方案是为用户"nobody"创建一个crontab。我有一个标准的cpanel安装,所以去/var/spool/cron创建了一个没有人的条目。运行crontab -e编辑并安装。现在php在cron作业中作为nobody运行,就像在浏览器中一样。

所有写入的文件都不属于任何人,只有rw权限。