Linux
將外部文件作為 www-data 執行(Ubuntu 16.04)
我想通過 PHP 啟動一個虛擬機,但我沒有運氣。這就是我所擁有的。
<?php if(isset($_POST['btn_start'])){ echo shell_exec('whoami'); echo exec('virsh start winagain'); } ?> <!DOCTYPE HTML> <html> <head> <title>Manage VPS</title> </head> <body> <form method="POST" action="vps.php"> <input type="submit" name="btn_start" value="Start"> </form> </body> </html>
我得到錯誤:
error: failed to connect to the hypervisor error: no valid connection error: Failed to connect socket to '/var/run/libvirt/libvirt-sock': Permission denied
所以我嘗試將此行放入我的 /etc/sudoers 文件中
www-data ALL = NOPASSWD: /var/run/libvirt/libvirt-sock
但它什麼也沒做。
我現在沒有想法了,請幫助。
如果您要使用 sudo(您可能會這樣做)來提升您需要的權限:
- 授予對
virsh
命令而不是套接字文件的訪問權限- 在ie中使用
virsh
命令的絕對路徑/etc/sudoers
www-data ALL = NOPASSWD: /path/to/virsh
- 需要呼叫
sudo
你的 exec 命令- 需要
virsh
在 exec 命令中使用絕對路徑與 sudo 即
shell_exec("/bin/sudo /path/to/virsh start wine again")