一、环境检查

1.1、检查是否安装vsftp服务

执行:vsftpd -v 或 rpm -q vsftpd。如图所示表示该服务器没有安装vsftp服务。

centos7 vsftp 用户连接到了根目录 centos7搭建vsftp_用户名

1.2、查看操作系统版本

执行:uname -r,该操作系统版本为centos7

centos7 vsftp 用户连接到了根目录 centos7搭建vsftp_用户名_02

二、安装vsftp服务

执行:yum install vsftpd

centos7 vsftp 用户连接到了根目录 centos7搭建vsftp_用户名_03

centos7 vsftp 用户连接到了根目录 centos7搭建vsftp_数据目录_04


至于vsftp服务安装完毕,接下来是服务的相关配置。(如果没有在线安装,可以执行下载rpm安装包,执行 rpm -ivh vsftpd-3.0.2-22.el7.x86_64 安装即可,下载链接:http://www.rpmfind.net/linux/rpm2html/search.php?query=vsftpd)

三、创建一个系统用户提供予虚拟用户映射

执行:useradd vsftpd -d /home/vsftpd -s /bin/nologin,如果用户已经存在执行:(如已存在用户则usermod -s /sbin/nologin vsftpd)

centos7 vsftp 用户连接到了根目录 centos7搭建vsftp_用户名_05

四、vsftpd.conf配置

进入/etc/vsftpd 目录下,执行 vi vsftpd.conf

centos7 vsftp 用户连接到了根目录 centos7搭建vsftp_数据目录_06


输入配置文件如下:

anonymous_enable=NO #关闭匿名登录

local_enable=YES #允许本地用户登录

write_enable=YES #是否允许登陆用户有写权限。属于全局设置,默认值为YES。

local_umask=022 #本地用户新增档案时的umask 值。默认值为077

anon_upload_enable=YES #(允许匿名ftp 用户上传文件)

anon_mkdir_write_enable=YES #(允许匿名用户 创建新的目录)

anon_other_write_enable=YES #(允许匿名用户改名和删除文件)

dirmessage_enable=YES #激活目录消息,向远程用户发送消息,进入某个目录

xferlog_enable=YES #激活上传/下载 日志记录

connect_from_port_20=YES #确保RORT传输连接来自端口 20

xferlog_file=/var/log/xferlog #日志文件路径

xferlog_std_format=YES #日志文件使用标准ftpd xferlog格式的日志文件 ,默认位置 /var/log/xferlog

ascii_upload_enable=YES #允许ASCII模式上传文件

ascii_download_enable=YES #允许ASCII模式下载文件

ftpd_banner=This FTP is for the use of authorized users only. Individuals using this computer system without authority, or in excess of their authority, are subject to having all of their activities on this system monitored and recorded by system personnel, if such monitoring reveals possible evidence of criminal activity, system personnel may provide the evidence of such monitoring to law enforcement officials.

chroot_list_enable=NO  #yes, chroot_list为能访问主目录外的文件的用户

chroot_list_file=/etc/vsftpd/chroot_list

listen=YES  #是否以独立运行的方式监听服务

pasv_enable=YES  # 默认允许被动模式连接(YES)

pam_service_name=vsftpd  #设置用于用户认证的PAM文件位置(/etc/pam.d/目录中对应的文件名)

userlist_enable=YES  #是否启用userl_ist用户列表文件;

tcp_wrappers=YES   #是否启用tcp_wrappers主机访问控制;

reverse_lookup_enable=NO  #禁止DNS解析,解决登录验证过程缓慢问题

guest_enable=YES   #是否启用虚拟用户

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

user_config_dir=/etc/vsftpd/vsftpd_user_conf   # 指定虚拟用户独立的配置文件目录

dual_log_enable=YES

vsftpd_log_file=/var/log/vsftpd.log

use_localtime=YES

listen_port=10021   #监听端口

allow_writeable_chroot=YES  # centos7添加

五、生成虚拟用户数据文件

我们配置登录用户,每个用户的访问以及执行权限各自独立,相互隔离。执行:vi /etc/vsftpd/vsftpd_login.txt

centos7 vsftp 用户连接到了根目录 centos7搭建vsftp_ftp_07

centos7 vsftp 用户连接到了根目录 centos7搭建vsftp_linux_08

如图配置了两个账户:joachiming,zhuang。密码都是123456然后执行:db_load -T -t hash -f /etc/vsftpd/vsftpd_login.txt /etc/vsftpd/vsftpd_login.db

centos7 vsftp 用户连接到了根目录 centos7搭建vsftp_数据目录_09

六、配置PAM验证文件

执行:vi /etc/pam.d/vsftpd 注释掉原文件的内容,输入以下内容:

32位系统:

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

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

64位系统:

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

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

centos7 vsftp 用户连接到了根目录 centos7搭建vsftp_数据目录_10

centos7 vsftp 用户连接到了根目录 centos7搭建vsftp_用户名_11

七、创建用户配置目录

这个目录和vsftpd.conf中的参user_config_dir配置的路径一致,当前配置的
目录为user_config_dir=/etc/vsftpd/vsftpd_user_conf,所以在/etc/vsftpd路
径下创建vsftpd_user_conf目录。执行:mkdir vsftpd_user_conf

centos7 vsftp 用户连接到了根目录 centos7搭建vsftp_linux_12


进入vsftpd_user_conf目录,创建与vsftpd_login.txt目录配置的用户名称一样的文件,当前配置的用户为joachiming,所以执行: vi joachiming

centos7 vsftp 用户连接到了根目录 centos7搭建vsftp_虚拟用户_13


加入配置:

anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=/home/vsftpd/joachiming
ftpd_banner=This FTP is for the use of authorized users only
anon_other_write_enable=yes

centos7 vsftp 用户连接到了根目录 centos7搭建vsftp_数据目录_14

然后保存即可。同样的方式新加zhuang用户目录,修改下数据目录即可。

centos7 vsftp 用户连接到了根目录 centos7搭建vsftp_虚拟用户_15

八、创建数据目录并赋权(重要)

配置的joachiming用户数据目录为:/home/vsftpd/joachiming,zhuang用户数据目录为:/home/vsftpd/zhuang,,执行创建目录命令:mkdir -p /home/vsftpd/joachiming 以及 mkdir -p /home/vsftpd/zhuang 分别创建用户目录

centos7 vsftp 用户连接到了根目录 centos7搭建vsftp_数据目录_16

这时候要修改目录的执行权限以及目录所有权,把目录的所有权赋予给虚拟vsftpd用户,执行:chown -R vsftpd:vsftpd /home/vsftpd/joachiming 以及 chown -R vsftpd:vsftpd /home/vsftpd/zhuang

centos7 vsftp 用户连接到了根目录 centos7搭建vsftp_linux_17


接着分别在joachimng目录下创建joachimng_test目录,以及在zhuang目录下创建zhuang_test目录,同样的方式修改文件的所有者。

centos7 vsftp 用户连接到了根目录 centos7搭建vsftp_linux_18

九、启动

systemctl start vsftpd.service #启动
systemctl restart vsftpd.service #重启
systemctl status vsftpd.service #查看运行状态

浏览器输入:ftp://ip:port ,然后输入用户名密码即可。

登录zhuang用户

centos7 vsftp 用户连接到了根目录 centos7搭建vsftp_虚拟用户_19


centos7 vsftp 用户连接到了根目录 centos7搭建vsftp_用户名_20


切换到joachiming用户查看

centos7 vsftp 用户连接到了根目录 centos7搭建vsftp_虚拟用户_21