【发布时间】:2011-03-10 03:00:47
【问题描述】:
我正在尝试在 Ubuntu 服务器上从 PHP 运行非特权用户拥有的 shell 脚本。权限问题使得使用 exec() 运行它是不切实际的,因为运行它的是 www-data。我用谷歌搜索了一下,发现了对 suExec 的各种引用(对于这样一个小问题,这似乎太麻烦了),设置 suid 位,以及 Stackoverflow 上一个有趣的方法,涉及 Python 服务器监听发送的命令通过 PHP。
无论如何,在所有这些解决方案中,我倾向于涉及设置 suid 位的解决方案,尝试过但没有用:chmod u+s script.sh,我的 Apache 日志仍然显示权限错误,所以我知道脚本是不是作为它的所有者运行,而是作为www-data。
我必须做些什么才能让这个工作正常进行,有没有更简单的解决方案来解决这个问题?
【问题讨论】:
-
没有。您的用户 (www-data) 需要执行权限才能运行脚本。让您想使用 shell 脚本的根本问题是什么,也许这有一个有用的答案。
-
基本上我正在尝试创建 php.opensourcecms.com 的内部版本(在某个时间自动重置的开源 CMS 演示)。我已经让 cron 作为非特权用户每 2 小时运行一次脚本,但我想添加功能以按需执行它。我可以将它作为 www-data 运行,但这意味着我也可以从 www-data 的 cron 运行它,因为替换的文件归 www-data 所有。无论如何,出于安全原因,我想避免让 www-data 拥有所有文件。
-
删除CMS的目录,解压备份,删除/创建/导入数据库备份,就这些了……
标签: php linux permissions exec