php利用root許可權執行shell指令碼

來源:互聯網
上載者:User

標籤:net   修改   密碼   sudoers   list   並且   ops   結果   restart   

轉一篇部落格,之前搞這個東西搞了好久,結果今天晚上看到了一篇救命部落格,瞬間開心了。。。轉載轉載

利用sudo來賦予Apache的使用者root的執行許可權,下面記錄一下:

利用PHP利用root許可權執行shell指令碼必須進行以下幾個步驟:(所有步驟都是我親自實驗,若有不妥可指出,謝謝!)

1. 確定一下你的Apache的執行使用者是誰。註:不一定就是nobody,我自行安裝的httpd,我的Apache的使用者就是daemon

2. 利用visudo為你的Apache執行使用者賦予root執行許可權,當然還有設定無密碼。註:為了安全起見,這裡最好是建立一個使用者,讓他作為Apache的執行使用者即可(修改httpd.conf檔案,後面我會指出)

3. 這步就簡單了,編寫你的指令碼,利用php的exec,system...函數來執行。

接下來就是詳細的實現過程:

1. 查看一下你的Apache的執行使用者是誰: lsof -i:80         運行之後的結果為:

我們可以清楚的看到,httpd(也就是Apache)的執行使用者為:exec_shell(註:這是我本機上改過之後的使用者,只是用來說明一下,你的肯定不是這個!)  

lsof 就是 List of file 的縮寫,就是列出當前系統開啟檔案的工具,關於他具體的使用方法可參考:http://club.topsage.com/thread-234763-1-1.html   說的比較不錯

確定了你的Linux上Apache的執行者是誰,下面為了安全起見,建立一個使用者將Apache的執行使用者修改為我們建立的使用者。

2. 建立Apache的執行使用者

    useradd your_exec_user  我們知道建立使用者的時候都會預設建立一個用使用者名稱同樣的使用者組,也就是說現在我們也有一個your_exec_user的使用者組

    下面我們修改一下Apache的設定檔,使它的執行使用者改為我們剛才建立的這個使用者your_exec_user :

     vi  /home/houqingdong/httpd-exe/config/httpd.conf(這個是你的Apache所在的目錄位置)

    找到下面的地方,修改為你建立的使用者:your_exec_user

重新啟動Apache:   /home/houqingdong/httpd-exe/bin/apachect1  restart              -------------> 重啟完之後你可以利用:lsof -i:80 查看一下。

3. 執行visudo(或者是 vi /etc/sudoers) , 為your_exec_user賦予root許可權,並且不要求輸入密碼,還有一步重要的修改(我被困擾的就是這個地方)

    visudo    找到這個地方,添加your_exec_user,並且設定無需密碼

我之前的時候,做完這裡就去執行php指令碼去了,結果一直建立不成功,而且很鬱悶的是我切換到your_exec_user使用者下直接執行是可以執行成功的。    後來,查看了一下Apache的記錄檔,發現:

這裡明顯看出,在執行sudo的時候說必須要有一個tty去運行sudo , 知道問題出在哪裡問題就好解決了: vi /etc/sudoers   將下面的這句注釋掉:     

這是因為預設的情況下,執行sudo需要一個終端,這裡注釋掉就可以了。接下來,寫你的shell指令碼和php命令吧。

ok!就是上面這個部落格,完美的解決了無法運行shell指令碼的問題!

 

php利用root許可權執行shell指令碼 (轉)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.