2.4 性能分析 根据该课题的要求与目标、现在的技术状况,可以确定该系统在性能方面要达 内容来自论文无忧网 www.paper51.com 到以下目标: 内容来自论文无忧网 www.paper51.com 1.该系统能够处理多个用户同时连接到服务器的情况而不出什么问题(比如100个)。 copyright paper51.com 2.该系统能够及时地返回执行的结果,并且当命令不能正确执行时,能够进行提示。 copyright paper51.com 3.该系统要在页面非正常情况下关闭时,能够正确的识别,并自动的断开与远程客户机的连接。 copyright paper51.com
4.该系统要有防止访问单独文件的情况,不管要访问什么样的文件都必须通过主页面。 paper51.com 5.对于在系统执行过程中出现的异常,程序能够正确的识别并显示相关的信息进行提示。 http://www.paper51.com 6.该程序要防止不正确或者非法命令的执行,防止在程序运行过程中,因为执行了某个命令而导致整个系统的崩溃或者连接的断开或者远程服务器的死机。 内容来自www.paper51.com 3 总体设计3.1 系统架构 内容来自www.paper51.com 因为该系统采用B/S模式并且进行远程管理,所以整个系统可以分为五大模块,即客户端、Internet、Linux操作系统、Apache服务器、PHP解释器。 paper51.com
客户端是浏览器,客户可以在远程利用浏览器登录服务器进行管理远程Linux系统。 paper51.com Internet是连接服务器和客户端的媒介,用来传输命令和数据。 paper51.com
Linux操作系统运行在远程服务器上,管理整个系统,开发的程序也是运行在Linux操作系统上。 http://www.paper51.com
Apache服务器是web服务器用来传输web页面,并调用PHP引擎对PHP脚本进行解释和执行,并把结果传输到远程浏览器。 内容来自www.paper51.com PHP解释器是用来对PHP脚本进行解释执行的,PHP解释器根据Apache的不同调用参数对不同的脚本进行解释,并把执行后得到的html文件返回给Apache服务器。 内容来自www.paper51.com 该系统的框架可以用图2表示: 内容来自论文无忧网 www.paper51.com
copyright paper51.com 图2 系统架构 http://www.paper51.com 3.2 模块划分 http://www.paper51.com 根据前面的需求分析和系统架构可知,该系统可以划分为六大模块如图3。 paper51.com
copyright paper51.com
图3 系统模块 内容来自论文无忧网 www.paper51.com
1、 安全访问模块 内容来自论文无忧网 www.paper51.com
主要负责客户端对服务器端的安全访问,主要采用访问控制技术和加密技术。在服务器端的文件系统内采用访问控制技术,在服务器端和客户端的传输过程中采用加密技术。 copyright paper51.com 2、 文件操作模块 http://www.paper51.com
主要负责对远程Linux操作系统的文件系统进行操作,这是操作远程主机的基础。当首次进行文件操作时,界面显示该系统脚本文件所在的目录和文件的属性,并在其后显示可以进行操作的命令按钮,并且在界面的上方有转换目录的文本框和命令。主要利用PHP的cookie传递命令,在具体操作方面主要利用PHP的文件IO函数来实现,在显示方面,编写了一个格式类,可以调用该类的相应函数来格式或者显示数据。 copyright paper51.com 3、 命令操作模块 内容来自www.paper51.com
主要负责对客户端传送过来的SHELL命令进行解释和执行,并及时地把结果返回过去,做这一模块时,一定要注意结果返回的及时性和错误命令的正确提示。主要利用HTML的POST方法把命令传输到服务器,然后利用PHP的系统函数system、exec、passthru的函数来执行相应的命令并把执行的结果传输到浏览器。 copyright paper51.com 4、 进程操作模块 http://www.paper51.com 主要负责对远程Linux操作系统的进程进行显示,并能对每个进程进行操作,例如杀死某个进程。主要利用system函数执行SHELL命令ps和grep得到进程列表,并在浏览器端用表格显示出来,利用posix_kill函数把某个进程杀死。 内容来自论文无忧网 www.paper51.com
5、 系统操作模块 copyright paper51.com 主要负责对Linux的主要系统管理的操作,可以利用这些系统操作对远程Linux系统进行简单的系统管理。总体思路为,利用PHP的_POST数组得到相应的传输过来的命令,然后利用PHP的system函数执行相应的SHELL命令,并把结果传输到服务器。 http://www.paper51.com 6、 网络操作模块 http://www.paper51.com
主要对远程Linux系统的网络进行简单的管理和配置。实现的总体思路为,在服务器端修改某些跟网络管理相关的文件的访问权限以使Apache可以访问和修改这些文件,利用PHP的_POST数组得到相应的传输过来的网络操作命令,然后利用PHP的system函数执行相应的SHELL命令,并把结果传输到服务器。 内容来自论文无忧网 www.paper51.com 4 具体实现4.1 安全访问模块 内容来自www.paper51.com 安全访问主要通过本机访问控制文件和PHP脚本身份验证来进行实现。 内容来自论文无忧网 www.paper51.com
1、主机访问控制文件 内容来自www.paper51.com 在远程主机中,要开启apache服务器,并在apache的配置文件中添加要访问的目录的访问控制选项。之后在要访问的目录中建立访问控制文件.htaccess和.remoteadminpasswd。.htaccess文件定义了用户名和密码文件的路径和其他一些控制选项。.remoteadminpasswd文件有用户名和加密的密码。 内容来自论文无忧网 www.paper51.com Apache的配置是为了实现目录保护和基本验证,但为了提高用户的权限,还需要对服务器进行一些配置。 内容来自论文无忧网 www.paper51.com 1) 查看httpd.conf文件找到User字段,查看Apache启动用户(默认为apache); copyright paper51.com 2) 编辑/etc/passwd文件,找到apache用户行,修改其shell(默认为/bin/nologin或/bin/false)为/bin/bash; paper51.com 3) 编辑/etc/sudoers文件,在文件中root ALL=(ALL)ALL字段的下一行添加apache ALL=NOPASSWORD:ALL,使得apache用户能够通过sudo命令执行所有命令。 paper51.com 经过此配置后,apache用户只要使用sudo命令即可获得root权限。 http://www.paper51.com 为了保证系统的安全性,在此对Apache Web服务器的目录执行访问控制,使用.htaccess访问文件和htpasswd程序为一个目录建立ACL,来对用户进行身份验证,并在.htaccess文件中设置使用SSL连接,完善安全性。 内容来自www.paper51.com
假设PHPWebmin位于/var/www/phpwebmin目录中。 http://www.paper51.com 1)配置httpd.Conf 内容来自www.paper51.com
用vi编辑器打开Apache配置文件httpd.Conf(默认在/etc/httpd/conf/目录下),找到<Directory "/var/www">字段,在下面的属性设置中添加或修改 内容来自www.paper51.com AllowOverride ALL //此参数设置哪些目录使用.ltaccess进行保护; http://www.paper51.com 2)为所保护目录建立ACL 内容来自论文无忧网 www.paper51.com
进入phpwebmin目录,cd/var/www/phpwebmin,在此目录下建立隐藏文件.htaccess(必须在htaccess文件前添加一个点号,如果不这样做,就无法建立ACL,因为点号表示建立一个隐藏文件) vi .htaccess,在.htaccess文件中输入如下代码: copyright paper51.com SSLRequireSSL //使用SSL安全连接 内容来自www.paper51.com AuthName "PHPWebmin" //验证名称 paper51.com AuthType Basic copyright paper51.com
require valid-user //允许password文件中的所有用户访问 内容来自论文无忧网 www.paper51.com AuthUserFile/var/www/phpwebmin/.phpwebminpasswd //身份数据文件; copyright paper51.com 3)创建用户身份验证数据库 paper51.com 在命令行下输入以下口令创建用户身份验证数据库文件,会要求你为用户admin创建密码: 内容来自论文无忧网 www.paper51.com htpasswd -c/var/www/phpwebmin/.phpwebminpasswd admin 内容来自论文无忧网 www.paper51.com New password: 内容来自www.paper51.com Re-type new password: 内容来自www.paper51.com 建立后的.phpweminpasswd文件内容类似于: http://www.paper51.com
admin:Op96DPmXTKy5w //用户名:MD5加密后的密码 paper51.com 若系统没有安装htpasswd,也可在网上生成用户名密码后放入.phpwebminpasswd文件. paper51.com
这样,就已经为Apache服务器建立了一个用户账号数据库,并对phpwebmin目录实行了目录保护,并实现了用户基本验证,需要用安全连接https://localhost/phpwebmin/ 进行访问,访问过程中会弹出验证对话框。 copyright paper51.com 2、PHP脚本的身份验证 paper51.com 利用_GET数组判断是登录还是注销,如果是登录,则验证密码是否正确,如果正确则进入管理界面,并在客户端设置cookie以记录登录信息,否则提示相应的错误信息。验证流程如图4: 内容来自www.paper51.com
paper51.com
图4 身份验证流程 http://www.paper51.com 身份验证的主要代码如下: paper51.com
if ($_GET['action']== "logout") paper51.com { 内容来自论文无忧网 www.paper51.com setcookie("adminpass",""); paper51.com echo"<meta http-equiv=\"refresh\"ontent=\"3;URL=".$self."\">"; 内容来自www.paper51.com echo "<spanstyle=\"font-size: 12px; font-family: Verdana\">注 copyright paper51.com 销成功......<p><ahref=\"".$self."\">三秒后自动退出或单击这里退出程序界面 >>></a></span>"; 内容来自论文无忧网 www.paper51.com ob_end_flush(); copyright paper51.com exit; copyright paper51.com } 内容来自www.paper51.com
if ($_POST['do'] =='login') paper51.com { copyright paper51.com $thepass=trim($_POST['adminpass']); http://www.paper51.com
if($admin['pass']== $thepass) copyright paper51.com { 内容来自www.paper51.com setcookie("adminpass",$thepass, time() + (1 * 24 * 3600)); copyright paper51.com echo "<metahttp-equiv= 内容来自www.paper51.com \"refresh\"content=\"3;URL=".$url."\">"; http://www.paper51.com echo "<spanstyle=\"font-size: 12px; font-family: Verdana\">登录成功......<p><ahref=\"".$url."\">三秒后自动跳转或单击这里进入程序界面 >>></a></span>"; 内容来自www.paper51.com
exit; paper51.com } 内容来自www.paper51.com else 内容来自论文无忧网 www.paper51.com
{ 内容来自www.paper51.com echo "密码错误,请重新输入</br>"; 内容来自论文无忧网 www.paper51.com } paper51.com } 内容来自www.paper51.com if(isset($_COOKIE['adminpass'])) 内容来自论文无忧网 www.paper51.com { http://www.paper51.com if($_COOKIE['adminpass'] != $admin['pass']) 内容来自www.paper51.com { 内容来自论文无忧网 www.paper51.com loginpage(); copyright paper51.com } http://www.paper51.com else 内容来自论文无忧网 www.paper51.com { copyright paper51.com loginpage(); copyright paper51.com } copyright paper51.com
} copyright paper51.com 4.2 文件操作模块 copyright paper51.com 文件操作有很多类型的操作,主要包括查看文件或目录信息,新建文件或目录,删除文件或目录,复制文件或目录,运行文件,上传文件,下载文件。 内容来自论文无忧网 www.paper51.com
文件的操作和在本地操作文件一样,只是形式有所不同,当用户选择了一个或部分文件之后,就可以点击相应的命令按钮,从而产生相应的动作。主要利用PHP的cookie传递命令,在具体操作方面主要利用PHP的文件IO函数来实现,在显示方面,编写了一个格式类,可以调用该类的相应函数来格式或者显示数据。 内容来自www.paper51.com |