一、环境检查
1.1、检查是否安装vsftp服务
执行:vsftpd -v 或 rpm -q vsftpd。如图所示表示该服务器没有安装vsftp服务。
1.2、查看操作系统版本
执行:uname -r,该操作系统版本为centos7
二、安装vsftp服务
执行:yum install vsftpd
至于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)
四、vsftpd.conf配置
进入/etc/vsftpd 目录下,执行 vi vsftpd.conf
输入配置文件如下:
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
如图配置了两个账户:joachiming,zhuang。密码都是123456然后执行:db_load -T -t hash -f /etc/vsftpd/vsftpd_login.txt /etc/vsftpd/vsftpd_login.db
六、配置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
七、创建用户配置目录
这个目录和vsftpd.conf中的参user_config_dir配置的路径一致,当前配置的
目录为user_config_dir=/etc/vsftpd/vsftpd_user_conf,所以在/etc/vsftpd路
径下创建vsftpd_user_conf目录。执行:mkdir vsftpd_user_conf
进入vsftpd_user_conf目录,创建与vsftpd_login.txt目录配置的用户名称一样的文件,当前配置的用户为joachiming,所以执行: vi joachiming
加入配置:
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
然后保存即可。同样的方式新加zhuang用户目录,修改下数据目录即可。
八、创建数据目录并赋权(重要)
配置的joachiming用户数据目录为:/home/vsftpd/joachiming,zhuang用户数据目录为:/home/vsftpd/zhuang,,执行创建目录命令:mkdir -p /home/vsftpd/joachiming 以及 mkdir -p /home/vsftpd/zhuang 分别创建用户目录
这时候要修改目录的执行权限以及目录所有权,把目录的所有权赋予给虚拟vsftpd用户,执行:chown -R vsftpd:vsftpd /home/vsftpd/joachiming 以及 chown -R vsftpd:vsftpd /home/vsftpd/zhuang
接着分别在joachimng目录下创建joachimng_test目录,以及在zhuang目录下创建zhuang_test目录,同样的方式修改文件的所有者。
九、启动
systemctl start vsftpd.service #启动
systemctl restart vsftpd.service #重启
systemctl status vsftpd.service #查看运行状态
浏览器输入:ftp://ip:port ,然后输入用户名密码即可。
登录zhuang用户
切换到joachiming用户查看