基于PHP的Linux远程管理系统客户端

  1. 引言

    1.  背景

LAMP (Linux + Apache + MySQL + PHP/Perl) 近几年来发展迅速,已经成为Web 服务器的事实标准。这个术语代表了 Linux 平台上的 Apache 网站服务器; MySQL 数据库以及PHP 、Perl编程语言的结合。LAMP 不仅会成为企业接入互联网,也应该会在企业内部网络建设中大有作为。提到开放源代码,你马上就会意识到 Linux操作系统。Linux 是开放源码软件的代表,目前有越来越多的网站把他们的 Web 服务器架构在 Linux操作系统之上,因为 Linux 能够提供健壮的 Web 应用。LAMP 所代表的不仅仅是开放源码,它更是开发和实施高性能Web应用的重要平台。

    1.  当前现状

随着互联网的高速发展以及Linux企业应用的成熟,Linux被广泛应用于服务器领域,如何实现Linux的远程管理成为网络管理员的首要任务。接触过远程操作的朋友,肯定会立即说出若干个相关windows操作系统软件(PCanywhere、Netop Remote Control),可是Linux下软件都有哪些呢?我们应该如何选择适合自己的远程操作软件呢?这对于一些甚少接触远程操作的朋友而言无疑是个关注的话题。

Linux操作系统源于Unix,以其精小灵活稳定的特性,加上其源代码完全公开,几乎秉承了Unix系统的所有优点,赢得了很多用户的青睐,但是Linux的管理操作界面是单一的命令行方式。

    1.  选题意义

不知Linux服务器的系统管理员有没有过人不在主机前,却又必须掌握主机信息的经验?比如服务器在成都,偏偏管理员却出差到北京去了,这时该怎么办呢?想说找人来帮你到服务器面前看一下,又担心管理员密码给了别人会出状况;想要通过Telnet或者ssh这类远程登录的方式来达到远程控制的目的,可偏偏手边又没有client程序可用,或者当初为了安全性考虑,完全没有在服务器上安装可供远程控制的server,这时候真是心有余力不足啊。

而且,对于刚刚接触Linux的系统管理员来说,正确高效地完成各种关键的系统配置简直是一件不可能的任务。即使是一个很有经验的Linux的管理员,也常常会为某些复杂的配置文件的格式而苦恼。本软件的开发主要是为了方便网络系统管理员对本地和远程安装了Linux系统的服务器进行管理,增加管理的方便性,利用B/S结构也从另外一方面减少了管理员的劳动量。管理员利用浏览器在远程登录后,可以方便的对服务器进行运行状态的查看,对网络服务进行配置,对一些数据进行分析,而且可以对异常现象作出快速的反应。

    1.  设计模式

图1 设计模式

本系统的开发要求采用B/S结构,如图1所示。本系统模拟Webmin进行设计与开发。因此,首先了解Webmin的相关功能,结合本次毕业设计的相关要求写出需求分析;其次,综合运用以前所学的相关知识选择所熟悉的开发工具进行本毕业设计的开发;在设计中以需求分析为基础,写出系统开发计划、实现流程及相关问题的实现方法;最后,系统开发完毕后,进行调试和测试,做好调试和测试的相关记录。

整个管理系统中,用文件操作模块作为突破口,首先设计整体页面,再写出文件操作部分以深入了解该系统的工作方式及系统的大致面貌,然后设计Shell命令解释与执行部分操作和进程操作部分,继而逐步增加其他的功能与模块,最后对整个系统进行修饰整理,从而完成了该系统。

  1. Linux远程管理分析

    1. Linux操作系统

      1. Linux 究竟是什么?

Linux 操作系统是UNIX 操作系统的一种克隆系统。它是一位赫尔辛基大学学生 Linus Torvalds(Linux 是 Linus's UNIX 的缩写)创造的,它诞生于1991 年的10 月5 日(这是第一次正式向外公布的时间)。借助于Internet 网络,并经过全世界各地计算机爱好者的共同努力下,Linux现已成为今天世界上使用最多的一种UNIX 类操作系统,并且使用人数还在迅猛增长。Linux 操作系统的诞生、发展和成长过程始终依赖着五个重要支柱:UNIX 操作系统、MINIX 操作系统、GNU 计划、POSIX 标准和Internet 网络。

用最简单的话说,Linux 是一个操作系统。Linux 本身实际上只是其内核;它实现了多任务和多用户功能,管理硬件,分配内存并且使应用程序能够运行。

      1. 学习Linux

您希望用 Linux 系统做什么将决定您想要什么样的 Linux 系统,以及在开始使用该系统之前要对它有多深的理解。

Linux 是进行内核研究、学习 UNIX 或学习编程的绝佳学习平台;有许多工具和应用程序可用来玩游戏、进行桌面排版或者只是闲来无事发一下电子邮件和浏览 Web。它也是开放和封闭式生产系统的绝佳平台,因为可自由地对其进行最大程度的定制。Linux 可以作为各种事物的平台,从中间件到嵌入式计算和群集,从并行超级计算机到小玩意儿。IBM 已经参与了制造在 Linux 上运行的收银机的项目,以及制造 Linux 手表的项目。其他开发人员已经在手机和Sony PlayStation上使用了 Linux。

如果完全不了解 Linux,或者正在使用 Linux 作为桌面操作系统,那么您至少需要学习一些有关系统管理和安全性的基本知识。

Linux 是作为编程平台的绝佳选择。它符合GCC,这意味着您可以使用GNU 项目出色的编程与调试工具套件 —— 绝对免费,而且享有GNU GPL保证的所有自由。

      1. Linux远程管理

远程控制是在网络上由一台电脑(主控端Remote/客户端)远距离去控制另一台电脑(被控端Host/服务器端)的技术,这里的远程不是字面意思的远距离,一般指通过网络控制远端电脑,不过,大多数时候我们所说的远程控制往往指在局域网中的远程控制而言。当操作者使用主控端电脑控制被控端电脑时,就如同坐在被控端电脑的屏幕前一样,可以启动被控端电脑的应用程序,可以使用被控端电脑的文件资料,甚至可以利用被控端电脑的外部打印设备(打印机)和通信设备(调制解调器或者专线等)来进行打印和访问互联网,就像你利用遥控器遥控电视的音量、变换频道或者开关电视机一样。

      1. 远程管理方法

目前主要的应用于Linux的远程连接技术大致分为以下三种:

  1. 基于命令行的方式
  • Linux命令: telnet。telnet在linux和windows下均可用,只要打开相应的服务即可。telnet的所有数据在网络上都是明文传输,所以也有安全隐患,在实际的生产系统中也基本上废弃不用,而转用更安全的ssh。但是在某些场合,如内部局域网络, telnet 还是有用武之地的。ssh和telnet类似,但是数据在网络上是加密后再传输的。
  • rlogin、rsh等r系列命令。因为有较大的安全隐患,所以现在基本上废弃不用。
  • 基于ssh的客户端软件。Secure SSH 或PUTTY等客户端工具通过ssh服务来实现Windows下管理Linux服务器的,这些客户端工具配置使用简单,但是它们都无法启动窗口服务的程序或进程,也无法达到远程桌面控制。

说明:命令行的管理方式适合进行初始化、网卡配置等基本操作,不适合做丰富的管理功能。

  1. Web管理方式

Web管理方式是另一种管理工具。这种方式提供了简单的管理界面,适合那些功能不是很多的管理工作。Linux下有一个著名的基于Web的管理工具Webmin,而PHP Webmin的设计初衷就是参照利用Webmin来实现对服务器的简单管理。使用基于Web的管理方式,简单明了操作方便,适合简单的管理工作。

  1. 基于管理端软件的图形界面方式

基于管理端软件的图形界面方式一般需要完成对系统的配置、管理和监控。图形的管理方式直观,是一种重要的管理工具,适合进行复杂的配置,连接多台服务器,同时支持丰富的审计和日志的功能。

      1. Webmin初解

对于刚刚接触Linux的系统管理员来说,正确高效地完成各种关键的系统配置简直是一件不可能的任务。即使是一个很有经验的Linux的管理员,也常常会为某 些复杂的配置文件的格式而苦恼。因此拥有一个Linux上的GUI管理工具一直是广大Linux爱好者的美好愿望。这里将介绍的Webmin就是这样一个基于Web的Linux管理工具。

  1. 什么是Webmin?

简单地说,Webmin是一个基于Web的Linux系统管理工具,系统管理员Webmin的各种管理功能并完成相应的管理动作。目前Webmin 支持绝大多数的Linux系统,这些系统除了各种版本的Linux以为还包括:AIX、HPUX、Solaris、Unixware、Irix和 FreeBSD等。

  1. Webmin安装

Webmin使用perl脚本编写,安装Webmin需要先安装perl5.0.6或以上版本。如果目标系统上没有安装perl的话,需要到http://www.cpan.org下载并安装perl-for- linux,同时需要安装常用的perl模块;如果你需要Webmin支持SSL,你还需要安装OpenSSL和perl模块。

Webmin的安装很简单,下载webmin-*.**.tar.gz后用tar -xvzf webmin-*.**.tar.gz解压,运行安装脚本setup.pl,安装过程会询问Webmin配置文件目录、Log目录和系统的监听端口(缺省是10000),还会要求你设置管理员密码。安装脚本还会把Webmin安装成系统的守护进程,在开启系统时自动启动。重新启动系统,访问http://localhost:10000,如果出现了Webmin的登录界面就说明安装成功了。

所有的管理功能都是以模块的形式插入到Webmin中的。Webmin对形形色色的管理模块进行了分类。主要的类别有:Webmin、系统、服务、硬件和 其他。当你成功登录到达Webmin的首页时,这些类别将以不同的属性页展现在你的面前。

      1. PHP Webmin - A simple webmin on PHP

PHP Webmin是一个远程管理工具,它参照Webmin,使用PHP来实现基于Web的对系统的简单管理,使用简单的GUI管理工具,实现对Linux服务器的远程管理,达到帮助系统管理员、减轻系统管理员负担的目的。所以,可以把PHP Webmin说成是一个构建在PHP上的简单Webmin —— A simple webmin on PHP。

  1. 需求分析

    1. 任务概述

      1. 目标

本系统的开发主要是为了方便网络系统管理员对本地和远程安装了Linux系统的服务器进行管理,增加管理的方便性,利用B/S结构,减少了管理员的劳动量。管理员利用浏览器在远程登录后,可以方便的对服务器进行运行状态的查看,对网络服务进行配置,对一些数据进行分析,并对异常现象做出快速的反应。

本系统的目标是完成一个基于WEB的Linux上的GUI管理工具,给Linux系统管理员提供帮助,协助Linux系统管理员正确高效的完成各种关键的系统配置,如远程的文件操作、Shell命令执行、进程操作、系统操作、各种网络服务配置等等。管理员通过浏览器访问次管理系统的各种管理功能并完成相应的管理动作;要求此管理系统同时具有本地和远程管理的能力,要求注意一定的安全设置,保证足够的安全性,在完成系统基本功能的前提下,注意一定的扩展和伸缩性,要求亲近的管理界面和易用的操作。

  1. 主要任务:

运用所学知识,开发基于Linux的远程管理系统,以方便网络系统管理员在客户端对本地或远程主机进行管理。本系统要求实现的部分功能有:文件操作、命令操作、进程操作、系统操作、网络操作。

  1. 相关要求:

1) 本系统的开发要求采用B/S结构,选用所熟悉的开发工具及开发环境进行本系统的设计与开发。

2) 本设计要求实现远程管理的功能,界面要简洁实用,功能要完善。

      1. 工作模式

图2 系统工作模式

在系统的性能方面,B/S模式具有异地浏览和信息采集的灵活性,任何时间、任何地点、任何系统,只要可以使用浏览器上网,就可以使用B/S系统的终端,B/S模式还具有管理维护集中方便、用户使用简单、跨平台等优点。

因此本系统采用B/S模式(如图2),方便系统管理员在Linux/Win等各种系统中通过浏览器对Linux主机进行远程管理。

运行环境

  • 硬件环境:

A.PC机或服务器一台;

B.内存256M以上(推荐512M);

C.PC机需带显示器一个。

  • 软件环境:

A.Linux Redhat 9.0以上Linux操作系统;

B.PHP4或PHP5环境;

C.Apache服务器,安装ssl模块。

编程语言

PHP是一种标准的,多用途的,面向对象的脚本语言,此系统中主要使用PHP脚本语言来进行具体功能实现,使用html与javascript来完成管理系统页面设计。

用户特点

本系统针对的是Linux系统管理员,需要管理员对Linux有一定程度了解。系统管理员需要理解服务器的远程管理,会使用Linux常用命令,即可使用本系统对Linux服务器监视系统状态和进行诸如远程关机、重启等操作。本系统能辅助系统管理员更好的管理Linux服务器。

    1. 具体需求

      1. 功能需求

对Linux系统的管理,大致包括文件的管理,进程的监控,对系统信息的监控,对系统用户和组的管理,对软件包组的管理,对网络信息的监控,对网络服务的配置和管理等等方面。作为远程管理系统,应包含上述功能,同时还可设计一个可远程运行系统命令的shell。经过分析,此系统主要包含功能应为:

文件操作功能、系统命令运行功能、进程监控功能、系统信息浏览功能、用户与组管理功能、软件包管理功能、网络监控功能、网络服务配置与管理功能等等。

由于此系统是对服务器进行远程管理,涉及到服务器关键系统命令及敏感数据,因此在登录时采用SSL安全连接,并进行目录访问控制。

系统流程

图3 系统流程

如图3所示,此系统工作流程分为三个部分:认证流程、管理流程、注销流程。

  1. 认证流程

管理员端通过浏览器登录此远程网络服务管理系统,输入此系统用户名与密码,用户名或密码错误则需重新输入;正确则进入此管理系统,获得一定权限,管理系统服务。

  1. 管理流程

当用户正确进入系统后,即可进行系统管理,点击某管理模块,设置某项服务,系统通过网络发送命令到Web服务器,与服务器获得交互,服务器通过PHP引擎解析获得命令,调用相应脚本并执行,获得结果返回到远程主机。

  1. 注销流程

管理员完成远程主机更新或管理后,可点击注销以退出本远程管理系统,系统发送注销命令到服务器,服务器使所登录用户失去管理权限,切断用户与服务器的连接,返回到管理系统登录页面。

  1. 总体设计

    1. 模块划分与功能设计

通过对系统的需求分析,把此Linux远程管理系统分为五个模块(如图4):

  • 文件操作模块;
  • 命令操作模块;
  • 进程操作模块;
  • 系统操作模块;
  • 网络服务操作模块。

五个模块的功能配合,再加上在对Apache服务器的特殊配置,整体实现了对Linux服务器的远程管理与基本信息监控。

图4 系统模块

在整个系统设计中,本人完成里命令操作模块与系统操作模块,其余模块由合作者孙泽玺设计完成。

功能模块的初步设计

1、文件操作

在文件操作模块中可以进行查看文件或目录,新建文件或目录,删除文件或目录,复制文件或目录,编辑文件,上传文件,下载文件等等操作,在此文件操作模块中需对服务器文件或目录属性有一定设置;

2、命令操作

对各种SHELL命令的解释与执行,可执行常用Linux命令,可在此模块中进行进程操作和系统操作等等,注意使用的是Web模式,无法执行交互式Shell命令;

如图5所示,在设计中,使用一个表单获得commond变量,提交给system函数后执行system(“sudo $commond”),并返回结果。

图5 命令操作设计流程

3、进程操作

查看或终止正在运行的进程,查看开启的服务列表(端口号)、对开启服务进行管理、查看当前系统所有正在运行的进程并且可以对进程进行相关操作;

4、系统操作

系统操作中包括:关机或重启、查看系统信息、管理用户和组、管理软件包(如图6);

图6 系统操作模块结构图

如图7,系统操作模块的总体设计跟命令操作中类似,使用表单获取所需运行命令或参数,再提交给system函数执行并返回结果:

图7 系统操作总体流程

  1. 关机和重启,可通过管理员点击Shutdown、Reboot按钮,从而调用system函数执行内置的关机、重启命令,也可在表单中输入其他关机或重启命令并运行;
  2. 查看系统信息,通过switch判断提交的命令,并调用system函数执行内置命令如uname –a、fdisk –l等,包括查看CPU信息、查看分区信息、查看内核;
  3. 管理用户和组,可以查看系统拥有用户和组,并通过简单的表单提交,进行添加、删除用户或组的操作,详见图8;

图8 用户/组管理总体设计图

  1. 管理软件包,可以查看系统所有已安装软件包,并输入关键字搜索查看特定软件包,以及根据搜索出的软件包名进行软件包删除操作;

5、网络服务操作

  • 管理Apache服务器,查看并配置Apache服务器状态与参数;
  • 管理DNS服务器,查看并配置DNS服务器参数;
  • 管理MySQL服务器,通过Web进行Mysql服务器的备份等;
  • 管理DHCP服务器,查看网络状态,配置网络参数。
  1. 详细设计

    1. 服务器设计

此管理系统的目的是对Linux进行远程管理,则在管理过程中需要对Linux系统配置文件进行读取,或者运行系统命令,访问系统敏感数据等。而在Linux系统中,默认的Apache用户权限是无法访问管理系统所需文件,无法运行关键系统命令的,因此,需要对Apache服务器进行一些特殊配置,提升其权限,并且需要考虑安全问题,对用户的认证问题等等。在本系统中,使用SSL连接,运用Apache基本验证来认证用户;通过对Apache服务器进行特殊配置,使其获得root权限,完成远程管理Linux服务器的目的。

      1. 更改Apache配置

为了保证系统的安全性,在此对Apache Web服务器的目录执行访问控制 ,使用.htaccess访问文件和htpasswd程序为一个目录建立ACL,来对用户进行身份验证,并在.htaccess文件中设置使用SSL连接,完善安全性。

假设PHPWebmin位于/var/www/phpwebmin目录中。

  • 配置httpd.conf

用vi编辑器打开Apache配置文件httpd.Conf(默认在/etc/httpd/conf/目录下),找到<Directory "/var/www">字段,在下面的属性设置中添加或修改

AllowOverride ALL     //此参数设置哪些目录使用.htaccess进行保护;

  • 为所保护目录建立ACL

进入phpwebmin目录,cd /var/www/phpwebmin,在此目录下建立隐藏文件.htaccess(必须在htaccess文件前添加一个点号,如果不这样做,就无法建立ACL,因为点号表示建立一个隐藏文件) vi .htaccess,在.htaccess文件中输入如下代码:

SSLRequireSSL  //使用SSL安全连接

AuthName "PHP Webmin"  //验证名称

AuthType Basic

require valid-user  //允许password文件中的所有用户访问

AuthUserFile /var/www/phpwebmin/.phpwebminpasswd //用户身份数据库文件;

  • 创建用户身份验证数据库

在命令行下输入以下口令创建用户身份验证数据库文件,会要求你为用户admin创建密码:

htpasswd -c /var/www/phpwebmin/.phpwebminpasswd admin

New password:

Re-type new password:

建立后的.phpwebminpasswd文件内容类似于:

admin:Op96DPmXTKy5w  //用户名:MD5加密后的密码

若系统没有安装htpasswd,也可在网上生成用户名密码后放入.phpwebminpasswd文件。

这样,就已经为Apache服务器建立了一个用户账号数据库,并对phpwebmin目录实行了目录保护,并实现了用户基本验证,需要用安全连接https://localhost/phpwebmin/ 进行访问,访问过程中会弹出验证对话框。

      1. 服务器特殊配置

Apache的配置是为了实现目录保护和基本验证,但为了提高用户的权限,还需要对服务器进行一些配置。

  • 查看httpd.conf文件找到User字段,查看Apache启动用户(默认为apache);
  • 编辑/etc/passwd文件,找到apache用户行,修改其shell(默认为/bin/nologin或/bin/false)为/bin/bash;
  • 编辑/etc/sudoers文件,在文件中root ALL=(ALL)ALL字段的下一行添加apache ALL=NOPASSWORD:ALL,使得apache用户能够通过sudo命令执行所有命令。

经过此配置后,apache用户只要使用sudo命令即可获得root权限。

    1. 命令操作模块设计

      1. 功能描述

对命令的解释与执行,执行常用Linux命令,通过前面的服务器配置后,使用户在浏览器中用户系统root权限,执行系统命令,注意使用的是Web模式,无法执行交互式Shell命令。

后续代码实现就不细说了,有需要的可评论或者私聊,源代码在个人主页公开

  • 26
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值