Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
作为另一个用户从php运行bash脚本_Php_Linux_Bash_Ubuntu_Permissions - Fatal编程技术网

作为另一个用户从php运行bash脚本

作为另一个用户从php运行bash脚本,php,linux,bash,ubuntu,permissions,Php,Linux,Bash,Ubuntu,Permissions,我想在不打开Ubuntu系统终端的情况下运行bash脚本。其他一些用户将不得不每天检查并运行该流程。所以我想我可以建立一个简单的php网站来运行脚本。在阅读了Stack Overflow和googleing之后,我认为shell_exec可以做到这一点。但由于我不想在某些目录中为www数据授予权限,所以我希望以所有者、用户meteo的身份运行这些脚本 这是我的php: $autput = shell_exec('date +%d/%m/%Y-%H:%m'); echo "<pre>H

我想在不打开Ubuntu系统终端的情况下运行bash脚本。其他一些用户将不得不每天检查并运行该流程。所以我想我可以建立一个简单的php网站来运行脚本。在阅读了Stack Overflow和googleing之后,我认为shell_exec可以做到这一点。但由于我不想在某些目录中为www数据授予权限,所以我希望以所有者、用户meteo的身份运行这些脚本

这是我的php:

$autput = shell_exec('date +%d/%m/%Y-%H:%m');
echo "<pre>Hora de inicio: $autput</pre>";

$output = shell_exec('/home/meteo/RAMS/SCRIPTS/RAMS_operatiu.bash');
echo "<pre>".$output."</pre>";
通过这种方式,www数据用户运行我的脚本(RAMS_operatiu.bash),但由于该脚本运行mpich作业,它必须检查mpd.conf,然后脚本崩溃,因为www数据没有这样的文件。它实际上是为梅托而存在的。因此,我希望作为meteo比www数据更好地运行。我试着用

但是找不到告诉php脚本作为meteo而不是www数据运行的要点。这可能吗?也许我遗漏了什么


非常感谢您的帮助。

如果您需要定期/每天运行它,为该用户设置自动运行脚本的cron作业不是更容易吗?您可能可以使用此函数Hi@jeroen and yes“在另一个用户id下”运行php脚本。我还尝试每天安排运行cron作业。但是,这是另一个问题,我的脚本是从终端运行的,而不是从cron运行的(我在mpich讨论邮件列表中有一个未决问题)。我想我可以试试php,让其他用户可以选择运行脚本。我可以通过ssh连接并运行脚本,但不希望其他用户这样做。谢谢你的建议。@petrbel我应该添加
posix_setuid(1000)
在shell_exec()之前@petrbel已经尝试过,但仍然作为www数据运行。你能举一个这样的函数的例子吗。谢谢
meteo   ALL = NOPASSWD: /home/meteo/RAMS/SCRIPTS/RAMS_operatiu.bash
www-data   ALL = NOPASSWD: /home/meteo/RAMS/SCRIPTS/RAMS_operatiu.bash
$output = shell_exec('sudo -u meteo /home/meteo/www/RAMS/inicio_RAMS.sh');