【正文】
npasswd admin New password: Retype new password: 建立后的 .phpwebminpasswd 文件內容類似于: admin:Op96DPmXTKy5w //用戶名 :MD5加密后的密碼 若 系 統(tǒng) 沒 有 安 裝 htpasswd , 也 可 在 網(wǎng) 上 生 成 用 戶 名 密 碼 后 放入 .phpwebminpasswd 文件 。 這樣,就已經為 Apache 服務器建立了一個用戶賬號數(shù)據(jù)庫,并對 phpwebmin目錄實行了目錄保護,并實現(xiàn)了用戶基本驗證,需要用安全連接 進行訪問,訪問過程中會彈出驗證對話框。 服務器特殊配置 Apache 的配置是為了實現(xiàn)目錄保護和基本驗證,但為了提高用戶的權限,還需要對服務器進行一些配置。 1、 查看 文件找到 User 字段,查看 Apache 啟動用戶(默認為apache); 2、 編輯 /etc/passwd 文件,找到 apache 用戶行,修改其 shell(默認為/bin/nologin 或 /bin/false)為 /bin/bash; 3、 編輯 /etc/sudoers 文件,在文件中 root ALL=(ALL)ALL 字段的下一行添加 apache ALL=NOPASSWORD:ALL,使得 apache 用戶能夠 通過 sudo 命令執(zhí)行所有命令。 經過此配置后, apache 用戶只要使用 sudo 命令即可獲得 root 權限。 第 12 頁 共 23 頁 命令操作模塊設計 功能描述 對命令的解釋與執(zhí)行,執(zhí)行常用 Linux 命令,通過前面的服務器配置后,使用戶在瀏覽器中用戶系統(tǒng) root 權限,執(zhí)行系統(tǒng)命令,注意使用的是 Web 模式,無法執(zhí)行交互式 Shell 命令 。 界面設計 頁面中僅有一個輸入框,一 個 提交按鈕,和一個結果顯示區(qū)域,如圖 9: 圖 9 命令執(zhí)行 文本輸入框獲得 mond 變量,提交給 system 函數(shù)后運行并把結果顯示在textarea 中: input type=text name=mand size=60 value=39。?echo $exec。?39。 input name=submit_btn type=submit value=go/p result:br textarea cols=80 rows=20 readonly /* 具體代碼 */ /textarea 工作流程 用戶在文本框中輸入并提交命令,點擊 go 運行,在文本區(qū)域中返回并顯示運行結果。具體流程見 圖 4 命令操作設計流 程。 實現(xiàn)代碼如下: ?php $exec=NULL。 import_request_variables(gp,cmd_)。 第 13 頁 共 23 頁 if($cmd_mand) {$exec=$cmd_mand。} ? ?php if($exec) { system(sudo $exec)。} ? 系統(tǒng)操作模塊設計 系統(tǒng)操作模塊中又包括關機和重啟、查看系統(tǒng)信息、管理用戶和組、管理軟件包四個子模塊。不同的子模塊采用相似的方式實現(xiàn)其功能。 功能描述 ? 系統(tǒng)關機、系統(tǒng)重啟; ? 查看系統(tǒng) cpu 信息、查看硬盤信息 、查看內核; ? 查看系統(tǒng)用戶和組,添加/刪除用戶,添加/刪除組; ? 查看系統(tǒng)安裝軟件包、根據(jù)關鍵字搜索軟件包、根據(jù)軟件包全名刪除軟件。 界面設計 基本設計為,頁面上方為提交按鈕,下方為一個文本區(qū)域,點擊按鈕時調用system 函數(shù)運行內置命令,并在文本區(qū)域中返回結果。下面以用戶 /組管理模塊來說明界面設計模式,如圖 10所示。 查看用戶 /組頁界面代碼: form action= method=post input type=submit name=show value=Show all user input type=submit name=show value=Show all group /form textarea cols=80 rows=15 readonly /* 具體代碼 */ /textarea 第 14 頁 共 23 頁 圖 10 查看所有用戶 在管理用戶和組子模塊中,首先在 頁中填寫 user 屬性,包括用戶名,用戶工作目錄,用戶 shell,用戶 uid,用戶密碼等參數(shù),提交至 頁并運行 useradd 操作,同時返回運行結果。 如 圖 11所示,編輯用戶頁面中,三個輸入框分別為用戶名獲取變量 $user,用戶 ID獲取變量 $uid,用戶目錄獲取變量 $home,一個選擇框選擇用戶默認 shell獲取 $shell,另一選擇是否需要密碼,需要則輸入密碼獲取 $encpass,使用一個提交按鈕 Creat 來提交所輸入的用戶信息至 頁,代碼如下: form action= method=post table border width=100% tr tdbUsername/b/td tdinput name=user size=10 value=/td tdbUser ID/b/td tdinput name=uid size=10 value=500/td /tr tdbHome directory/b/td tdinput name=home size=25 value= tr td valign=topbShell/b/td td valign=topselect name=shell option value=39。/bin/sh39。 /bin/sh option value=39。/bin/csh39。 /bin/csh option value=39。/bin/bash39。 /bin/bash option value=39。/bin/false39。 /bin/false option value=39。/sbin/nologin39。/sbin/nologin option value=*Other.. /select/td td valign=top rowspan=4bPassword/b/td td rowspan=4 input type=radio name=passmode value=0 No password requiredbr input type=radio name=passmode value=1 Encrypted password 第 15 頁 共 23 頁 input type=password name=encpass size=13 value=br ? . input type=submit value=Create/form 圖 11 新建用戶 工作流程 1. 用戶點擊關機與重啟子模塊,點擊 Shutdown 或 Reboot 按鈕產生關機或重啟操作,也可執(zhí)行自定義關機 /重啟命令,具體流程如圖 12; 點 擊 S h u t d o w n / R e b o o t按 鈕S h u t d o w n 提 交 給s y s t e m 函 數(shù)調 用 s y s t e m 函 數(shù) 執(zhí)行 i n i t 0判 斷 值獲取i ni t變量R e b o o t 提 交給 s y s t e m 函 數(shù)調 用 s y s t e m 函 數(shù) 執(zhí)行 i n i t 6輸 入 關 機 / 重 啟 命 令獲取c omma nd 變量調 用 s y s t e m 函 數(shù) 執(zhí)行 s u d o $ c o m m a n d 圖 12 關機 /重啟操作流程 實現(xiàn)代碼如下: switch($_POST[39。init39。]) { case Shutdown: 第 16 頁 共 23 頁 echo Shutdown immediately......\n。 $exec=sudo init 0。 break。 case Reboot: echo Reboot immediately......\n。 $exec=sudo init 6。 } if($_POST[39。mand39。]) { echo Waiting......\n。 $exec=sudo .$_POST[39。mand39。]。 } if($exec) { system($exec)。 echo \nDone...。 } 2. 打開查看系統(tǒng)信息子模塊,查看 CPU Info、 Disk Info、 Kernel Version,流程如圖 13; 點 擊 K e r n e l V e r s i o n調 用 s y s t e m 函 數(shù) 執(zhí) 行s u d o u n a m e a點 擊 C P U i n f o調 用 s y s t e m 函 數(shù) 執(zhí) 行s u d o c a t / p r o c / c p u i n f o點 擊 D i s k I n f o調 用 s y s t e m 函 數(shù) 執(zhí) 行s u d o f d i s k l 圖 13 查看系統(tǒng)信息流程 實現(xiàn)代碼如下: ?php switch($_POST[39。info39。]) { case CPU Info: $exec=sudo cat /proc/cpuinfo。 break。 case Disk Info: $exec=sudo fdisk l。 break。 case Kernel Version: 第 17 頁 共 23 頁 $exec=sudo uname a。 } if($exec) { system($exec)。} ? 3. 打開 管理用戶和組子模塊,在初始頁面中可查看系統(tǒng)用戶和組,點擊查看用戶 /組按鈕時,調用 system 函數(shù)運行 cat 命令,在文本區(qū)域中顯示/etc/passwd 或 /etc/group 文件的內容; 點擊添加用戶連接進入用戶的信息頁面 ,填寫用戶基本信息,提交至添加頁 ,運行 sudo useradd 命令,完成添加操作; 點擊刪除用戶連接,進入刪除頁面 ,填寫用戶名,運行 sudo userdel 命令,完成刪除操作,工作流程見 圖 8 用戶 /組管理總體設計 圖,下面為添加 /刪除用戶代碼。 添加用戶代碼: switch($_POST[39。passmode39。]) { case 0: $passwd=。 break。 case 1: $passwd= p .$_POST[39。encpass39。]。 } if(!$_POST[39。home39。]) { $home= d .$_POST[39。home39。]。 } $user=$_POST[39。user39。]。 $uid= u .$_POST[39。uid39。]。 $shell= s .$_POST[39。shell39。]。 $mond=sudo useradd .$_POST[39。user39。]. d .$_POST[39。home39。]. s .$_POST[39。shell39。]. u .$_POST[39。uid39。]. p .$_POST[39。encpass39。]。 echo $mond。 if($mond) { system($mond)。 } 刪除用戶代碼: $mond=sudo userdel .$_POST[39。user39。]。 echo $mond。 if($mond) { system($mond)。 } 4. 打開管理軟件包子模塊,查看系統(tǒng)已安裝軟件包,填寫關鍵字搜索,根據(jù)軟件包全名進行刪除操作,軟件包管理流程如圖 14。 第 18 頁 共 23 頁 輸 入 刪 除 關 鍵 字調 用 s y s t e m 函 數(shù) 執(zhí) 行 s u d o r p m e $ u n i n s t a l l提 交 u n i n s t a l l 變 量點 擊 S h o w A l l P a c k a g e調 用 s y s t e m 函 數(shù) 執(zhí) 行 s u d o r p m q a輸 入 搜 索 關 鍵 字提 交 s e a r c h 變 量調 用 s y s t e m 函 數(shù) 執(zhí) 行 s u d o r p m q a | g r e p $ s e a r c h 圖 14 軟件包管理流程 查看已安裝軟件包 代碼 : switch($_POST[39。package39。]) { case Show all package: echo Waiting......\n。 $exec=sudo rpm qa。 } 根據(jù)關鍵字搜索 代碼 : if($_POST[39。search39。])