php exec()中的Sudo我不知道这是怎么回事,…所以我想运行一个AppleScript:sudo osascript myscript.scpt这在终端中运行得很好,但当我通过PHP执行它时就不行了。exec()什么也没发生。控制台上写着no tty present and no askpass program specified ; TTY=unknown ; …我做了我的研究,似乎我错过了密码sudo命令。我尝试了几种不同的方法来解决这个问题,包括:写字%admin ALL=(ALL) ALL在……里面/etc/sudoers和proc_open()而不是exec()所有这些似乎都不起作用,结果把我逼疯了!因此,基本上,有一个明确的方式让PHP执行一个简单的终端命令吗?编辑:为了澄清,myscript.scpt是一个简单的AppleScript,它可以更改屏幕上的UI(用于更大的项目)。理论上,很简单osascript myscript.scpt应该足够了,但是sudo由于某种原因需要调用一些系统的回应。如果sudo可能会被删除,我不认为我会有这个权限问题。
3 回答
繁花不似锦
TA贡献1851条经验 获得超4个赞
%admin ALL=(ALL) NOPASSWD: osascript myscript.scpt
Defaults requiretty
湖上湖
TA贡献2003条经验 获得超2个赞
12345
exec('sudo -u root -S {{ your command }} < ~/.sudopass/sudopass.secret');
森林海
TA贡献2011条经验 获得超2个赞
$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
- 3 回答
- 0 关注
- 1009 浏览
添加回答
举报
0/150
提交
取消