(一)  思路

  (1) 通过yum install  vsftpd  -y 安装虚拟用户


  (2)关闭防火墙和Selinux

        service iptables  stop      setenforce 0


  (3)创建虚拟用户的登录名和密码


  (4)生成数据库文件,并对数据库进行700授权


  (5)生成PAM验证文件


  (6)创建Vsftpd 映射本地用户


  (7)修改vsftpd.conf配置文件,加入虚拟用户配置文件


  (8)创建虚拟用户自己的家目录并设置访问权限


  (9)启动vsftpd验证配置结果


v1版本  shell 自动化安装vsftpd

#!/bin/bash
#2017年11月19日09:30:10
#config_vsftpd v1
################
yum install vsftpd -y   安装Vsftpd用户
yum install db4* -y     安装db4数据库
service iptables stop   关闭防火墙
setenforce 0  关闭selinux
cat>/etc/vsftpd/ftpusers.txt<<EOF  在ftpusers.txt文件中创建用户名和密码
jfedu001
123456
EOF
db_load  -T  -t  hash  -f  /etc/vsftpd/ftpusers.txt  /etc/vsftpd/vsftpd_login.db 生成DB数据库
chmod  700  /etc/vsftpd/vsftpd_login.db  对DB数据库进行700授权
cat>/etc/pam.d/vsftpd<<EOF  在pam.d配置文件中,添加认证语句
auth      required        pam_userdb.so   db=/etc/vsftpd/vsftpd_login
account   required        pam_userdb.so   db=/etc/vsftpd/vsftpd_login
EOF
useradd    -s   /sbin/nologin    ftpuser   设置ftpuser用户的bash环境为禁止登录Linux系统
cat>>/etc/vsftpd/vsftpd.conf<<EOF
pam_service_name=vsftpd
guest_enable=YES
guest_username=ftpuser
user_config_dir=/etc/vsftpd/vsftpd_user_conf
virtual_use_local_privs=YES
EOF 在vsftpd.conf配置文件中添加虚拟用户配置文件
mkdir  -p    /etc/vsftpd/vsftpd_user_conf/   创建vsftpd_user_conf这个目录
cat>/etc/vsftpd/vsftpd_user_conf/jfedu001 <<EOF
local_root=/home/ftpuser/jfedu001
write_enable=YES
anon_world_readable_only=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
EOF  在jfedu001目录中,创建虚拟用户配置文件,设置访问权限
mkdir -p /home/ftpuser/jfedu001  创建虚拟用户自己的家目录

chown -R ftpuser:ftpuser /home/ftpuser   授权/home/ftpuser这个目录的用户和组是ftpuser


#!/bin/bash
#2017年11月19日09:30:10
#config_vsftpd v2
################
FTP_VIR_USR="jfedu001"
FTP_USR="ftpuser"
YUM="vsftpd db4*"
FTP_DIR="/etc/vsftpd"
FTP_DB="vsftpd_login"
FTP_USR_VIR="vsftpd_user_conf"
yum install $YUM -y
service iptables stop
setenforce 0
cat>/$FTP_DIR/$FTP_USRs.txt<<EOF
$FTP_VIR_USR
123456
EOF
db_load  -T  -t  hash  -f  /$FTP_DIR/$FTP_USRs.txt  /$FTP_DIR/FTP_DB.db
chmod  700  /$FTP_DIR/FTP_DB.db
cat>/etc/pam.d/vsftpd<<EOF
auth      required        pam_userdb.so   db=/$FTP_DIR/FTP_DB
account   required        pam_userdb.so   db=/$FTP_DIR/FTP_DB
EOF
useradd    -s   /sbin/nologin    $FTP_USR
cat>>/$FTP_DIR/vsftpd.conf<<EOF
pam_service_name=vsftpd
guest_enable=YES
guest_username=$FTP_USR
user_config_dir=/$FTP_DIR/$FTP_USR_VIR
virtual_use_local_privs=YES
EOF
mkdir  -p    /$FTP_DIR/$FTP_USR_VIR/
cat>/$FTP_DIR/$FTP_USR_VIR/$FTP_VIR_USR <<EOF
local_root=/home/$FTP_USR/$FTP_VIR_USR
write_enable=YES
anon_world_readable_only=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
EOF
mkdir -p /home/$FTP_USR/$FTP_VIR_USR
chown -R $FTP_USR:$FTP_USR /home/$FTP_USR

 

  验证配置结果

   (1)查看vsftpd进程是否启动  ps -ef |grep vsftpd


   (2)查看21端口是否启动  netstat -ntl | grep 21


  服务自启动

    chkconfig  vsftpd   on


   小知识补充

   <1> 临时关闭防火墙   service iptables stop


   <2> 永久关闭防火墙  checkconfig   iptables  off


   <3> 临时关闭selinux   setenforce  0


   <4> 永久关闭selinux    vi  /etc/selinux/config 配置文件中把selinux改为disabled


    <5> 查看selinux状态   getenforce


 注释:  Vsftpd配置中不要输入多余的空格,输入多余的空格会报错的