利用PHP啓動停止系統服務

在做一個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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章