當前位置:才華齋>計算機>php語言>

php通過sudo執行root指令

php語言 閱讀(2.87W)

PHP是一種很強大的語言,那麼下面就一起來看他在指令方面的應用吧!下面是本站小編精心為大家整理的php通過sudo執行root指令,希望對大家學習有幫助,更多內容請關注應屆畢業生網!

php通過sudo執行root指令

1.高階的用法如限制主機、使用者組、命令組的用法可以參照下面的規則,詳細可參看"man sudoers": Host alias specification : Host_Alias <主機組名>=<主機名1>,<主機名2> User alias specification : User_Alias <使用者組名>=<使用者名稱1>,<使用者名稱2> Cmnd alias specification : Cmnd_Alias <命令集名>=<命令1>,<命令2> User privilege specification : <使用者名稱> <主機組名>=([sudo目的角色])[NOPASSWD:]<命令1>,<命令2> : ([sudo目的角色])[NOPASSWD:]<命令1>,<命令2> sudo的預設目的角色為root;沒有配置"NOPASSWD"引數,則預設5分鐘後再次用sudo需要重新驗證身份(即輸入密碼)。 sudo的使用,常用引數解釋:

-b  在後臺執行指令。   -H  將HOME環境變數設為新身份的HOME環境變數。   -k  結束密碼的有效期限,也就是下次再執行sudo時便需要輸入密碼。

-l  列出目前使用者可執行與無法執行的指令。   -p  改變詢問密碼的提示符號。   -s  執行指定的shell。   -u<使用者>  以指定的使用者作為新的身份。若不加上此引數,則預設以root作為新的身份。   -v  延長密碼有效期限5分鐘。備註 : 1.使用sudo時,雖然是以目的使用者(如root)的身份執行命令,但是環境變數並沒有變成目的使用者的,所以執行命令是要給出絕對路徑,如普通使用者需要輸入"sudo /sbin/ifconfig"後才能執行root的ifconfig命令。

 2.要記錄日誌需要在/etc/sudoers新增"Defaults logfile=/var/log/"php通過sudo執行root指令 例如 apache使用nobody使用者執行,現在需要通過php來重啟apache 首先編輯 /etc/sudoers 使用 visudo來編輯 #visudo 在最下面新增一行 nobody ALL=NOPASSWD:/usr/local/apache/bin/apachectl restart 然後註釋掉檔案中的Defaults requiretty這行 否則會出現sudo: sorry, you must have a tty to run sudo的錯誤 儲存退出即可 測試 寫一個php檔案,內容如下 sudo使用 sudo的作用在man中概括為"execute a command as another user",即以另外一個使用者的身份來執行一條命令。 之所以想到這條命令是因為前段時間公司服務器上的檔案莫名全部消失而導致的系統重灌,追根朔源,系統的安全措施不夠到位。 1. 登陸到機器上的使用者為使用方便,全部使用root使用者 密碼過於簡單,並且沒有做相應的定期更換 3.通過telnet登陸的'使用者大部分為同一個使用者,造成系統記錄多是以該使用者名稱記錄的,雖然可以通過IP地址查證本人,但是IP的偽裝確是再容易不過的事 為解決第一和第三個問題,可以實行“實名制”,即為每個使用者分配一個使用者名稱,所有使用者對系統的使用必須通過自己的使用者名稱來完成。 那麼一些必須由root使用者才能進行的操作就以sudo的方式來執行,因為對sudo的使用是有記錄可查的,那麼大部分使用者的行為也就是可以記錄的了。

sudo可以為每一個使用者單獨授權,授權(也就是使用者可以執行的命令)是命令的條數為單位的。 sudo的配置在/etc/sudoers檔案中完成,使用專用的"visudo"命令來編輯(visudo保證使用者能夠安全的編輯/etc/sudoers檔案,如語法檢查、並行編輯等)。 最簡單的/etc/sdoers檔案如下: # sudoers file. # # This file MUST be edited with the 'visudo' command as root. # # See the sudoers man page for the details on how to write a sudoers file. # # Host alias specification # User alias specification # Cmnd alias specification # Defaults specification # User privilege specification root ALL=(ALL) ALL gongam ALL=NOPASSWD:/sbin/ifconfig #gongam

ALL=/sbin/ifconfig # Uncomment to allow people in group wheel to run all commands # %wheel ALL=(ALL) ALL # Same thing without a password # %wheel ALL=(ALL) NOPASSWD: ALL # Samples # %users ALL=/sbin/mount /cdrom,/sbin/umount /cdrom # %users localhost=/sbin/shutdown -h now 僅在原始檔案上添加了紅色的兩行,以#開頭的行為註釋行。 "gongam ALL=NOPASSWD:/sbin/ifconfig"的意思是允許gongam這個使用者在任何主機登陸使用"sudo /sbin/ifconfig"命令並且不需要輸入密碼。 仿照這個檔案我們就可以為特定使用者賦予特定