1

我在 Centos 机器上有几个 bash 脚本,我用它们来执行基本的服务器管理工​​作,例如重新启动服务等。我以标准用户身份运行这些脚本,同时也是脚本的所有者。

我尝试使用 apache 用户在 PHP 中使用 shell_exec() 运行这些,但它根本不起作用 - 我猜它没有足够的权限(即使使用 775 并且在正确的组中!)运行我想要的一切。

我已经尝试编辑 sudoers 文件,授予 apache 运行脚本调用的权限,但它仍然无法正常工作,并且没有我可以看到的错误消息。

有什么想法吗?如何从需要其他用户运行的网页中触发脚本?

4

2 回答 2

0

确保安全模式已关闭。还要验证用户是您期望的用户:

<?php echo exec('whoami'); ?>
于 2012-12-12T21:51:43.937 回答
0
  1. 检查哪个用户正在运行 apache(对于 debian,它是 www-data)
  2. 在 sudoers 列表中添加 www-data 以执行您喜欢的文件
  3. 检查 /etc/passwd 中哪个 shell 有 www-data 用户(您需要提供有效的 shell)
  4. 使用 /bin/bash -x 运行脚本(它肯定会输出)
于 2012-12-13T14:05:46.703 回答