首页 > 代码库 > FTP文件传输协议之vsftpd服务

FTP文件传输协议之vsftpd服务

一、FTP服务概述

   FTP(File Transfer Protocol,文件传输协议)是典型的C/S结构的应用层协议,需要由服务端软件、客户端软件共同实现文件传输功能

   FTP服务器默认使用TCP协议的20、21端口与客户端实现通信。20端口用于建立数据连接,并传输数据文件;21端口用于建立控制连接,并传输FTP控制命令。FTP数据连接分为主动模式和被动模式

  主动模式:服务器主动发起数据连接

  被动模式:服务器被动等待数据连接

   

vsftpd软件

   vsftpd是目前在Linux/Unix领域应用十分广泛的一款FTP服务软件,vsftpd服务的名称来源于“Very Secure FTP Deamon”,该软件针对安全特性方面做出了大量的设计,并且在速度和稳定性方面的表现也相当突出


vsftpd的配置文件

  使用vsftpd服务需要先安装Linux系统中的RPM软件包,安装完后会自动添加名为 vsftpd 的系统服务。vsftpd服务的配置文件位于 /etc/vsftpd 目录下:分为以下三种

   ftpusers文件:此文件中的用户将禁止登陆vsftpd服务。默认包括root、bin、daemon等用于系统运行的特殊用户

   user_list文件:此文件中的用户可能被禁止,也可能被允许登陆,具体取决于vsftpd.conf主配置文件 

   vsftpd.conf主配置文件:下面是最常用的一些配置参数

   技术分享

   技术分享

   技术分享


二、基于系统用户的FTP服务

  vsftpd服务可以使用Linux主机中的系统用户账号作为登陆FTP的账号,包括匿名访问和用户验证两种形式

1.匿名访问的FTP访问目录

  FTP匿名访问时,对应的系统用户为ftp,不需要密码验证,任何人都可以访问,宿主目录为 /var/ftp也就是匿名访问时所在的FTP根目录。基于安全考虑,根目录的权限只有读取权限

(1)准备匿名FTP访问目录

  /var/ftp/ 目录下默认设置了一个名为pub的子文件夹,可以给匿名访问FTP时提供上传文件使用

例如:执行下面操作可以使匿名用户对该目录具有写入权限,以便上传文件

   # chown  ftp  /var/ftp/pub          

(2)匿名用户配置并启动vsftpd服务

例如:设置服务器提供匿名访问,允许匿名用户上传、下载,但禁止使用删除、重命名,可修改以下配置

   # vim  /etc/vsftpd/vsftpd.conf         

    anonymous_enable=YES              //允许匿名用户访问   

       local_enable=NO                          //不需要启用本地用户

       write_enable=YES                        //开发服务器的写入权限

       anon_umask=022                         //设置匿名用户上传数据的权限掩码

       anon_upload_enable=YES                  //允许匿名上传文件

       anon_mkdir_write_enable=YES               //允许匿名用户创建目录

       dirmessage_enable=YES                          

   # service  vsftpd  start   

(3)测试匿名FTP服务器

  在Linux中,可使用FTP命令进行测试

   # ftp  192.168.1.1          

最常用的命令有:

   ls             列出远程机的当前目录

   cd               在远程机上改变工作目录

   lcd           在本地机上改变工作目录

   get(mget)             从远程机传送指定文件到本地机

   put(mput)              从本地机传送指定文件到远程机

   quit                       断开与远程机的连接并退出ftp


2.用户验证的ftp服务

   使用Linux主机的系统用户作为FTP账号,提供基于用户名/密码的登陆验证,登陆FTP后,将默认位于自己的宿主目录,且在宿主目录中拥有读写权限

(1)基本的本地用户验证

   # vim  /etc/vsftpd/vsftpd.conf          

     local_enable= YES                 //启用本地用户

        write_enable=YES                    //开发服务器的写入权限

        local_umask=077                    //仅属主拥有权限

        chroot_local_user=YES             //禁锢在宿主目录

   # service  vsftpd                        

(2)使用user_list用户列表文件

例如:只允许yang、shu、fan这三个用户登陆

   # vim  /etc/vsftpd/user_list           

    yang

    shu

    fan

   # vim  /etc/vsftpd/vsftpd.conf         

    userlist_enable=YES      //启用user_list列表中的用户

    userlist_deny=NO      //不禁用user_list列表中的用户


三、基于虚拟用户的FTP服务

  使用虚拟用户的好处在于,可以将ftp登陆账号和系统登陆账号分开,用户名和密码都不相同,进一步提高FTP服务器的安全性

1.建立虚拟用户的账号数据库

(1)创建文本格式的用户名、密码列表

  奇数行为用户名,偶数行为上一行用户名的密码

例如:添加yangshufan、51cto这两个用户登陆,密码为123、456

  # vim /etc/vsftpd/vusers.list        

    yangshufan

    123

    51cto

    456

(2)创建Berkeley DB格式的数据库文件

  通过db_load工具创建Berkeley DB格式的数据库文件

  # cd /etc/vsftpd/                                  

   # db_load  -T  -t  hash  -f  vusers.list  vusers.db

(3)添加虚拟用户的映射文件、创建FTP根目录

  vsftpd服务器对虚拟用户的控制采用了映射的控制方法,将所有的虚拟用户对应到同一个系统用户,该用户的宿主目录为所有虚拟用户登陆后公用的FTP根目录

例如:使用FTP根目录设为/var/ftproot,映射账号的名称为virtual

   # useradd  -d  /var/ftproot  -s /sbin/nologin  virtual

   # chmod  755  /var/ftproot                            


2.为vsftpd服务添加虚拟用户支持

(1)为虚拟用户建立PAM认证文件

   # vim  /etc/pam.d/vsftpd.vu     

     #%PAM-1.0

     auth    required   pam_userdb.so   db=/etc/vsftpd/vusers

     account    required   pam_userdb.so   db=/etc/vsftpd/vusers

(2)修改vsftpd配置,添加虚拟用户支持

   # vim  /etc/vsftpd/vsftpd.conf   

     local_enable= YES                 //需映射本地用户

         write_enable=YES                        //开发服务器的写入权限

        anon_umask=022                         //设置上传数据的权限掩码

        guest_enable=YES                       //启用用户映射功能

        guest_username=virtual               //指定映射的系统用户名称

        pam_service_name=vsftpd.vu        //指定PAM认证文件

    

3.为不同的虚拟用户建立独立的配置文件

  通过上面的几个步骤,虚拟用户已经可以登录FTP并下载文件了,若要为不同的虚拟用户建立不同的权限,可以为每个虚拟用户建立单独配置文件来实现

例如:使用户yangshufan能够上传文件、创建目录,而用户51cto仍然只有默认的下载权限

   # vim  /etc/vsftpd/vsftpd.conf     

     user_config_dir=/etc/vsftpd/vusers_dir

   # mkdir   /etc/vsftpd/vusers_dir/      //创建用户配置文件

   # cd  /etc/vsftpd/vusers_dir/             

   # vim  yangshufan         //为用户yangshufan创建独立配置文件

    anon_upload_enable=YES  

    anon_mkdir_write_enable=YES  

    # touch  51cto   //为其他用户创建空的配置文件

   //为其他用户创建空配置文件

   # service  vsftpd  reload     


 




本文出自 “杨书凡” 博客,请务必保留此出处http://yangshufan.blog.51cto.com/13004230/1953672

FTP文件传输协议之vsftpd服务