我在Linux系统上有一个brftv用户,并且我有运行nginx的www-data。
从终端我可以让我的brftv用户运行
sudo /sbin/reboot
自从我将以下内容添加到我的/ etc / sudoers文件的“ #user权限规范”部分后,它就可以正常工作:
brftv ALL=NOPASSWD: /sbin/halt, /sbin/reboot, /sbin/poweroff www-data ALL=NOPASSWD: /sbin/halt, /sbin/reboot, /sbin/poweroff
但是当我的php文件运行以下代码时,什么也没发生
exec('nohup sudo -u brftv /sbin/reboot');
我将www-data行添加到上面的etc / sudoers中,以防在运行上述exec()时有必要(即使我以-u brftv身份运行它,但我不是linux专家,只是认为更好是安全的)如果)。
运行exec()的php文件由www-data拥有,而chmod为777,因此所有文件都应具有从其执行的特权。
我尝试通过浏览器(我假设用户www-data运行)和从终端$运行php文件php myFile.php。
php myFile.php
-------------------更新-----------------
我做了这个
sudo chmod u s /sbin/reboot
这允许我系统上的所有用户在没有密码的情况下运行重新启动cmd。它可以工作,但我宁愿不让它保持打开状态,因此如果有人暗示我的问题是什么,那么使用/ etc / sudoers的其他解决方案会更好。
我遵循了这个教程http://linux.byexamples.com/archives/315/how-to-shutdown-and-reboot- without-sudo-password/,第二个例子几乎是我没有得到的为了我..
我可以在我的系统上运行此方法的唯一方法是通过像这样的家伙在/ sbin / reboot上更改chmod来“破解”它
http://linux.byexamples.com/archives/315/how-to-shutdown-and-reboot-without- sudo-password/
须藤chmod u + s / sbin / reboot
我意识到这在许多情况下可能不是最佳选择,但是该mediaPlayer已被锁定,因此无论如何都无法访问任何终端。