在做一個web界面的DNS管理系統..
最後的一個問題耗了兩個星期才解決.. 鬱悶!
就是利用sudo 執行/etc/rc.d/init.d/named stop的時候,總是執行失敗..
現在問題已經解決. 把詳細的步驟寫出來
有些系統服務是需要root權限纔可以執行的..
但是想要非系統用戶執行必須使用sudo.
現在把apache的用戶daemon允許執行named添加到sudo配置文件中去
1.[root@localhost ~]# visudo -f /etc/sudoers
在最下方添加
Cmnd_Alias DNS = /etc/rc.d/init.d/named
deamon ALL=(ALL) NOPASSWD: DNS
將 Defaults requiretty 註釋掉,不註釋掉的話sudo必須請求一個tty執行,也就是說必須用戶登陸到tty纔可以執行
找到Defaults requiretty ,但是daemon是nologin類型的用戶,根本進不到tty的,就算給daemon允許登陸的權限apache 也不會登陸到tty.所以必須註釋掉或者刪掉這一行
#Defaults requiretty
說明:daemon是apache的用戶, ALL是表示所有的機器,NOPASSWD表示daemon用戶使用sudo的時候不提示輸入密碼,DNS表示允許daemon執行的程序
2.在PHP中利用exec,shell_exec或者system函數執行
例如: $output = shell_exec("/usr/bin/sudo /etc/rc.d/init.d/named start");
echo $output