将shell_exec或exec用作其他unix用户


Using shell_exec or exec as a different unix user?

在运行shell_exec或exec时,我可以以其他用户身份登录PHP吗?

我不希望它使用www数据用户,因为我想以git用户的身份执行命令,以便在当前机器中创建repo。

在运行shell_exec或执行官?

这是一个有风险的选择,可能会在服务器中造成严重的安全漏洞。应该避免。

我想以git用户的身份执行命令

我建议您的web应用程序将需要创建的新回购的信息写入数据库表。然后在服务器上有一个持续运行的进程(或通过cron调用的进程(,该进程以git用户的身份运行。该过程可以定期检查该资源并创建回购。这样,您的web服务器就不会进行用户切换,您仍然可以安全地创建新的回购。

您可以设置sudo以允许这样做。您需要将sudo的www数据用户权限授予用户git(通过/etc/sudoers((可能没有密码(。

即:

shell_exec('sudo -u GIT_USER -S your_git_command');

作为另一种选择,可以将Apache配置为以www日期以外的用户身份运行虚拟主机(请参阅suphp-http://www.suphp.org/Home.html)。

当然。如何使用sudo -u newuser

如何在没有密码的情况下通过/etc/sudoers将sudo的www数据用户权限授予用户git?

以下方法行得通吗?

www data ALL=git_user NOPASSWD:命令名称