当我使用以下php脚本时:
<?php
echo 'I am '.exec('whoami').' user';
?>
在我的localhost上,结果是I am nobody user
,这正是我所期待的。
但是当我使用时:
<?php
echo 'I am '.exec('echo <PASSWD> | sudo -S -u <USER> whoami').' user';
?>
其中<PASSWD>
是我的密码,<USER>
是我的用户名,结果是I am user
,我希望是I am <USER> user
。我怎样才能让它按照我的意愿工作?
作为一个注释,当我在php解释器(php -a)中使用echo 'I am '.exec('echo <PASSWD> | sudo -S -u <USER> whoami').' user';
时,一切都很好。
答案 0 :(得分:1)
正在使用的用户是在服务器上运行php / httpd进程的用户。根据您的服务器设置,这可能是Apache,root或FastCGI设置,它可以是任何用户或无用户。这是一个谬论,因为必须始终有用户。通常,共享托管服务器将试图规避允许用户以sudo用户身份执行功能。这可能正是您所经历的。
答案 1 :(得分:0)
直接的答案是你可能需要通过shell来使用管道等
对于大型应用程序,创建所有这些小型流程非常昂贵。
IMO,更好的解决方案是使用这些::
对sudo
的调用在技术上使用 root 权限运行。所以这是相同的,以更加明显的方式..
我相信你不需要我告诉你把这些密码放在你的来源是个坏主意。