这是一个Ubuntu系统,我需要PHP来执行一个具有特定用户名的程序,比方说userA。
我使用php exec()函数来调用sudo -Eu userA command_to_run_program,由于Ubuntu上缺少某些安全功能或环境变量,因此无法正常工作。
所以我在想是否可以实现这种替代方式:
从后端开始,有一个带有固定Pid的shell脚本正在运行并等待信号。如果此过程收到特定信号,它将执行该程序。假设我用userA手动启动了这个shell脚本。所以我假设当它收到信号并执行程序时,程序用userA执行。
在这台机器上有一个带PHP的apache服务器。前端用户进入PHP页面,php程序将信号发送到正在运行的shell脚本,唤醒shell脚本,因此程序由userA执行。
如果可以实现,最佳做法是什么?
感谢您的帮助!
答案 0 :(得分:0)
换句话说,您需要从Web服务器的用户帐户到(特定的?)不同用户的某种权限升级。这有安全隐患,但我认为你已经考虑了可能性。
无论如何,以下步骤应该有效:
有关详细信息,请参阅chown
和chmod
的联机帮助页。