- 相關(guān)推薦
php通過sudo執(zhí)行root指令
PHP是一種很強大的語言,那么下面就一起來看他在指令方面的應(yīng)用吧!下面是百分網(wǎng)小編精心為大家整理的php通過sudo執(zhí)行root指令,希望對大家學(xué)習(xí)有幫助,更多內(nèi)容請關(guān)注應(yīng)屆畢業(yè)生網(wǎng)!
1.高級的用法如限制主機、用戶組、命令組的用法可以參照下面的規(guī)則,詳細可參看"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的默認(rèn)目的角色為root;沒有配置"NOPASSWD"參數(shù),則默認(rèn)5分鐘后再次用sudo需要重新驗證身份(即輸入密碼)。 sudo的使用,常用參數(shù)解釋:
-b 在后臺執(zhí)行指令。 -H 將HOME環(huán)境變量設(shè)為新身份的HOME環(huán)境變量。 -k 結(jié)束密碼的有效期限,也就是下次再執(zhí)行sudo時便需要輸入密碼。
-l 列出目前用戶可執(zhí)行與無法執(zhí)行的指令。 -p 改變詢問密碼的提示符號。 -s 執(zhí)行指定的shell。 -u<用戶> 以指定的用戶作為新的身份。若不加上此參數(shù),則預(yù)設(shè)以root作為新的身份。 -v 延長密碼有效期限5分鐘。備注 : 1.使用sudo時,雖然是以目的用戶(如root)的身份執(zhí)行命令,但是環(huán)境變量并沒有變成目的用戶的,所以執(zhí)行命令是要給出絕對路徑,如普通用戶需要輸入"sudo /sbin/ifconfig"后才能執(zhí)行root的ifconfig命令。
2.要記錄日志需要在/etc/sudoers添加"Defaults logfile=/var/log/sudo.log"php通過sudo執(zhí)行root指令 例如 apache使用nobody用戶運行,現(xiàn)在需要通過php來重啟apache 首先編輯 /etc/sudoers 使用 visudo來編輯 #visudo 在最下面添加一行 nobody ALL=NOPASSWD:/usr/local/apache/bin/apachectl restart 然后注釋掉文件中的Defaults requiretty這行 否則會出現(xiàn)sudo: sorry, you must have a tty to run sudo的錯誤 保存退出即可 測試 寫一個php文件,內(nèi)容如下 sudo使用 sudo的作用在man中概括為"execute a command as another user",即以另外一個用戶的身份來執(zhí)行一條命令。 之所以想到這條命令是因為前段時間公司服務(wù)器上的文件莫名全部消失而導(dǎo)致的系統(tǒng)重裝,追根朔源,系統(tǒng)的安全措施不夠到位。 1. 登陸到機器上的用戶為使用方便,全部使用root用戶 2.root密碼過于簡單,并且沒有做相應(yīng)的定期更換 3.通過telnet登陸的用戶大部分為同一個用戶,造成系統(tǒng)記錄多是以該用戶名記錄的,雖然可以通過IP地址查證本人,但是IP的偽裝確是再容易不過的事 為解決第一和第三個問題,可以實行“實名制”,即為每個用戶分配一個用戶名,所有用戶對系統(tǒng)的使用必須通過自己的用戶名來完成。 那么一些必須由root用戶才能進行的操作就以sudo的方式來執(zhí)行,因為對sudo的使用是有記錄可查的,那么大部分用戶的行為也就是可以記錄的了。
sudo可以為每一個用戶單獨授權(quán),授權(quán)(也就是用戶可以執(zhí)行的命令)是命令的條數(shù)為單位的。 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"命令并且不需要輸入密碼。 仿照這個文件我們就可以為特定用戶賦予特定
【php通過sudo執(zhí)行root指令】相關(guān)文章:
php執(zhí)行sql語句的寫法05-16
PHP怎么執(zhí)行Linux系統(tǒng)命令函數(shù)08-10
php通過Chianz.com獲取IP地址與地區(qū)的方法08-12
php通過記錄IP來防止表單重復(fù)提交方法分析10-17
PHP下通過exec獲得計算機的唯一標(biāo)識10-03
關(guān)于php操作mysql執(zhí)行數(shù)據(jù)庫查詢08-11
什么是PHP PHP與ASP比較09-18