www.9778.com 5

vsftp搭建

FTP全名是File Transfer Protocol(文件传输协议) C/S架构

? 建立基于基本用户的vsftpd服务

文件传输协议(File Transfer
Protocol,FTP),基于该协议FTP客户端与服务端可以实现共享文件、上传文件、下载文件。
FTP
基于TCP协议生成一个虚拟的连接,主要用于控制FTP连接信息,同时再生成一个单独的TCP连接用于FTP数据传输。用户可以通过客户端向FTP服务器端上传、下载、删除文件,FTP服务器端可以同时提供给多人共享使用。

简介:

匿名FTP

FTP服务是Client/Server(简称C/S)模式,基于FTP协议实现FTP文件对外共享及传输的软件称之为FTP服务器源端,客户端程序基于FTP协议,则称之为FTP客户端,FTP客户端可以向FTP服务器上传、下载文件。

下面是关于FTP这个服务的属性

  1. 调整匿名用户上传目录权限,并准备下载测试文件

1、FTP传输模式

(1)FTP服务相关软件

# chown ftp /var/ftp/pub

FTP基于C/S模式,FTP客户端与服务器端有两种传输模式,分别是FTP主动模式、FTP被动模式,主被动模式均是以FTP服务器端为参照。主被动模式如图1-2(a)、1-2(b)所示,主被动模式详细区别如下:

   IIS Serv-U Vsftpd proftpd pureftpd

  1. 修改vsftpd.conf配置文件,开放匿名用户访问权限、上传许可

(1)FTP主动模式:客户端从一个任意的端口N(N>1024)连接到FTP服务器的port
21命令端口,客户端开始监听端口N+1,并发送FTP命令“port
N+1”到FTP服务器,FTP服务器以数据端口(20)连接到客户端指定的数据端口(N+1)。

(2)FTP客户端相关软件

# vi /etc/vsftpd/vsftpd.conf

(2)FTP被动模式:客户端从一个任意的端口N(N>1024)连接到FTP服务器的port
21命令端口,客户端开始监听端口N+1,客户端提交
PASV命令,服务器会开启一个任意的端口(P >1024),并发送PORT
P命令给客户端。客户端发起从本地端口N+1到服务器的端口P的连接用来传送数据。

   ftp命令 CuteFTP FlashFTP LeapFTP Filezilla gftp kuftp

anonymous_enable=YES //允许匿名访问

在企业实际环境中,如果FTP客户端与FTP服务端均开放防火墙,FTP需以主动模式工作,这样只需要在FTP服务器端防火墙规则中,开放20、21端口即可。关于防火墙配置后面章节会讲解。

(3)VSFTP的守护进程

local_enable=NO //不需要启用本地用户时,建议将此项设置为NO

wKiom1lDWSzSkpDmAAB9bg8ow7I525.png

   /usr/sbin/vsftpd

write_enable=YES //允许开发写权限

图1-2(a) FTP主动模式

(4)FTP的启动脚本

anon_umask=022 //匿名用户上传文件的权限掩码


   /etc/init.d/vsftpd

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

wKioL1lDWUeCGsLxAAB6fItEgs4558.png

(5)FTP的端口

anon_mkdir_write_enable=YES //允许匿名用户有写权限

图1-2(b) FTP被动模式

   TCP协议的20,21端口与客户端进行通信

anon_other_write_enable=YES
//允许匿名用户有其他写权限(慎用,可能带来安全隐患)

2、Vsftpd服务器简介

      20用于建立数据连接,传输文件数据。(数据端口)

dirmessage_enable=YES

目前主流的FTP服务器端软件包括:Vsftpd、ProFTPD、PureFTPd、Wuftpd、Server-U
FTP、FileZilla
Server等软件,其中Unix/Linux使用较为广泛的FTP服务器端软件为Vsftpd 。

      21用于建立控制连接,并传输FTP控制命令。(命令端口)

xferlog_enable=YES

非常安全的FTP服务进程(Very Secure FTP
daemon,Vsftpd),Vsftpd在Unix/Linux发行版中最主流的FTP服务器程序,优点小巧轻快,安全易用、稳定高效、满足企业跨部门、多用户的使用等。

 (6)用户控制列表文件

connect_from_port=20

3、Vsftpd服务器安装配置

/etc/vsftpd/ ftpusers  文件中的用户禁止登录FTP服务器(黑名单)

xferlog_std_format=YES

Vsftpd服务器端安装有两种方法,一是基于YUM方式安装,而是基于源码编译安装,最终实现效果完全一致,本文采用YUM安装Vsftpd,步骤如下:

/etc/vsftpd/ user_list
文件中的用户可能被禁止或允许登录FTP服务器,具体看vsftpd.conf的设置

listen=YES

(1)  在命令行执行如下命令,如图1-3所示:

(7)工作模式

pam_service_name=vsftpd

yum  install    vsftpd*  -y

      主动模式:

userlist_enable=NO //未启用本地用户时,可以将用户列表功能禁用

wKioL1lDWZjQAKPkAABj9o17jDo450.png

          www.9778.com,
客户端想服务端21端口发送建立连接请求,需要传输数据时,客户端会通过port命令告诉服务器自己监听的端口,服务器会主动通过20端口与客户端建立数据连接。

tcp_wrapper=YES

图1-3 YUM安装Vsftpd服务端

 

  1. 重启服务

  2. 客户端下载测试

(2) 
打印vsftpd安装后的配置文件路径、启动Vsftpd服务及查看进程是否启动,如图1-4所示:

     

# ftp 192.168.10.1

rpm  -ql    vsftpd|more

     被动模式

# ftp

systemctl  restart  vsftpd.service

          
客户端想服务端21端口发送建立连接请求,需要传输数据时,

# ls

ps  -ef |grep  vsftpd

服务器以pasv命令告诉客户我打开了某个端口(非20端口),你来连接我,客户端会像服务器的非20端口建立数据连接

# get ftpconfig.tar.bz2

wKiom1lDWaSyBSMHAABVwwmbNvk536.png

  

# cd pub

图1-4 打印Vsftpd软件安装后路径

 (8)根据传输文件是否进行字符转换分为:

# put install.log / wget ftp://192.168.10.1/ftpconfig.tar.ba2
(只是下载时)

(3)  Vsftpd.conf默认配置文件详解如下:

    文本模式(又称为ASCII)以文本序列传输数据,用的较多

# ls

anonymous_enable=YES          开启匿名用户访问;

    二进制模式(又称为Binary模式)以二进制序列传输数据

# quit/bye

local_enable=YES                      启用本地系统用户访问;

 

本地FTP

write_enable=YES                    本地系统用户写入权限;

 

  1. 添加测试用户

local_umask=022                     
本地用户创建文件及目录默认权限掩码;

主配置文件

# useradd wang

dirmessage_enable=YES         
打印目录显示信息,通常用于用户第一次访问目录时,信息提示;

/etc/vsftpd/vsftpd.conf

# passwd wang

xferlog_enable=YES                  启用上传/下载日志记录;

 

# ls -lh /etc/*vsftp搭建。.conf* >/home/wang/etcconf.list

connect_from_port_20=YES      FTP使用20端口进行数据传输;

 

  1. 修改配置文件

xferlog_std_format=YES          日志文件将根据xferlog的标准格式写入;

 

anonymous_enable=NO //若不需要启用匿名访问,此项设为NO

listen=NO                                 
Vsftpd不以独立的服务启动,通过Xinetd服务管理,建议改成YES;

搭建FTP服务:

local_enable=YES //允许本地用户访问

listen_ipv6=YES                        启用IPV6监听;

  1、搭建yum仓库

write_enable=YES //开发写权限

pam_service_name=vsftpd     
登录FTP服务器,依据/etc/pam.d/vsftpd中内容进行认证;

   (1)mount /dev/cdrom /mnt

local_umask=022 //本地用户上传文件的权限掩码

userlist_enable=YES                 
Vsftpd.user_list和ftpusers配置文件里用户禁止访问FTP;

   (2)cat /etc/yum.repos.d/rhel-debuginfo.repo

chroot_local_enable=YES //将本地用户禁锢在宿主目录中,处于安全考虑

tcp_wrappers=YES                    设置vsftpd与tcp
wrapper结合进行主机的访问控制,Vsftpd服务器检查/etc/hosts.allow
和/etc/hosts.deny中的设置,来决定请求连接的主机,是否允许访问该FTP服务器。

   [rhel-Server]

max_clients=20 //限制客户端并发客户端连接数最多为20

(4) 
启动Vsftpd服务后,通过Windows客户端资源管理器访问Vsftp服务器端,如图1-5所示:

   name=Red Hat Enterprise Server

max_per_ip=2 //现在来自同一IP客户端的最大并发连接数

ftp://192.168.111.131/

   baseurl=file:///mnt/Server

local_max_rate=1024000 //本地用户上传下载限速为1M/s

wKiom1lDWbPwzQwUAADR3nl92ao762.png

   enabled=1

pasv_enable=YES //允许被动模式并设置端口范围

图1-5 匿名用户访问FTP默认目录

   gpgcheck=0

pasv_min_port=24500

FTP主被动模式,默认为被动模式,设置为被动模式使用端口方法如下:

  
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-beta,file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

pasv_max_port=24600

pasv_enable=YES

 

dirmessage_enable=YES

pasv_min_port=60000

   2、安装

xferlog_enable=YES

pasv_max_port=60100

      yum -y install vsftpd*

connect_from_port=20

4、Vsftpd匿名用户配置

 

xferlog_std_format=YES

Vsftpd默认以匿名用户访问,匿名用户默认访问的FTP服务器端路径为:/var/ftp/pub,匿名用户只有查看权限,无法创建、删除、修改。如需关闭FTP匿名用户访问,需修改配置文件/etc/vsftpd/vsftpd.conf,将anonymous_enable=YES修改为anonymous_enable=NO,重启Vsftpd服务即可。

配置选项讲解

listen=YES

如果允许匿名用户能够上传、下载、删除文件,需在/etc/vsftpd/vsftpd.conf配置文件中加入如下代码:

实验1

pam_service_name=vsftpd

anon_upload_enable=YES                  允许匿名用户上传文件;

  1. 1.  创建测试文件
  2. 2.  匿名用户ftp对/var/ftp/pub有写入权限
  3. 3.  允许匿名用户浏览
  4. 4.  允许用户(匿名,本地,虚拟)有上传权限
  5. 5.  允许匿名用户有上传权限
  6. 6.  允许匿名用户有上传文件夹权限
  7. 7.  禁止匿名用户有删除,覆盖等权限

userlist_enable=YES

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

 

tcp_wrapper=YES

anon_other_write_enable=YES          允许匿名用户其他写入权限。

(1)查看ftp的默认根路径,默认是有一个pub目录(默认的跟目录),

  1. 重启服务

匿名用户完整vsftpd.conf配置文件代码如下:

    [root@Centos2 ~]# ls /var/ftp/

# service vsftpd restart

anonymous_enable=YES

   pub

  1. 在客户端验证(此处验证不再复述)

local_enable=YES

(2)备份配置文件

建立基于虚拟用户的vsftpd服务

write_enable=YES

cd /etc/vsftpd/vsftpd.confg

  1. 建立虚拟用户名/密码数据库

local_umask=022

   cp vsftpd.conf vsftpd.bak

# rpm -ivh –aid –nodeps db4-utils-4.3.29-9.fc6.i386.rpm

anon_upload_enable=YES

   vim vsftpd.conf

# vi /mima

anon_mkdir_write_enable=YES

   内容如下

wang //奇数行用户名

anon_other_write_enable=YES

write_enable=YES

123 //偶数行密码

dirmessage_enable=YES

anon_umask=022

nan

xferlog_enable=YES

anonymous_enable=YES

123

connect_from_port_20=YES

anon_upload_enable=YES

# db_load -T -t hash -f /mima /etc/vsfpd/vusers.db

xferlog_std_format=YES

anon_mkdir_write_enable=YES

-T : 允许非Berkeley DB的应用程序从文本格式转换的DB数据文件

listen=NO

anon_other_write_enable=NO
是否允许匿名用户有其他写入权(改名,删除,覆盖)

-t hast :指定读取数据文件的方法

listen_ipv6=YES

dirmessage_enable=YES

-f : 用于指定用户名/密码文件列表

pam_service_name=vsftpd

xferlog_enable=YES

# file /etc/vsftpd/vusers.db

userlist_enable=YES

connect_from_port_20=YES

# chmod 600 /etc/vsftpd/vusers.db

tcp_wrappers=YES

xferlog_std_format=YES

  1. 建立FTP访问的根目录及虚拟用户对应的系统账号

由于默认Vsftpd匿名用户有两种:anonymous、ftp,所以匿名用户如果需要上传文件、删除及修改等权限,需要ftp用户对/var/ftp/pub目录有写入权限,使用如下chown和chmod任意一种即可,设置命令如下:

listen=YES

# useradd -d /var/ftproot -s /sbin/nologin mei
//建立映射账户mei并指定宿主目录

chown    -R  ftp        pub/

pam_service_name=vsftpd

# chmod 755 /var/ftproot //更改FTP更目录权限

chmod          o+w    pub/

userlist_enable=YES

# ls -lh /boot > /var/ftproot/vutest.list //建立测试文件

如上Vsftpd.conf配置文件配置完毕,同时权限设置完,重启vsftpd服务即可,通过Windows客户端访问,能够上传文件、删除文件、创建目录等操作,如图1-6所示:

tcp_wrappers=YES

  1. 建立PAM认证文件

图1-6 匿名用户访问上传文件

(3)启动服务

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

5、Vsftpd系统用户配置

   service vsftpd start

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

Vsftpd匿名用户设置完毕,匿名用户,任何人都可以查看FTP服务器端的文件、目录,甚至可以修改、删除,此方案如适合存放私密文件在FTP服务器端,如何保证文件或者目录专属拥有者呢,Vsftpd系统用户可以实现该需求。

(4)改变根目录的属主,如果不改变的话,只能访问,其他权限不能生效。因为我们是以ftp用户的身份访问的,而pub默认的属主属组是root。

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

实现Vsftpd系统用户方式验证,只需在Linux系统中创建多个用户即可,创建用户使用useradd,同时给用户设置密码,即可通过用户和密码登录FTP,进行文件上传、下载、删除等操作。Vsftpd系统用户实现方法步骤如下:

   chown ftp /var/ftp/pub

  1. 修改vsftpd配置文件,添加用户支持

(1)  Linux系统中创建系统用户jfedu1、jfedu2,分别设置密码为123456:

 

anonymous_enable=NO //若不需要启用匿名访问,此项设为NO

useradd  jfedu1

验证:

local_enable=YES //使用虚拟用户,需要启用本地用户

useradd  jfedu2

   在网络或是计算中输入ftp地址:格式如下图。

anon_umask=022

echo 123456|passwd –stdin  jfedu1

   我们会看到默认的pub目录。

write_enable=YES

echo 123456|passwd –stdin  jfedu2

 www.9778.com 1

guest_enable //启用用户映射功能

(2)  修改vsftpd.conf配置文件代码如下:

 

guest_username=mei //将映射用户指定为mei

anonymous_enable=NO

进入到pub目录下,可以创建和上传测试目录了。如图2

dirmessage_enable=YES

local_enable=YES

www.9778.com 2

xferlog_enable=YES

write_enable=YES

注意:(1)修改完配置之后需要重启完服务才能生效

connect_from_port=20

local_umask=022

     
(2)还需要从新从客户端登陆,否则修改后的配置看不到效果。

xferlog_std_format=YES

dirmessage_enable=YES

 

listen=YES

xferlog_enable=YES

实验2

pam_service_name=vsftpd.vu //修改使用的PAM文件位置

connect_from_port_20=YES

  1.   创建测试帐号u1、u2、u3密码都为“user”
  2.  允许本地用户访问
  3.  将权限掩码设为077
  4.   将本地帐号禁锢在宿主目录中
  5.   只允许u1、u2两个用户可以登录

userlist_enable=YES

xferlog_std_format=YES

 

tcp_wrapper=YES (到此即可以访问)

listen=NO

创建测试用户,并且设置密码

  1. 为不同的用户建立独立的配置文件

listen_ipv6=YES

[root@crushlinux ~]# useradd u1

# vi /etc/vsftpd/vsftpd.conf

pam_service_name=vsftpd

[root@crushlinux ~]# echo “user” |passwd –stdin u1

# user_config_dir=/etc/vsftpd/vusers_dir
//添加此行配置项,指定用户配置目录

userlist_enable=YES

[root@crushlinux ~]# useradd u2

# mkdir /etc/vsftpd/vusers_dir/ //创建用户配置目录

tcp_wrappers=YES

[root@crushlinux ~]# echo “user” |passwd –stdin u2

# cd /etc/vsftpd/vusers_dir

(3) 
通过Windows资源客户端验证,使用jfedu1、jfedu2用户登录FTP服务器,即可上传文件、删除文件、下载文件,jfedu1、jfedu2系统用户上传文件的家目录在/home/jfedu1、/home/jfedu2下,如图1-7(a)、1-7(b)所示:

[root@crushlinux ~]# useradd u3

# vi wang

wKioL1lDWfGRaITZAACAPZMTsqo153.png

[root@crushlinux ~]# echo “user” |passwd –stdin u3

anon_upload_enable=YES

图1-7(a) jfedu1用户登录FTP服务器

 

anon_mkdir_write_enable=YES

wKiom1lDWgrRHlQUAACDrFjL9vc896.png

在配置文件中加入红色部分内容

anon_other_write_enable=YES

图1-7(b) jfedu1登录FTP服务器上传文件

[root@crushlinux ~]# vi /etc/vsftpd/vsftpd.conf

anon_max_rate=1000000

6、Vsftpd虚拟用户配置

 

# vi mei (配置在此省略)

如果基于Vsftpd系统用户访问FTP服务器,系统用户越多越不利于管理,而且不利于系统安全管理,鉴于此,为了能更加的安全使用VSFTPD,需使用Vsftpd虚拟用户方式。

local_enable=YES

  1. 重启服务

Vsftpd虚拟用户原理:虚拟用户就是没有实际的真实系统用户,而是通过映射到其中一个真实用户以及设置相应的权限来实现访问验证,虚拟用户不能登录Linux系统,从而让系统更加的安全可靠。

local_umask=077

# service vsftpd restart

Vsftpd虚拟用户企业案例配置步骤如下:

chroot_local_user=YES

  1. 使用虚拟用户访问FTP,验证

(1)  安装Vsftpd虚拟用户需用到的软件及认证模块:

write_enable=YES

www.9778.com 3

yum  install  pam*  libdb-utils  libdb*  –skip-broken  -y

dirmessage_enable=YES

(2) 
创建虚拟用户临时文件/etc/vsftpd/ftpusers.txt,新建虚拟用户和密码,其中jfedu001、jfedu002为虚拟用户名,123456为密码,如果有多个用户,依次格式填写即可:

xferlog_enable=YES

jfedu001

connect_from_port_20=YES

123456

xferlog_std_format=YES

jfedu002

listen=YES

123456

pam_service_name=vsftpd

(3)  生成Vsftpd虚拟用户数据库认证文件,设置权限700:

userlist_enable=YES

db_load  -T  -t  hash  -f  /etc/vsftpd/ftpusers.txt 
/etc/vsftpd/vsftpd_login.db

userlist_deny=NO

chmod  700  /etc/vsftpd/vsftpd_login.db

tcp_wrappers=YES

(4)  配置PAM认证文件,/etc/pam.d/vsftpd行首加入如下两行:

 

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

 

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

 

(5) 
所有Vsftpd虚拟用户需要映射到一个系统用户,该系统用户不需要密码,也不需要登录,主要用于虚拟用户映射使用,创建命令如下:

将允许登陆的用户加入到白名单中

useradd    -s  /sbin/nologin    ftpuser

 

(6)  完整vsftpd.conf配置文件代码如下:

vi /etc/vsftpd/user_list

#global config Vsftpd 2017

u1

anonymous_enable=YES

u2

local_enable=YES

 

write_enable=YES

service vsftpd restart

local_umask=022

 

dirmessage_enable=YES

登陆验证

xferlog_enable=YES

   格式为:ftp://用户名:密码@ftpIP地址

connect_from_port_20=YES

 www.9778.com 4

xferlog_std_format=YES

 

listen=NO

登陆上默认是空白的,因为这是用户的家目录。

listen_ipv6=YES

 

userlist_enable=YES

用u3用户登陆,会报错误(windows不同系统报错不会完全一致):

tcp_wrappers=YES

 www.9778.com 5

#config virtual user FTP

 

pam_service_name=vsftpd

实验3

guest_enable=YES

构建基于虚拟用户的FTP服务

guest_username=ftpuser

创建账号数据

user_config_dir=/etc/vsftpd/vsftpd_user_conf

   1.建立虚拟FTP用户的帐号数据库文件

virtual_use_local_privs=YES

   2.创建FTP根目录及虚拟用户映射的系统用户

如上Vsftpd虚拟用户配置文件参数详解:

   3.建立支持虚拟用户的PAM认证文件

#config virtual user FTP

添加虚拟用户支持

pam_service_name=vsftpd                                   
虚拟用户启用pam认证;

   4.在vsftpd.conf文件中添加支持配置

guest_enable=YES                                                 
启用虚拟用户;

   5.为个别虚拟用户建立独立的配置文件

guest_username=ftpuser                                       
映射虚拟用户至系统用户ftpuser;

启动服务并测试

user_config_dir=/etc/vsftpd/vsftpd_user_conf     
设置虚拟用户配置文件所在的目录;

   6.重新加载vsftpd配置

virtual_use_local_privs=YES                                   
虚拟用户使用与本地用户相同的权限。

   7.使用虚拟FTP账户访问测试

(7) 
至此,所有虚拟用户共同基于/home/ftpuser主目录实现文件上传与下载,可以在/etc/vsftpd/vsftpd_user_conf目录创建虚拟用户各自的配置文件,创建虚拟用户配置文件主目录:

 

mkdir  -p    /etc/vsftpd/vsftpd_user_conf/

实验部分

(8)  如下分别为虚拟用户jfedu001、jfedu002用户创建配置文件:

1.建立虚拟FTP用户的帐号数据库文件用到db_load工具先安装软件包

/etc/vsftpd/vsftpd_user_conf/jfedu001,同时创建私有的虚拟目录,代码如下:

   rpm -ivh db4-utils-4.7.25-17.el6.x86_64.rpm

local_root=/home/ftpuser/jfedu001

   cd /etc/vsftpd/

write_enable=YES

2、创建虚拟用户文件

anon_world_readable_only=YES

   vim user

anon_upload_enable=YES

   a

anon_mkdir_write_enable=YES

   1

anon_other_write_enable=YES

   b

/etc/vsftpd/vsftpd_user_conf/jfedu002,同时创建私有的虚拟目录,代码如下:

   1

local_root=/home/ftpuser/jfedu002

   c

write_enable=YES

   1

anon_world_readable_only=YES

  

anon_upload_enable=YES

   基数行代表用户名,偶数行代表密码

anon_mkdir_write_enable=YES

 

anon_other_write_enable=YES

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

虚拟用户配置文件内容详解:

  

local_root=/home/ftpuser/jfedu002  jfedu002虚拟用户配置文件路径;

   db_load -T -t hash -f user user.db

write_enable=YES                              允许登陆用户有写权限;

  

anon_world_readable_only=YES        允许匿名用户下载,然后读取文件;

 

anon_upload_enable=YES                 
允许匿名用户上传文件,只有在write_enable=YES时该参数才生效;

    -f 指定数据原文件

anon_mkdir_write_enable=YES         
允许匿名用户创建目录,只有在write_enable=YES时该参数才生效;

   -T 允许非Berkeley DB的应用程序使用文本格式转换的DB数据文件

anon_other_write_enable=YES         
允许匿名用户其他权限,例如删除、重命名等。

   -t hash  读取文件的基本方法

(9)  创建虚拟用户各自虚拟目录:

3、创建虚拟用户对应的系统用户

mkdir -p  /home/ftpuser/{jfedu001,jfedu002}

   useradd -s /sbin/nologin vu

chown -R ftpuser:ftpuser  /home/ftpuser

4、建立支持虚拟用户的PAM认证文件

重启Vsftpd服务,通过Windows客户端资源管理器登录Vsftpd服务端,测试结果如图1-8(a)、1-8(b)所示:

vi /etc/pam.d/vsftpd.vu

wKiom1lDWijhdJbJAAC2I3KU2Rk336.png

加入以下两行

图1-8(a) jfedu001虚拟用户登录FTP服务器

auth       required     /lib64/security/pam_userdb.so
db=/etc/vsftpd/user

wKioL1lDWjXxBq-zAACHg4_fe_8470.png

account    required     /lib64/security/pam_userdb.so
db=/etc/vsftpd/user

图1-8(b) jfedu001虚拟用户上传下载文件

对应刚才生成user.db的文件

本篇文章来源于 Linux公社网站(www.linuxidc.com) 
原文链接:

5、在vsftpd的配置文件中支持虚拟用户

注意:在做虚拟用户的时候,一定要去掉userlist_deny=NO

这个选项,否则会显示用户验证失败

vi /etc/vsftpd/vsftpd.conf

guest_enable=YES            启用用户映射功能

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

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

local_enable=YES

local_umask=077

chroot_local_user=YES 
如果红色3条配置没有的话就会报错:用户身份验证失败

 

virtual_use_local_privs=YES

如果没有这条配置的话上传将会显示错误.这条最重要

还要注意每行配值的末尾不要有空行,否则也会有报错

 

 

 

6.为个别虚拟用户建立独立的配置文件

vi /etc/vsftpd/vsftpd.conf   加入下面一行

user_config_dir=/etc/vsftpd/user_dir 
用户配置目录支持

为用户a、b建立独立的配置目录及文件 这一行也是必须有的

 

 mkdir /etc/vsftpd/user_dir

cd /etc/vsftpd/user_dir

vim a

local_root=/test  
规定了a用户的根目录 
注意:一定要把目录的属主改为虚拟用户对应的系统用户。

 

mkdir /test

 

默认就是所有权限

 

 

总结:本地用户和虚拟用户不能同时登录、因为认证方式只有一种

本地是pam_service_name
=vsftpd

虚拟是pam_service_name
=vsftpd.vu 

 

实验4

1    修改vsftpd服务的监听地址,端口

       1.1  IP为:192.168.200.129

        1.2  端口为:2121

2    使用vsftpd服务的被动模式

     2.1  下限端口为24500

     2.2  上限端口为24600

3    限制vsftpd服务的并发数,传输速度

      3.1  限制并发客户连接最多200

      3.2  限制每个IP地址的连接数最多50

      3.3  限制匿名用户传输速率为50KB/s

      3.4  限制本地用户传输速率为200KB/s

[root@crushlinux ~]# netstat -naptu |grep “vsftpd”

[root@crushlinux ~]# vi /etc/vsftpd/vsftpd.conf

listen=YES

listen_address=192.168.200.129

listen_port=2121

 

pasv_enable=YES

pasv_min_port=24500

pasv_max_port=24600

 

max_clients=200

max_per_ip=50

anon_max_rate=50000

local_max_rate=200000

 

[root@crushlinux ~]# service vsftpd restart

[root@crushlinux ~]# netstat -naptu |grep “vsftpd”

tcp        0      0 192.168.200.129:2121       
0.0.0.0:*                   LISTEN      3552/vsftpd