1、 摘要该课题基于Linux操作系统,主要目的是使系统管理员的远程管理工作更加方便、简单和友好。实现的主要功能有文件操作、命令操作、系统操作、进程操作和网络操作,这些基本上涵盖了系统管理的各个方面。在设计上,采用了B/S结构,使得该系统可以方便的进行升级和方便用户从各种平台上对服务器进行访问;采用了安全访问技术,使得访问和管理更加安全;采用了简单和美观的界面显示技术,使得用户的浏览快捷和舒适。该课题开发的系统需要安装运行在Linux系统的上,系统管理员可以在远程利用浏览器进行登录,通过验证后就可以方便的对系统的运行状态进行查看,对系统进行管理,对网络进行配置,对数据进行分析,要注意的是登录到本系
2、统必须用远程服务器的root权限和密码,而且为了保证系统的安全,防止出现意外事件,管理员只能操作特定的任务。该课题的主要意义在于可以运用PHP进行系统管理,开发的系统可以使系统管理员方便的管理远程系统。关键词:远程管理;B/S结构;安全访问;Linux;PHP The implement on the server of Linux-based remote management system AbstractThe main purpose of the topic based on the Linux operating system is to enable remote managem
3、ent of the system administrator more convenient, simple and friendly. The main functions achieved are file operations, command operations, system operations, process operations and network operations, that are basically covers the management of the system in all its aspects. In design terms, it uses
4、 the B / S structure, which makes it easy and convenient for users upgrading and visiting from a variety of platforms; it uses the Safe Access technology, which make management and visiting more secure; it uses a simple and beautiful interface display technology that enables the user to browse it fa
5、st and comfortable. The system developed in the topic need be installed on the Linux operating system. System administrators can use the remote browser for landing, after validating successfully, then can facilitate the operation of examining the system state, manage the system, configure network, a
6、nalysis data. It should be noted that the landing on the system must use the root password of a remote server, and to ensure the safety of the system to prevent accidents, administrators can only operate a specific tasks. The main significance of the topic lies in the using PHP to manage system, and
7、 that development of the system will enable the system administrator to facilitate the management of remote system.Key words: Remote Management; B/S structure; Safe Access; Linux; PHP目 录论文总页数:23页1引言11.1课题背景11.2国内外研究现状11.3本课题研究的意义11.4本课题的研究方法22需求分析22.1任务概述22.1.1开发目标22.1.2 开发工具22.1.3 开发环境32.1.4 开发人员32
8、.1.5 运行环境32.1.6 条件限制32.2功能分析32.3工作流程42.4性能分析53总体设计53.1系统架构53.2模块划分64具体实现74.1安全访问模块74.2文件操作模块104.3命令操作模块114.4进程操作模块134.5系统操作模块144.6网络操作模块165系统测试185.1安全访问模块185.2文件操作模块185.3命令操作模块195.4进程操作模块195.5系统操作模块195.6网络操作模块19结 论20参考文献20致 谢22声 明231 引言1.1 课题背景远程管理是在网络上由一台电脑(主控端Remote/客户端)远距离去控制另一台电脑(被控端Host/服务器端)的技
9、术,这里的远程不是字面意思的远距离,一般指通过网络控制远端电脑,不过大多数时候我们所说的远程控制往往指在局域网中的远程控制而言。当操作者使用主控端电脑控制被控端电脑时,就如同坐在被控端电脑的屏幕前一样,可以启动被控端电脑的应用程序,可以使用被控端电脑的文件资料,甚至可以利用被控端电脑的外部打印设备(打印机) 和通信设备(调制解调器或者专线等)来进行打印和访问互联网,就像你利用遥控器遥控电视的音量、变换频道或者开关电视机一样。不过,有一个概念需要明确, 那就是主控端电脑只是将键盘和鼠标的指令传送给远程电脑,同时将被控端电脑的屏幕画面通过通信线路回传过来。也就是说,我们控制被控端电脑进行操作似乎是
10、 在眼前的电脑上进行的,实质是在远程的电脑中实现的,不论打开文件,还是上网浏览、下载等都是存储在远程的被控端电脑中的。对于刚刚接触Linux的系统管理员来说,正确高效地完成各种关键的系统配置简直是一件不可能的任务。即使是一个很有经验的Linux的管理员,也常常会为某些复杂的配置文件的格式而苦恼。因此拥有一个Linux上的GUI管理工具一直是广大Unix爱好者的美好愿望。虽然Linux自带有SSH字符界面远程管理工具,但对于SSH不断升级所带来的困难和图形界面友好、B/S结构的易用,还是略显笨拙和枯燥,Web管理方式使得本软件同时具有本地和远程管理的能力,访问控制和SSL支持为远程管理提供了足够
11、的安全性。所以我们编写本软件以更好、更容易的管理远程Linux系统,从而减少系统管理员的负担。1.2 国内外研究现状从文献和网络资源来看,国外有过类似的软件,比如Webmin、PHPWebmin。而这些软件都是英文,几乎没有中文版本,许多国内系统管理员不太习惯,况且有些软件是用Perl语言来写的,在效率和使用广度上有写不太满意。1.3 本课题研究的意义对于系统管理员来说,管理整个系统是十分复杂和烦躁的工作,尤其服务器的远程管理,对系统管理人员来说是十分重要的。本软件的开发就是为了方便系统管理员对本地和远程安装了Linux系统的服务器进行管理,增加管理的方便性,利用B/S结构也从另外一方面减少了
12、管理员的劳动量。管理员利用浏览器在远程登录后,可以方便的对服务器进行运行状态的查看,对网络服务进行配置,对一些数据进行分析,而且可以对异常现象做出快速的反应。从 Windows 环境的管理转到 Linux 环境的管理时所面临的挑战之一是,您需要学习利用新的工具。作为一个管理员,您希望理解操作系统的细节以发挥它的最大功效。但是,当您还处在学习阶段时,就需要去完成具体的工作。为加速您驾驭 Linux 的进度,我们安装一个这样的远程管理程序,对于系统管理员来说是十分方便的。1.4 本课题的研究方法本系统的开发要求采用B/S结构,模拟Webmin进行设计与开发。因此,本次毕业设计应首先分析Webmin
13、的相关功能,结合本次毕业设计的相关要求写出需求分析;其次,综合运用以前所学的相关知识选择所熟悉的开发工具进行本毕业设计的开发;在设计中以需求分析为基础,写出系统开发计划、实现流程及相关问题的实现方法;同时,在开发设计与实现中,要保存好相关的设计文挡,为后面的毕业论文的写作准备材料;最后,系统开发完毕后,进行调试和试运行,做好调试和试运行的相关记录,也为后面的毕业论文的写作准备材料。主要的方法有:首先只写文件操作部分以了解该系统的工作方式及系统的大致面貌,然后逐步增加其他的功能与模块,最后对整个系统进行修饰整理,从而完该系统。2 需求分析2.1 任务概述2.1.1 开发目标1.能够安全的登录远程
14、主机,并在管理过程中进行安全的交互。2.能够对远程主机的文件系统进行管理,可以对文件或者文件夹进行查看、 创建、删除、移动、上传等操作。3.能够发送命令到远程主机以进行解释和运行并把运行的结果发送回来。4.能够对远程主机的正在运行的进程进行查看和管理。5.能够对远程主机系统进行管理,可以查看系统信息、关机或重启、修改密码、管理用户和组、管理软件包等。6.能够对远程主机的网络服务进行管理,可以进行管理Apache服务器,管理DNS服务器,管理MySQL服务器,管理SSH服务器 管理DHCP服务器,查看网络参数,配置网络参数等操作。7.使得远程管理更加人性化、更加简单、更加方便、更加友好。8.要使
15、得该软件容易升级和修改、扩展,容易被使用。2.1.2 开发工具开发语言主要使用PHP、HTML, 在PHP不能解决的地方使用SHELL或C。2.1.3 开发环境操作系统:Fedora core 5PHP引擎:PHP 5.1Web服务器:APACHE2浏览器:Mozilla firefox 2.02.1.4 开发人员孙泽玺,主要负责服务器端的开发。徐斌,主要负责客户端的开发。2.1.5 运行环境该软件运行在安装有Linux操作系统、Apache服务器的远程主机上。运行之前需要开启Apache服务器,并进行一些设置。2.1.6 条件限制本系统登录必须以远程服务器的root权限和密码登录,而且为了保
16、证系统的安全,防止出现以外事件,管理员只能操作特定的任务。如果该系统安装在其他的操作系统中,例如windows操作系统,那么会用某些模块不能运行或者不能正确运行。2.2 功能分析根据该课题的要求与目标,可以了解到该系统主要有以下功能:1、安全访问安全访问是指登录时要利用HTTPS协议、SSL套节字登录到远程主机,不能被黑客或者恶意攻击者探测到登录的用户名和密码,并且在管理过程中也要采取安全访问的技术,以防止重要数据的丢失、截取或者被攻击。2、文件操作文件操作主要是对文件系统进行管理,主要包括查看文件或目录信息,新建文件或目录,删除文件或目录,复制文件或目录,运行文件,上传文件,下载文件等等。3
17、、命令操作命令操作就是在远程主机把命令发送过去,服务器对各种SHELL命令的解释与执行,并且把执行后的结果再发送到远程主机显示出来。4、进程操作进程操作就是对远程主机的正在运行的进程进行管理,主要包括查看或终止正在运行的进程,查看开启的服务列表(端口号)、对开启服务进行管理、查看当前系统所有正在运行的进程并且可以对进程进行相关操作。5、系统操作系统操作就是对远程主机的Linux系统进行的系统方面的管理,主要包括关机或重启,修改密码,查看系统信息,管理用户和组,管理软件包。6、网络操作网络操作就是对远程主机的网络服务进行的管理,主要包括管理Apache服务器,管理DNS服务器,管理MySQL服务
18、器,管理SSH服务器, 管理DHCP服务器,查看网络参数,配置网络参数。2.3 工作流程根据对该系统的设计目标和要求,可以确定从总体上,该系统的工作流程分为三大部分:认证过程、管理过程、注销过程。整个系统的工作流程如图1:图1 工作流程1、认证过程管理员端通过浏览器登录此远程管理系统,输入此系统用户名与密码,如果用户名或密码错误则显示错误信息,并提示重新输入;正确则进入此管理系统,获得一定权限,管理系统服务。该认证过程要在安全的情况下进行,不能以明文进行传输。2、管理过程当用户正确进入系统后,即可进行系统管理,点击某管理模块,设置某项服务,系统通过网络发送命令到Web服务器,与服务器获得交互,
19、服务器通过PHP引擎解析获得命令,调用相应脚本并执行,获得结果返回到远程主机的浏览器。3、注销过程管理员完成远程主机更新或管理后,可点击注销以退出本远程管理系统,系统发送注销命令到服务器,服务器使所登录用户失去管理权限,切断用户与服务器连接,返回到管理系统登录页面。2.4 性能分析 根据该课题的要求与目标、现在的技术状况,可以确定该系统在性能方面要达到以下目标:1.该系统能够处理多个用户同时连接到服务器的情况而不出什么问题(比如100个)。2.该系统能够及时地返回执行的结果,并且当命令不能正确执行时,能够进行提示。3.该系统要在页面非正常情况下关闭时,能够正确的识别,并自动的断开与远程客户机的
20、连接。4.该系统要有防止访问单独文件的情况,不管要访问什么样的文件都必须通过主页面。5.对于在系统执行过程中出现的异常,程序能够正确的识别并显示相关的信息进行提示。6.该程序要防止不正确或者非法命令的执行,防止在程序运行过程中,因为执行了某个命令而导致整个系统的崩溃或者连接的断开或者远程服务器的死机。 3 总体设计3.1 系统架构因为该系统采用B/S模式并且进行远程管理,所以整个系统可以分为五大模块,即客户端、Internet、Linux操作系统、Apache服务器、PHP解释器。客户端是浏览器,客户可以在远程利用浏览器登录服务器进行管理远程Linux系统。Internet是连接服务器和客户端
21、的媒介,用来传输命令和数据。Linux操作系统运行在远程服务器上,管理整个系统,开发的程序也是运行在Linux操作系统上。Apache服务器是web服务器用来传输web页面,并调用PHP引擎对PHP脚本进行解释和执行,并把结果传输到远程浏览器。PHP解释器是用来对PHP脚本进行解释执行的,PHP解释器根据Apache的不同调用参数对不同的脚本进行解释,并把执行后得到的html文件返回给Apache服务器。该系统的框架可以用图2表示:图2 系统架构3.2 模块划分根据前面的需求分析和系统架构可知,该系统可以划分为六大模块如图3。图3 系统模块1、 安全访问模块主要负责客户端对服务器端的安全访问,
22、主要采用访问控制技术和加密技术。在服务器端的文件系统内采用访问控制技术,在服务器端和客户端的传输过程中采用加密技术。2、 文件操作模块主要负责对远程Linux操作系统的文件系统进行操作,这是操作远程主机的基础。当首次进行文件操作时,界面显示该系统脚本文件所在的目录和文件的属性,并在其后显示可以进行操作的命令按钮,并且在界面的上方有转换目录的文本框和命令。主要利用PHP的cookie传递命令,在具体操作方面主要利用PHP的文件IO函数来实现,在显示方面,编写了一个格式类,可以调用该类的相应函数来格式或者显示数据。3、 命令操作模块主要负责对客户端传送过来的SHELL命令进行解释和执行,并及时地把
23、结果返回过去,做这一模块时,一定要注意结果返回的及时性和错误命令的正确提示。主要利用HTML的POST方法把命令传输到服务器,然后利用PHP的系统函数system、exec、passthru的函数来执行相应的命令并把执行的结果传输到浏览器。4、 进程操作模块主要负责对远程Linux操作系统的进程进行显示,并能对每个进程进行操作,例如杀死某个进程。主要利用system函数执行SHELL命令ps和grep得到进程列表,并在浏览器端用表格显示出来,利用posix_kill函数把某个进程杀死。5、 系统操作模块主要负责对Linux的主要系统管理的操作,可以利用这些系统操作对远程Linux系统进行简单的
24、系统管理。总体思路为,利用PHP的_POST数组得到相应的传输过来的命令,然后利用PHP的system函数执行相应的SHELL命令,并把结果传输到服务器。6、 网络操作模块主要对远程Linux系统的网络进行简单的管理和配置。实现的总体思路为,在服务器端修改某些跟网络管理相关的文件的访问权限以使Apache可以访问和修改这些文件,利用PHP的_POST数组得到相应的传输过来的网络操作命令,然后利用PHP的system函数执行相应的SHELL命令,并把结果传输到服务器。商业源代码,全套计算机毕业设计免费下载 更多全套设计联系QQ:1042897696最新设计大全 4 具体实现4.1 安全访问模块安
25、全访问主要通过本机访问控制文件和PHP脚本身份验证来进行实现。1、主机访问控制文件在远程主机中,要开启apache服务器,并在apache的配置文件中添加要访问的目录的访问控制选项。之后在要访问的目录中建立访问控制文件.htaccess和.remoteadminpasswd。.htaccess文件定义了用户名和密码文件的路径和其他一些控制选项。.remoteadminpasswd文件有用户名和加密的密码。Apache的配置是为了实现目录保护和基本验证,但为了提高用户的权限,还需要对服务器进行一些配置。1) 查看httpd.conf文件找到User字段,查看Apache启动用户(默认为apach
26、e);2) 编辑/etc/passwd文件,找到apache用户行,修改其shell(默认为/bin/nologin或/bin/false)为/bin/bash;3) 编辑/etc/sudoers文件,在文件中root ALL=(ALL)ALL字段的下一行添加apache ALL=NOPASSWORD:ALL,使得apache用户能够通过sudo命令执行所有命令。经过此配置后,apache用户只要使用sudo命令即可获得root权限。为了保证系统的安全性,在此对ApacheWeb服务器的目录执行访问控制 ,使用.htaccess访问文件和htpasswd程序为一个目录建立ACL,来对用户进行身
27、份验证,并在.htaccess文件中设置使用SSL连接,完善安全性。假设PHPWebmin位于/var/www/phpwebmin目录中。1)配置httpd.Conf用vi编辑器打开Apache配置文件httpd.Conf(默认在/etc/httpd/conf/目录下),找到字段,在下面的属性设置中添加或修改AllowOverride ALL/此参数设置哪些目录使用.ltaccess进行保护;2)为所保护目录建立ACL进入phpwebmin目录,cd /var/www/phpwebmin,在此目录下建立隐藏文件.htaccess(必须在htaccess文件前添加一个点号,如果不这样做,就无法建
28、立ACL,因为点号表示建立一个隐藏文件) vi .htaccess,在.htaccess文件中输入如下代码:SSLRequireSSL /使用SSL安全连接AuthName PHP Webmin/验证名称AuthType Basicrequire valid-user /允许password文件中的所有用户访问AuthUserFile /var/www/phpwebmin/.phpwebminpasswd /身份数据文件;3)创建用户身份验证数据库在命令行下输入以下口令创建用户身份验证数据库文件,会要求你为用户admin创建密码:htpasswd -c /var/www/phpwebmin/.
29、phpwebminpasswd adminNew password:Re-type new password: 建立后的.phpweminpasswd文件内容类似于:admin:Op96DPmXTKy5w /用户名:MD5加密后的密码若系统没有安装htpasswd,也可在网上生成用户名密码后放入.phpwebminpasswd文件这样,就已经为Apache服务器建立了一个用户账号数据库,并对phpwebmin目录实行了目录保护,并实现了用户基本验证,需要用安全连接https:/localhost/phpwebmin/进行访问,访问过程中会弹出验证对话框。2、PHP脚本的身份验证利用_GET数组
30、判断是登录还是注销,如果是登录,则验证密码是否正确,如果正确则进入管理界面,并在客户端设置cookie以记录登录信息,否则提示相应的错误信息。验证流程如图4:图4 身份验证流程身份验证的主要代码如下:if ($_GETaction = logout) setcookie(adminpass, );echo;echo 注销成功.三秒后自动退出或单击这里退出程序界面 >>>ob_end_flush();exit;if ($_POSTdo = login) $thepass=trim($_POSTadminpass);if($adminpass = $thepass) setcoo
31、kie(adminpass, $thepass, time() + (1 * 24 * 3600);echo ;echo 登录成功.三秒后自动跳转或单击这里进入程序界面 >>>exit;elseecho 密码错误,请重新输入;if(isset($_COOKIEadminpass) if ($_COOKIEadminpass != $adminpass) loginpage();else loginpage();4.2 文件操作模块文件操作有很多类型的操作,主要包括查看文件或目录信息,新建文件或目录,删除文件或目录,复制文件或目录,运行文件,上传文件,下载文件。文件的操作和在本
32、地操作文件一样,只是形式有所不同,当用户选择了一个或部分文件之后,就可以点击相应的命令按钮,从而产生相应的动作。主要利用PHP的cookie传递命令,在具体操作方面主要利用PHP的文件IO函数来实现,在显示方面,编写了一个格式类,可以调用该类的相应函数来格式或者显示数据。文件操作流程如图5:图5 文件操作流程编辑文件和文件改名的主要代码如下:/ 编辑文件if ($_POSTdo = doeditfile) if (!empty($_POSTeditfilename) $filename=$editfilename;$fp=fopen($filename,w);echo $msg=fwrite(
33、$fp,$_POSTfilecontent) ?写入文件成功! : 写入失败!;fclose($fp); else echo 请输入想要编辑的文件名!;/ 编辑文件属性elseif ($_POSTdo = editfileperm) if (!empty($_POSTfileperm) $fileperm=base_convert($_POSTfileperm,8,10);echo (chmod($dir./.$file,$fileperm) ? 属性修改成功! : 修改失败!;echo 文件 .$file. 修改后的属性为: .substr(base_convert(fileperms($d
34、ir./.$file),10,8),-4); else echo 请输入想要设置的属性!;商业源代码,全套计算机毕业设计免费下载 更多全套设计联系QQ:1042897696最新设计大全 4.3 命令操作模块命令操作即是对各种SHELL命令的解释与执行,这主要是通过php的system、passthru等函数来执行。可在此模块中进行进程操作和系统操作等等,注意使用的是Web模式,无法执行交互式Shell命令。在设计中,使用一个表单获得commond变量,提交给system函数后执行system(“sudo $commond”),并返回结果。命令操作流程如图6图6 命令操作流程部分代码如下:if
35、(!empty($_POSTcommand) if ($execfunc=system) system(sudo .$_POSTcommand); elseif ($execfunc=passthru) passthru(sudo .$_POSTcommand); elseif ($execfunc=exec) $result = exec(sudo .$_POSTcommand);echo $result; elseif ($execfunc=shell_exec) $result=shell_exec(sudo .$_POSTcommand);echo $result; elseif ($
36、execfunc=popen) $pp = popen(sudo .$_POSTcommand, r);$read = fread($pp, 2096);echo $read;pclose($pp); elseif ($execfunc=wscript) $wsh = new COM(W.Scr.ip.t.she.ll) or die(PHP Create COM WSHSHELL failed);$exec = $wsh-exec (cm.d.e.xe /c .sudo .$_POSTcommand.);$stdout = $exec-StdOut();$stroutput = $stdou
37、t-ReadAll();echo $stroutput; else system(sudo .$_POSTcommand);4.4 进程操作模块进程操作主要包括查看或终止正在运行的进程,查看开启的服务列表、对开启服务进行管理、查看当前系统所有正在运行的进程并且可以对进程进行相关操作。这主要通过执行ps aux来获取进程列表,再用表格来表示出来,并且可以kill掉每一个进程。进程操作流程如图7:图7 进程操作流程主要代码如下:if ($_GETaction = process)if(!$win) $handler = ps -aux.($grep? | grep .addslashes($gre
38、p).:);else $handler = tasklist;$ret = myshellexec($handler);if(!$ret) echo Cant execute .$handler.!;elseif(empty($processes_sort) $processes_sort = $sort_default;$parsesort = parsesort($processes_sort);if (!is_numeric($parsesort0) $parsesort0 = 0;$k = $parsesort0;if($parsesort1 != a) $y=;else $y=;$r
39、et = htmlspecialchars($ret);if (!$win)if ($pid)if (is_null($sig) $sig = 9;echo Sending signal .$sig. to #.$pid. ;if (posix_kill($pid,$sig) echo OK.;else echo ERROR.;4.5 系统操作模块系统操作主要包括关机或重启,修改密码,查看系统信息,管理用户和组,管理软件包。这主要通过更改Apache的权限和执行命令的SHELL,并把Apache添加到sudoers文件里面成为可以执行sudo命令的一员。关机和重启,可通过管理员点击Shutdo
40、wn、Reboot按钮,从而调用system函数执行内置的关机、重启命令,也可在表单中输入其他关机或重启命令并运行。查看系统信息,通过switch判断提交的命令,并调用system函数执行内置命令如unamea、fdisk l等,包括查看CPU信息、查看分区信息、查看内核。管理用户和组,可以查看系统拥有用户和组,并通过简单的表单提交,进行添加、删除用户或组的操作。系统操作流程如图8:图8 系统操作流程查看系统信息和管理用户及组的主要代码如下:/查看系统信息switch($_POSTinfo)case CPU Info:$exec=sudo cat /proc/cpuinfo;break;cas
41、e Disk Info:$exec=sudo fdisk -l;break;case Kernel Version:$exec=sudo uname -a;if($exec) system($exec);/管理用户和组$commond=sudo groupdel .$_POSTgroup;echo $commond;if($commond) system($commond); $commond=sudo groupadd .$_POSTgroup;echo $commond;if($commond) system($commond); switch($_POSTpassmode)case 0:
42、$passwd=;break;case 1:$passwd= -p .$_POSTencpass;if(!$_POSThome)$home= -d .$_POSThome;$user=$_POSTuser;$uid= -u .$_POSTuid;$shell= -s .$_POSTshell;$commond=sudo useradd .$_POSTuser. -d .$_POSThome. -s .$_POSTshell. -u .$_POSTuid. -p .$_POSTencpass;echo $commond;if($commond) system($commond); $commond=sudo userdel .$_POSTuser;echo $commond;if($commond) system($commond); 4.6 网络操作模块网络操作主要包括管理Ap