“pam+vsftpd创建虚拟用户“补充帖-http下载配置!


       偶开博第一篇文章“ pam+vsftpd配置虚拟ftp用户 ”介绍了一种通过pam认证+vsftpd来配置ftp虚拟用户的方法,经过一年多的使用,证实该方法稳定且可靠,个人非常满意!
       但在实际使用中发现,传统的ftp功能已经不能满足企业信息化的要求,客户和公司都分别对ftp server提出了新的需求,那就是希望可以实现ftp目录文件的http下载! (如果ftp server有公网IP)
     
       偶经过一段时间的琢磨,查阅了一些资料,请教了很多前辈~终于攻克了这个难题...日子飞逝,看到了成果,心里还是倍感欣慰~~嘿嘿~

       解释一下何谓http下载~~先废话一下...

       传统的ftp server只能实现“通过用户名密码“登录到指定用户目录的功能,只有登录到用户目录才能下载和上传相关数据,而且每个ftp用户的主目录是隔离的,只能看到自己主目录里的内容。
       如果你的企业和区域分部、客户的信息交流比较频繁,经常需要给客户传递资料,一般情况下有两种办法。
一是通过邮件,邮件制约的地方很明显,容量有限,而且发大附件会经常因为网络原因发送失败。
二是通过apache建立虚拟主机的下载目录,总部的同事将数据扔到这个目录,区域同事或者客户可以直接点击下载。制约的地方是维护成本高,虚拟主机下载页面需不需要美化暂且不提,很多客户资料都是一对一的,如果大家都把数据往虚拟主机目录上放,同时大家都可以随便下载,企业信息安全从何谈起~
      笼统地解释,http下载是指通过在浏览器输入ftp server任何一个用户主目录的任何一个文件地址,在经过密码验证后,均可下载。

      例如:
      ftp server的域名是ftp.vsftpd.com,在suwei这个目录中有一个名为jdk.zip的文件需要交给异地的客户,客户可以通过在浏览器输入以下拼法下载该文件:
      http://ftp.vsftpd.com/suwei/jdk.zip
拼法:
       http://+ip或域名/+ftp任何一个主目录名/+要下载的文件名


下面开始动手配置咯~~

测试环境:
一台运行着vsftpd的服务器通过pam加密配置了虚拟用户登录,虚拟目录设置在 /home/vftp
(有关vsftpd虚拟目录的配置请参考 pam+vsftpd配置虚拟ftp用户


1.配置apache虚拟主机,主机指向vsftpd的虚拟目录/home/vftp

http下载是一个访问转发行为,所以必须要使用apache一类的转发接口才能通过浏览器访问到服务器上的文件

虚拟主机配置起来十分的简单,下面以redhat企业版为例,不同发行版apache的位置和配置文件稍有差别,配置方法大同小异。

#cd /etc/httpd/conf.d
进入apache配置文件目录

#vi ftp.conf
新建一个ftp的配置文件,文件名随便取

写入配置代码如下:
###########################################
<VirtualHost *:80>                                        //转发来自80端口的访问
 ServerAlias   192.168.6.98                           //本机地址
 ServerAdmin   127.0.0.1
 ServerSignature On

DocumentRoot "/home/vftp/"                        
<Directory "/home/vftp/">                             //虚拟主机目录
Options FollowSymLinks
AllowOverride authconfig
Order allow,deny
Allow from all
</Directory>
</VirtualHost>                                

###########################################

写完保存退出。

#service httpd restart
重启一下apache,如果没报错那就大功告成!


2.配置".htaccess"文件 认证

apache对.htaccess文件的官方解释:
[.htaccess文件提供了针对每个目录改变配置的方法。]

说实在偶对.htaccess文件也是停留在初步了解阶段,还有很多功能和配置方法需要去学习......

#cd /home/vftp
进入vsftpd的虚拟目录,需要在目录下生成和配置.htaccess文件

#vi .htaccess

写入配置代码如下:
###########################################
authname "shared files"               \\通过浏览器访问该目录时需要输入用户名和密码(强制性)
authtype basic                              \\认证类型
authuserfile /etc/vsftpd/passwd     \\目录访问认证文件
require valid-user                           \\允许许可用户访问

###########################################

写完保存退出。


3.客户下载加密

总觉得“下载加密”这个词有点儿辞不达意...
其实意思就是,客户需要输入用户名和密码才能通过http方式从ftp server下载文件~唉,越解释越复杂~~

在进行客户下载加密前要对上一步骤进行补充:
现在大家都知道,可以通过配置.htaccess文件来控制虚拟目录的访问
authname "shared files"
表示强制性要求对方要输入用户名和密码才能访问ftp虚拟目录中的数据
authuserfile /etc/vsftpd/passwd
表示认证用户文件

由上面两项可以得知,能访问ftp虚拟目录的所有用户的密码信息就保存在/etc/vsftpd/passwd文件里!
而passwd文件保存着ftp server所有的用户资料(登录用户名+密码)
换句话说,passwd文件里任何一个用户条目,即任何一个拥有ftp帐户的人都可以用自己的用户信息通过http方式下载文件。

但一般情况下,ftp用户信息在企业中都属于个人机密,不能向其他人或者客户透露,所以我们这里要设置一道关卡,即一个可公开的用户信息,供区域同事或者客户下载相关数据。

#cd /etc/vsftp
#htpasswd
New password:
Re-type new password:
Adding password for user share passwd share
新建一个ftp用户作为可公开的用户信息,但不要在ftp的虚拟目录建立该用户的主目录,这样share用户就无法登录ftp server,只能用来下载文件(http)
有关创建vsftpd虚拟用户请参考文章 pam+vsftpd配置虚拟ftp用户

配置至此便完成了,我们可以测试一下是否生效。

例如在/home/vftp/suwei主目录下有一个jre.zip文件,我们通过http来下载
在浏览器输入:
http://192.168.6.98/suwei/jre.zip




在弹出的对话框中输入公开的用户share的密码


如上图所示,文件可以正常下载到本地!
*ftp用户可以使用自己的登录信息下载

只要文件路径、用户信息正确,客户可以通过http下载vsftpd虚拟目录中的任何一个文件!


这个补充贴到此告一段落,感觉写得好累啊~~~
其实真正配置起来很简单地操作几下就ok了~却废话一大堆,只为解释这样配置的理由和原理...

另外本人语文表达能力极差,写理论的东西很费劲,希望大家都能看懂,如有疑惑或不满,请开喷~~

呵呵!