php通過sudo執行root指令

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"命令並且不需要輸入密碼。 仿照這個文件我們就可以爲特定用戶賦予特定