论文部分内容阅读
【摘 要】主流的的网络硬盘实现方式有多种,但没有使用FTP作为基础,在Web页面中进行文件的管理的解决方案,基于开源软件的网络硬盘系统,是实现网络硬盘系统的一种新思路,新技术,采用开源的FTP软件作数据存储,采用数据库MySQL对相关信息进行管理,使用Perl语言编程,使用户能够方便的在Web页面中进行数据的管理,系统可以安全可靠的提供网络硬盘服务,并易于后续的研发与扩展。
【关键字】网络硬盘;开源 Proftpd MySQL 配额
网络硬盘是利用网络技术和Web技术向网络中的用户提供文件存储、共享、访问、备份等功能的一种网络存储技术。随着校园网信息化建设的推进,校园网用户在办公和教学活动中,随时有大量的数据资源产生或流通,如教学课件、档案文件、数据报表、多媒体素材等等,而且这些数据资源需要频繁的使用和共享。
现在大部分校园网用户在传输数据、存储数据时,使用U盘或者某些商业网站的网盘服务。使用U盘,在多媒体教室、机房内的公共计算机中容易感染病传播病毒,U盘便于携带但容易遗失,因质量不好或使用不当致使物理损坏而使数据失效,且不能将数据同时共享给多人。使用电子邮件中的网络存储或者一些商业网站的网盘,容易注册,操作界面友好,存储比较方便,但是有很多不足:①免费用户的可用空间较小,不能满足用户的需求,如需要加大空间则需要付费等条件;②在进行文件存储或传输时,速率不稳定、比较慢;③有文件格式和文件大小的限制,用户使用受到约束,如很多网盘限制像安装程序、视频、音频文件等,而这些有可能是教学需要的;④文件有保存时间限制,在一定时间后数据会被删除;⑤
在校园网中建立网络硬盘系统,具有容量大、可靠性高、传输速度快的特点,既为校园网用户的数据资源管理提供了方便,也推进了信息化的发展。而在FreeBSD平台中建立基于开源软件的网络硬盘,可以解决商业网络硬盘的不足之处,拥有更多优点:①使用开源软件安全性更高,性能更稳定,不易传播病毒;②使用开源软件完全免费,平台建设不需要花费大量资金,服务运行也不会对校园网用户产生额外费用;③开源软件代码公开,可结合自身情况进行配置或进行系统二次开发,进行后续功能的扩展,不依赖于商业公司。
1、系统功能设计
1.1系统功能分析
网络硬盘的系统功能针对使用者身份分为两个功能部分:一是用户使用功能部分,用户通过此功能部分对个人存储的数据进行管理;二是系统管理员管理部分,系统管理员通过此功能部分对系统中的共享文件进行管理,对系统中的用户、组进行管理。
①用户使用网络硬盘,首先在系统Web页面中注册并登录,登录时输入的口令经过Hash算法加密,与数据库中存储的口令密文匹配,登录后可以更改个人登录口令,可以对个人空间内所存储的数据资源进行管理操作,可以在个人空间中建立、删除、查看、重命名文件夹,对于文件可以上传、下载、查看、删除、移动到其他文件夹中,可以查找或备份指定目录中的某些文件或文件夹,可管理自身共享的文件和文件夹,把文件共享到同组用户或所有用户,查看账号可用空间配额、已使用空间大小等统计信息。未注册的用户可以查看并下载针对匿名用户的共享文件。
②系统管理员可登陆Web管理界面对系统及系统中的用户、用户组进行管理,可以新建、删除用户,新建、删除用户组,可以查看、修改用户或用户组的空间配额,可以查看用户的账号使用状态,可以查询、管理共享文件和文件夹,还可以查看服务器状态,开启、关闭服务或重新启动服务。
1.2系统功能模块
根据网络硬盘的系统功能分析,可以划分为登陆控制、文件管理、系统管理三个功能模块。
①登陆控制模块 包括用户注册申请,用户登录审核,用户更改登陆密码。
②文件管理模块 文件管理包括文件上传、下载、删除、重命名、搜索;文件夹管理包括文件夹建立、删除、重命名;备份管理包括选择备份位置,压缩备份、恢复备份;共享管理包括文件、文件夹共享,取消文件、文件夹共享,文件、文件夹共享到同组,文件、文件夹共享到所有用户;共享浏览包括浏览其他用户共享文件,浏览同组用户共享的文件;搜索其他用户共享文件。
③系统管理模块 用户管理包括用户申请审核,添加新用户,删除用户,更改用户所属组别;用户组管理包括添加新用户组,删除用户组,删除组中用户,转移用户到其他用户组;磁盘配额管理包括查看用户、组配额及状态,更改用户、组配额类型及限制值;共享管理包括共享文件浏览、查找,共享文件删除;服务管理包括查看服务状态,服务停止,服务开始,服务暂停。
2、系统环境及结构
系统建立在FreeBSD平台上,使用FreeBSD 8.4-RELEASE作为操作系统,它是目前最新的Legacy Releases,开源ftp服务器软件Proftpd 1.3.0作为数据存储的文件服务器,并加载mod_sql和mod_quotatab模块,mod_sql模块使Proftpd支持sql的认证,它包含的mod_sql_mysql表示sql认证的数据库是mysql,它是mod_sql模块的细化,另外我们需要使用mod_sql_password模块,这个模块允许mod_sql模块认证的口令支持MD5,SHA1,SHA2等算法,mod_quotatab模块用来做磁盘限额控制,它包含的mod_quotatab_sql模块表示使用SQL管理磁盘限额的信息。系统数据库使用MySQL 5.5,所有的用户、组信息以及用户、组的磁盘配额信息都存储在MySQL中。考虑到系统平台的安全,这里使用Proftpd的虚拟用户功能,多个存储在数据库中的用户,在操作系统上仅对应为一个系统用户,并且不能够通过shell登陆操作系统。开源软件Apache是世界上使用最多的Web服务器软件,可以运行在几乎所有的系统平台上,这里使用Apache2.2.24作为Web服务器,加载mod_perl模块能够更快速的处理Perl所编写的CGI,而不需要额外增加系统的开销,这里需要加载与Apache2.2.X版本对应的mod_perl2.0模块,最新版本是2.0.7。使用Perl编写前台用户服务和后台系统管理服务CGI程序,直接通过mod_perl解释生成Web页面。用户和管理员在连接网络的情况下,就可以通过Web浏览器登陆进入系统,完成各自的应用。 3、数据库设计
MySQL数据库主要存储用户、组及相关的配额信息,现设计数据库包含4个表,users表、groups表、quotalimits表、quotatallies表。
用户组分为系统用户组和用户组两类,系统用户组仅有一个,成员为网络硬盘系统的管理员,用户组可根据需要设置多个。用户和用户组信息分别存放在users表和groups表中,包括userid用户名,password登陆口令(加密后的口令),uid在系统平台中对应的用户id,gid在系统平台中所属组的组id,homedir用户的目录,也就是用户存储数据的目录,shell用户登录系统后使用的命令解释器。quotalimits表中记录了针对用户或用户组关于磁盘限额的配置信息,表中包括quota_type配额类型,可以设置单个用户,也可以设置一个用户组;limit_type限制类型,有soft和hard两种;bytes_in_avail能够上传最大字节数,也就是用户存储空间,bytes_out_avail用户可以从服务器下载的最大字节数,是累计计算的;bytes_xfer_avail用户可以与服务器之间传输的最大字节数,包括上传和下载; files_in_avail总共能上传文件的数目,files_out_avail能从服务器上下载文件的总数目,files_xfer_avail总共可传输文件的数目,包括上传和下载。quotatallies表中存放每个用户当前配额使用情况统计信息,包括bytes_in_used已使用的字节数,bytes_out_used已下载的字节数,bytes_xfer_used已传输的字节数,包括了上传和下载,files_in_used用户目录现有文件总数, files_out_used已下载文件数, files_xfer_used已传输文件数。
4、Web程序设计
可以作为Web车需设计的语言有多种,Perl语言是常用的CGI编写语言,支持快速开发,有强大的字符串操作符和正则表达式,与系统接口容易且有自己的文件操作函数,在这里系统的Web页面程序使用Perl语言编写,主要分为前台用户服务和后台系统管理两个部分。
前台用户服务使用Perl编写的Web页面作为访问Proftpd的客户端,形成良好的用户界面,所有对网盘中文件的操作都在Web页面中完成。程序中需要Perl与FTP服务器交互,使用Perl的标准类Net::FTP,Net::FTP类提供了在RFC959中描述的关于FTP客户端各种命令的具体实现,这里需要将用户在页面上的操作,转换为FTP命令传到FTP服务器,并将FTP命令执行以后所返回的信息进行处理,在Web页面中显示。如查看个人存储空间中的某个文件夹,只需点击或选择该目录,程序便将操作转换为FTP中切换目录的cd和查看文件列表的ls(dir)命令发送到FTP服务器,并接收服务器所返回的当前文件夹中的文件和文件夹信息列表,经处理后可分页显示在浏览器中。
后台系统管理主要是Perl对MySQL数据库的操作,而这是通过DBI接口现的。DBI是应用程序代码和底层驱动程序之间的接口,包含大量的DBD模块用于各种RDBMS(关系型数据库管理系统)及其他客户端方法(如ODBC),在这里我们是使用DBD::mysql模块。DBD::mysql由XS粘贴代码编写,使用libmysql作为底层数据库调用,因此快速且高效。这个部分主要是管理员在页面中进行对用户的管理操作,程序直接读取MySQL数据库中用户的信息并显示在Web页面中,管理员对其进行分组管理、配额更改等操作,提交后直接存入数据库并生效。
5、结束语
文中设计的基于开源软件的校园网网盘系统,功能完全能够满足校园网用户对于网盘的需求,并且,在系统平台、数据库、Web设计等各个层面都使用开源软件,保证了一定的安全性。但在现今复杂的网络环境下,校园网对数据安全性有更高的要求,因此系统可以使用连接控制加密、数据传输加密、建立PKI体系认证等方式,结合其他一些优秀的开源软件,从各方面增加网盘系统的安全性,使网盘系统更可靠的为校园网服务。
参考文献:
[1](美)Scott Guelich著.孙兆林译.CGI编程—使用Perl(第二版).北京:中国电力出版社.2001年
[2](美)Patrick Galbraith 著.李冰等译.Apache + MySQL + memcached + Perl 开发高速开源网站.北京:清华大学出版社.2011年3月
[3]邓文全.网络硬盘在高校信息化中的应用.信息与电脑.2011年7月:176-178
[4]张瀛.论网络硬盘在高校图书馆的应用.中山大学研究生学刊.2009年30卷3期:95-109
[5]李雪玲,管群.基于ASP技术的网络硬盘设计.西南民族大学学报(自然科学版).2008年34卷5期:1069-1073
作者介绍:
田关伟(1982- ),男,河南上蔡人,讲师,本科,研究方向:计算机应用、计算机网络。
基金项目:
四川省教育厅自然科学一般项目 (13ZB0144)
【关键字】网络硬盘;开源 Proftpd MySQL 配额
网络硬盘是利用网络技术和Web技术向网络中的用户提供文件存储、共享、访问、备份等功能的一种网络存储技术。随着校园网信息化建设的推进,校园网用户在办公和教学活动中,随时有大量的数据资源产生或流通,如教学课件、档案文件、数据报表、多媒体素材等等,而且这些数据资源需要频繁的使用和共享。
现在大部分校园网用户在传输数据、存储数据时,使用U盘或者某些商业网站的网盘服务。使用U盘,在多媒体教室、机房内的公共计算机中容易感染病传播病毒,U盘便于携带但容易遗失,因质量不好或使用不当致使物理损坏而使数据失效,且不能将数据同时共享给多人。使用电子邮件中的网络存储或者一些商业网站的网盘,容易注册,操作界面友好,存储比较方便,但是有很多不足:①免费用户的可用空间较小,不能满足用户的需求,如需要加大空间则需要付费等条件;②在进行文件存储或传输时,速率不稳定、比较慢;③有文件格式和文件大小的限制,用户使用受到约束,如很多网盘限制像安装程序、视频、音频文件等,而这些有可能是教学需要的;④文件有保存时间限制,在一定时间后数据会被删除;⑤
在校园网中建立网络硬盘系统,具有容量大、可靠性高、传输速度快的特点,既为校园网用户的数据资源管理提供了方便,也推进了信息化的发展。而在FreeBSD平台中建立基于开源软件的网络硬盘,可以解决商业网络硬盘的不足之处,拥有更多优点:①使用开源软件安全性更高,性能更稳定,不易传播病毒;②使用开源软件完全免费,平台建设不需要花费大量资金,服务运行也不会对校园网用户产生额外费用;③开源软件代码公开,可结合自身情况进行配置或进行系统二次开发,进行后续功能的扩展,不依赖于商业公司。
1、系统功能设计
1.1系统功能分析
网络硬盘的系统功能针对使用者身份分为两个功能部分:一是用户使用功能部分,用户通过此功能部分对个人存储的数据进行管理;二是系统管理员管理部分,系统管理员通过此功能部分对系统中的共享文件进行管理,对系统中的用户、组进行管理。
①用户使用网络硬盘,首先在系统Web页面中注册并登录,登录时输入的口令经过Hash算法加密,与数据库中存储的口令密文匹配,登录后可以更改个人登录口令,可以对个人空间内所存储的数据资源进行管理操作,可以在个人空间中建立、删除、查看、重命名文件夹,对于文件可以上传、下载、查看、删除、移动到其他文件夹中,可以查找或备份指定目录中的某些文件或文件夹,可管理自身共享的文件和文件夹,把文件共享到同组用户或所有用户,查看账号可用空间配额、已使用空间大小等统计信息。未注册的用户可以查看并下载针对匿名用户的共享文件。
②系统管理员可登陆Web管理界面对系统及系统中的用户、用户组进行管理,可以新建、删除用户,新建、删除用户组,可以查看、修改用户或用户组的空间配额,可以查看用户的账号使用状态,可以查询、管理共享文件和文件夹,还可以查看服务器状态,开启、关闭服务或重新启动服务。
1.2系统功能模块
根据网络硬盘的系统功能分析,可以划分为登陆控制、文件管理、系统管理三个功能模块。
①登陆控制模块 包括用户注册申请,用户登录审核,用户更改登陆密码。
②文件管理模块 文件管理包括文件上传、下载、删除、重命名、搜索;文件夹管理包括文件夹建立、删除、重命名;备份管理包括选择备份位置,压缩备份、恢复备份;共享管理包括文件、文件夹共享,取消文件、文件夹共享,文件、文件夹共享到同组,文件、文件夹共享到所有用户;共享浏览包括浏览其他用户共享文件,浏览同组用户共享的文件;搜索其他用户共享文件。
③系统管理模块 用户管理包括用户申请审核,添加新用户,删除用户,更改用户所属组别;用户组管理包括添加新用户组,删除用户组,删除组中用户,转移用户到其他用户组;磁盘配额管理包括查看用户、组配额及状态,更改用户、组配额类型及限制值;共享管理包括共享文件浏览、查找,共享文件删除;服务管理包括查看服务状态,服务停止,服务开始,服务暂停。
2、系统环境及结构
系统建立在FreeBSD平台上,使用FreeBSD 8.4-RELEASE作为操作系统,它是目前最新的Legacy Releases,开源ftp服务器软件Proftpd 1.3.0作为数据存储的文件服务器,并加载mod_sql和mod_quotatab模块,mod_sql模块使Proftpd支持sql的认证,它包含的mod_sql_mysql表示sql认证的数据库是mysql,它是mod_sql模块的细化,另外我们需要使用mod_sql_password模块,这个模块允许mod_sql模块认证的口令支持MD5,SHA1,SHA2等算法,mod_quotatab模块用来做磁盘限额控制,它包含的mod_quotatab_sql模块表示使用SQL管理磁盘限额的信息。系统数据库使用MySQL 5.5,所有的用户、组信息以及用户、组的磁盘配额信息都存储在MySQL中。考虑到系统平台的安全,这里使用Proftpd的虚拟用户功能,多个存储在数据库中的用户,在操作系统上仅对应为一个系统用户,并且不能够通过shell登陆操作系统。开源软件Apache是世界上使用最多的Web服务器软件,可以运行在几乎所有的系统平台上,这里使用Apache2.2.24作为Web服务器,加载mod_perl模块能够更快速的处理Perl所编写的CGI,而不需要额外增加系统的开销,这里需要加载与Apache2.2.X版本对应的mod_perl2.0模块,最新版本是2.0.7。使用Perl编写前台用户服务和后台系统管理服务CGI程序,直接通过mod_perl解释生成Web页面。用户和管理员在连接网络的情况下,就可以通过Web浏览器登陆进入系统,完成各自的应用。 3、数据库设计
MySQL数据库主要存储用户、组及相关的配额信息,现设计数据库包含4个表,users表、groups表、quotalimits表、quotatallies表。
用户组分为系统用户组和用户组两类,系统用户组仅有一个,成员为网络硬盘系统的管理员,用户组可根据需要设置多个。用户和用户组信息分别存放在users表和groups表中,包括userid用户名,password登陆口令(加密后的口令),uid在系统平台中对应的用户id,gid在系统平台中所属组的组id,homedir用户的目录,也就是用户存储数据的目录,shell用户登录系统后使用的命令解释器。quotalimits表中记录了针对用户或用户组关于磁盘限额的配置信息,表中包括quota_type配额类型,可以设置单个用户,也可以设置一个用户组;limit_type限制类型,有soft和hard两种;bytes_in_avail能够上传最大字节数,也就是用户存储空间,bytes_out_avail用户可以从服务器下载的最大字节数,是累计计算的;bytes_xfer_avail用户可以与服务器之间传输的最大字节数,包括上传和下载; files_in_avail总共能上传文件的数目,files_out_avail能从服务器上下载文件的总数目,files_xfer_avail总共可传输文件的数目,包括上传和下载。quotatallies表中存放每个用户当前配额使用情况统计信息,包括bytes_in_used已使用的字节数,bytes_out_used已下载的字节数,bytes_xfer_used已传输的字节数,包括了上传和下载,files_in_used用户目录现有文件总数, files_out_used已下载文件数, files_xfer_used已传输文件数。
4、Web程序设计
可以作为Web车需设计的语言有多种,Perl语言是常用的CGI编写语言,支持快速开发,有强大的字符串操作符和正则表达式,与系统接口容易且有自己的文件操作函数,在这里系统的Web页面程序使用Perl语言编写,主要分为前台用户服务和后台系统管理两个部分。
前台用户服务使用Perl编写的Web页面作为访问Proftpd的客户端,形成良好的用户界面,所有对网盘中文件的操作都在Web页面中完成。程序中需要Perl与FTP服务器交互,使用Perl的标准类Net::FTP,Net::FTP类提供了在RFC959中描述的关于FTP客户端各种命令的具体实现,这里需要将用户在页面上的操作,转换为FTP命令传到FTP服务器,并将FTP命令执行以后所返回的信息进行处理,在Web页面中显示。如查看个人存储空间中的某个文件夹,只需点击或选择该目录,程序便将操作转换为FTP中切换目录的cd和查看文件列表的ls(dir)命令发送到FTP服务器,并接收服务器所返回的当前文件夹中的文件和文件夹信息列表,经处理后可分页显示在浏览器中。
后台系统管理主要是Perl对MySQL数据库的操作,而这是通过DBI接口现的。DBI是应用程序代码和底层驱动程序之间的接口,包含大量的DBD模块用于各种RDBMS(关系型数据库管理系统)及其他客户端方法(如ODBC),在这里我们是使用DBD::mysql模块。DBD::mysql由XS粘贴代码编写,使用libmysql作为底层数据库调用,因此快速且高效。这个部分主要是管理员在页面中进行对用户的管理操作,程序直接读取MySQL数据库中用户的信息并显示在Web页面中,管理员对其进行分组管理、配额更改等操作,提交后直接存入数据库并生效。
5、结束语
文中设计的基于开源软件的校园网网盘系统,功能完全能够满足校园网用户对于网盘的需求,并且,在系统平台、数据库、Web设计等各个层面都使用开源软件,保证了一定的安全性。但在现今复杂的网络环境下,校园网对数据安全性有更高的要求,因此系统可以使用连接控制加密、数据传输加密、建立PKI体系认证等方式,结合其他一些优秀的开源软件,从各方面增加网盘系统的安全性,使网盘系统更可靠的为校园网服务。
参考文献:
[1](美)Scott Guelich著.孙兆林译.CGI编程—使用Perl(第二版).北京:中国电力出版社.2001年
[2](美)Patrick Galbraith 著.李冰等译.Apache + MySQL + memcached + Perl 开发高速开源网站.北京:清华大学出版社.2011年3月
[3]邓文全.网络硬盘在高校信息化中的应用.信息与电脑.2011年7月:176-178
[4]张瀛.论网络硬盘在高校图书馆的应用.中山大学研究生学刊.2009年30卷3期:95-109
[5]李雪玲,管群.基于ASP技术的网络硬盘设计.西南民族大学学报(自然科学版).2008年34卷5期:1069-1073
作者介绍:
田关伟(1982- ),男,河南上蔡人,讲师,本科,研究方向:计算机应用、计算机网络。
基金项目:
四川省教育厅自然科学一般项目 (13ZB0144)