【发布时间】:2015-05-18 22:54:52
【问题描述】:
这就是我想要做的。我正在尝试通过 PHP 脚本在另一个用户下启动二进制文件。 Apache 具有 sudo 访问权限。该命令在以“test”身份通过 putty 运行时运行良好。
passthru('bash -c "sudo -u test cd /home/test/cs/ ; ./hlds_run"');
我也可以补充一下
passthru('bash -c "sudo -u test ./home/test/cs/hlds_run"');
由于二进制文件的编写方式而无法工作(除非您之前 cd 到该文件夹,在终端上测试,否则它不会找到它的资源)
【问题讨论】:
-
你需要将命令引用到
sudo或者外壳看到;并先拆分命令。 -
@EtanReisner 喜欢这个? passthru('bash -c "sudo -u test "cd /home/test/cs/ ; ./hlds_run" " '); ?我需要逃避什么吗?
-
是的,就像那样。是的,您需要从外壳中转义内部双引号,是的。
-
passthru('bash -c "sudo -u test \"cd /home/test/cs/ ; ./hlds_run\" "');没有骰子,它不会开始。编辑:: 我刚刚意识到 php 可能会逃脱第一个 \ 所以我尝试 passthru('bash -c "sudo -u test \\"cd /home/test/cs/ ; ./hlds_run\\" "');但还是不行
-
请更具体地定义“no dice”和“nope”。这有什么问题?
标签: php linux bash centos centos6