1.安装准备

操作系统:
[root@localhost ~]# uname -a
Linux localhost.localdomain 2.6.32-504.el6.x86_64 #1 SMP Wed Oct 15 04:27:16 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

1.1检查selinux是否关闭

  1. 查看命名:<br />1、/usr/sbin/sestatus -v ##如果SELinux status参数为enabled为开启状态<br /> SELinux

status: enabled
2、getenforce ##也可以用这个命令检查
关闭SELinux:
1、临时关闭(不用重启机器):
setenforce 0 ##设置SELinux 成为permissive模式
##setenforce 1 设置SELinux 成为enforcing模式
2、修改配置文件需要重启机器:
修改/etc/selinux/config 文件
将SELINUX=enforcing改为SELINUX=disabled
重启机器即可

1.2检查防火墙是否关闭

  1. 查看状态命令:<br /> service vsftpd status<br /> 关闭防火墙:<br /> 临时关闭:iptables -F<br /> 服务关闭:service iptables stop<br /> 开机关闭:chkconfig iptables off

2.安装vsftpd

  1. <br /> 通过yum的方式安装vsftpd:<br /> 1.yum

install vsftpd –y
2.下载rpm通过 rpm –ivh vsftpd-2.2.2-14.el6.x86_64.rpm
配置文件存放位置:
/etc/vsftpd/
Vsftpd.conf 全局的核心配置文件
user_list
ftpusers
/etc/pam.d/vsftpd

2.1修改/etc/vsftpd/vsftpd.conf文件

anonymous_enable=NO
local_enable=YES
guest_enable=YES
guest_username=virtual
pam_service_name=vsftpd.vu
user_config_dir=/etc/vsftpd/user_conf image.png

2.2在/etc/pam.d/中添加文件vsftpd.vu

  1. 添加vsftpd.vu文件<br /> touch

/etc/pam.d/vsftpd.vu
修改vsftpd.vu文件
auth required pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required pam_userdb.so db=/etc/vsftpd/vsftpd_login

2.3添加虚拟用户DB文件

  1. 新建登录用户文件txt:<br />touch

/etc/vsftpd/vsftpd_login.txt
编辑login.txt文件:
vi /etc/vsftpd/vsftpd_login.txt
添加内容:
image.png
建立访问者数据文件(如果没有可以安装:yum install db4-utils)
db_load -T -t hash -f /etc/vsftpd/vsftpd_login.txt /etc/vsftpd/vsftpd_login.db

2.4建立本地虚拟用户

  1. useradd -d /home/ftp -s /sbin/nologin virtual

2.5在/home/ftp/创建目录并改变其属性和它的宿主

  1. chown virtual /home/ftp<br /> chmod 700 /home/ftp

2.6创建ftp用户配制文件目录

  1. mkdir /etc/vsftpd/user_conf

2.7创建以用户名命名的配置文件web、download、admin

  1. download文件配置:<br /> local_root=/home/ftp<br />anon_world_readable_only=NO<br /> web文件配置:<br /> local_root=/var/www<br />anon_world_readable_only=NO<br />anon_umask=022<br />write_enable=YES<br />anon_mkdir_write_enable=YES<br />anon_upload_enable=YES<br />anon_other_write_enable=YES<br /> admin文件配置:<br /> local_root=/home/ftp<br />anon_world_readable_only=NO<br />write_enable=YES <br />anon_mkdir_write_enable=YES <br />anon_upload_enable=YES<br />anon_other_write_enable=YES

2.8重启vsftpd服务

  1. service vsftpd restart

3.ISSUS

QA 添加新的用户,并且指定不同的权限。

  1. 添加用户
    编辑/etc/vsftpd/ vsftpd_login.txt文件
    添加两行,如:
    test
    1. ------------用户名<br /> 123 ------------密码<br />2.
    重新生成db文件
    db_load -T -t hash -f /etc/vsftpd/vsftpd_login.txt /etc/vsftpd/vsftpd_login.db
    3.
    添加用户名的配置文件
    touch /etc/vsftpd/user_conf/test
    vi test
    添加权限,控制的目录等等配置
    如:
    local_root=/home/ftp
    anon_world_readable_only=NO
    write_enable=YES
    anon_mkdir_write_enable=YES
    anon_upload_enable=YES
    anon_other_write_enable=YES
    4.
    重启 服务
    service vsftpd restart

    QA vsftpd添加SSL的加密功能

  2. 使用指令生成加密文件
    [root@localhost vsftpd]# openssl req -new -x509 -nodes -out vsftpd.pem -keyout vsftpd.pem
    Generating a 2048 bit RSA private key
    …..+++
    …………………………………………….+++
    writing new private key to ‘vsftpd.pem’
    ——-
    You are about to be asked to enter information that will be incorporated
    into your certificate request.
    What you are about to enter is what is called a Distinguished Name or a DN.
    There are quite a few fields but you can leave some blank
    For some fields there will be a default value,
    If you enter ‘.’, the field will be left blank.
    ——-
    Country Name (2 letter code) [XX]:CN
    State or Province Name (full name) []:xxxx
    Locality Name (eg, city) [Default City]:xxxx
    Organization Name (eg, company) [Default Company Ltd]:xxxx
    Organizational Unit Name (eg, section) []:www.centos.vbird
    Common Name (eg, your name or your server’s hostname) []:root@www.centos.vbird
    Email Address []:123456@163.com

    2.
    修改文件权限,并且拷贝文件值加密文件目录
    chmod 400 vsftpd.pem
    cp vsftpd.pem /etc/ssl/certs/
    3.
    修改vsftpd.conf文件
    添加内容:
    ssl_enable=YES
    allow_anon_ssl=YES
    force_local_data_ssl=YES
    force_local_logins_ssl=YES
    force_anon_logins_ssl=YES
    force_anon_data_ssl=YES
    ssl_tlsv1=YES
    ssl_sslv2=NO
    ssl_sslv3=NO
    rsa_cert_file=/etc/ssl/certs/vsftpd.pem
    4.
    重启服务
    service vsftpd restart
    5.
    遇到问题
    5.1收到服务器的 TLS 警告:Handshake failed (40)
    重新修改文件【vsftpd.conf】:
    ssl_ciphers=HIGH
    既可。
    配置成功界面:
    image.png

    4.资料参考

    vsftp建立虚拟用户不同目录分配不同权限操作步骤详解:
    http://www.jb51.net/article/43896.htm
    vsftp如何配置虚拟用户实现不同用户拥有不同权限和不同目录:(注:此文章的示例是ubuntu系统的):
    http://www.server110.com/vsftpd/201404/10353.html
    CentOS6.5下vsftpd加SSL加密服务器配置:
    http://www.centoscn.com/image-text/config/2014/0316/2575.html
    Vsftpd配置SSL加密FTP数据传输 :
    http://yhj1065.blog.163.com/blog/static/19800217201401333453514