php exec()中的Sudo我不知道這是怎么回事,…所以我想運(yùn)行一個(gè)AppleScript:sudo osascript myscript.scpt這在終端中運(yùn)行得很好,但當(dāng)我通過PHP執(zhí)行它時(shí)就不行了。exec()什么也沒發(fā)生??刂婆_(tái)上寫著no tty present and no askpass program specified ; TTY=unknown ; …我做了我的研究,似乎我錯(cuò)過了密碼sudo命令。我嘗試了幾種不同的方法來解決這個(gè)問題,包括:寫字%admin ALL=(ALL) ALL在……里面/etc/sudoers和proc_open()而不是exec()所有這些似乎都不起作用,結(jié)果把我逼瘋了!因此,基本上,有一個(gè)明確的方式讓PHP執(zhí)行一個(gè)簡(jiǎn)單的終端命令嗎?編輯:為了澄清,myscript.scpt是一個(gè)簡(jiǎn)單的AppleScript,它可以更改屏幕上的UI(用于更大的項(xiàng)目)。理論上,很簡(jiǎn)單osascript myscript.scpt應(yīng)該足夠了,但是sudo由于某種原因需要調(diào)用一些系統(tǒng)的回應(yīng)。如果sudo可能會(huì)被刪除,我不認(rèn)為我會(huì)有這個(gè)權(quán)限問題。
3 回答
繁花不似錦
TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超4個(gè)贊
%admin ALL=(ALL) NOPASSWD: osascript myscript.scpt
Defaults requiretty
湖上湖
TA貢獻(xiàn)2003條經(jīng)驗(yàn) 獲得超2個(gè)贊
12345
exec('sudo -u root -S {{ your command }} < ~/.sudopass/sudopass.secret');
森林海
TA貢獻(xiàn)2011條經(jīng)驗(yàn) 獲得超2個(gè)贊
$dev = $_GET['device'];$cmd = '/bin/bash /home/www/start.bash '.$dev;echo $cmd;shell_exec($cmd);
/home/www/start.bash #!/bin/bash/usr/bin/sudo /home/www/myMount.bash $1
MyMount.bash: #!/bin/bashfunction error_exit{ echo "Wrong parameter" 1>&2 exit 1}..........
www-data ALL=(ALL:ALL) NOPASSWD:/home/www/myMount.bash
sudo chmod 0440 /etc/sudoers.d/mount
添加回答
舉報(bào)
0/150
提交
取消
