簡體   English   中英

在特定目錄中以其他用戶的身份從PHP調用Shell腳本

[英]Calling shell script as another user from PHP in specific directory

我正在編寫一個使用一些Shell腳本的PHP前端。 但是,問題是我必須以特定用戶的身份在非常特定的目錄(可訪問但非www-data擁有)中調用腳本。

$command = './myscript.py 2>&1 |  tee /tmp/outputfile.txt';       // set the command
$cwd = 'cd /home/secondUser/myscript';                                // set current working directory
$wrapper = 'echo "Password" | sudo -u secondUser bash -c';        // add extra wrappers
$fullCommand = $cwd.';'.$wrapper.' "'.$command.'"';             // combine subcommands
$output = system($fullCommand);

我正在嘗試其他執行命令(shell_exec,exec ...)。 但是,我一直在日志中發現以下錯誤:

sudo: no tty present and no askpass program specified

問題不僅在於運行shell腳本(例如,通過編輯sudoers),還在於將其作為特定的ruser運行。

有任何提示或技巧嗎?

1)##標題##這與PHP不相關,但與unix相關,因此應該將其移至其他stackexchange服務器。

另外,您提到的日志行還告訴您確切的問題所在。 Sudo不允許您從腳本中為它傳遞密碼,它需要一個終端(tty),以便它可以關閉本地回顯(因此您不必輸入要作為密碼的字母)。 您可以在sudoers文件中覆蓋它。 但是您可能應該以完全不同的方式解決此問題,方法是使用無私鑰的私鑰使用SSH以不同用戶身份登錄,或者通過允許“ sudo”不帶密碼的命令。 兩者都在這里提到:

2)他們已經在以下位置解決了這個問題: https : //serverfault.com/questions/160524/using-su-inside-of-a-shell-script

暫無
暫無

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

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