【问题标题】:Different file owner for files created via cron vs apache通过 cron 与 apache 创建的文件的不同文件所有者
【发布时间】:2011-04-09 03:41:39
【问题描述】:

我有一个具有共享 config.php 文件的 Web 应用程序。在这个文件中,我包含了一个收集错误消息的函数(使用set_error_handler),然后在脚本执行结束时将错误保存到一个集中的日志文件中(使用register_shutdown_function)。

每天都会创建日志文件,格式为Y-m-d.log。作为应用程序的一部分,Cron 脚本每 5 分钟运行一次,因此通常是每天第一个错误的原因,因此错误文件是在 cron 用户(即帐户超级用户)下创建的。

当我们的员工进来工作并使用该应用程序时,该脚本在 apache 用户 (99) 下运行。错误记录器无法写入错误文件,因为它归超级用户所有。

一种可能的解决方案是将 cron 脚本chown 日志文件设置为 99,以便 apache 用户可以访问它。 uid 99 是 apache 托管的公认约定,还是如果我硬编码 99 会导致未来的可移植性问题?

还有其他方法(不诉诸exec/sudo)让我的日志可以访问吗?

更新:我没有对服务器的 shell 访问权限。

谢谢,亚当

【问题讨论】:

  • 你尝试在apache用户下使用sudo启动cron任务吗?

标签: php apache permissions chown


【解决方案1】:
root@deathstar:~# su nobody
$ id
uid=65534(nobody) gid=65534(nogroup) Gruppen=65534(nogroup)

你不需要 id。用户名就足够了,如果你不想硬编码,我建议你:

  • 首先对“用户”的 /etc/apache2/apache2.config 进行 grep 处理
  • 使用用户名执行 chmod(chmod 将为您获取用户 ID)

【讨论】:

  • 谢谢,但我没有 shell 访问权限
猜你喜欢
  • 1970-01-01
  • 2016-06-11
  • 1970-01-01
  • 2014-04-15
  • 1970-01-01
  • 2012-07-04
  • 1970-01-01
  • 2018-02-22
  • 2011-07-12
相关资源
最近更新 更多