簡體   English   中英

php sudo shell_exec命令從命令行運行,但不是從瀏覽器運行

[英]php sudo shell_exec command runs from command line, but not from browser

我正在用php-fpm運行lighttpd。 我已將http用戶添加為我的sudoers,作為nopasswd sudoer。 我有以下腳本:

<?php
    echo shell_exec("sudo sh -c 'echo \"wtf3\" > /etc/openvpn/auth.txt'");
?>

當我這樣做時,它運行正常:

sudo -u http php testsudo.php

但是在通過瀏覽器運行時失敗。

shell_exec("whoami");

在瀏覽器中確認我是用戶http。

是什么賦予了?

制作一個可以運行您的命令的shell腳本是不可能的嗎?

#!/bin/sh
sudo whoami

在PHP中:

$retVal = `/path/to/custom/script/myscript.sh &2>1`;
if ($retVal) echo 'SWEET';
else echo 'POOP: ' . $retVal;

{command}表示與Linux服務器上的shell_exec('{command}')相同。 如果我在這里還算不錯,那么您的目標是將用戶添加到您的VPN中(也許還有其他方法),在這種情況下,您可以將用戶名/密碼/ etc的命令行參數傳遞給自定義外殼腳本。

這並非完全是您的問題的純shell_exec()答案,但是也許您無需執行sudo即可運行myscript.sh 僅基於以下事實:您說過您嘗試在shell中運行的所有內容都在echo $PATH設置,但sudo echo $PATH在PHP腳本中設置sudo echo $PATH 出於某種原因,似乎sudo是php中的問題,而不是shell中的問題,所以...將sudo移回shell並以這種方式嘗試。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM