1 安装vsftpd
yum install -y vsftpd ftp
2 配置vsftpd
-
创建宿主用户
useradd ftpuser
-
备份vsftpd.conf文件
mv /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.backup
-
修改vsftpd.conf文
vim /etc/vsftpd/vsftpd.conf
添加如下内容
anonymous_enable=NO local_enable=YES write_enable=YES local_umask=022 anon_upload_enable=NO anon_mkdir_write_enable=NO dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES chown_uploads=NO xferlog_file=/var/log/vsftpd.log xferlog_std_format=YES async_abor_enable=YES ascii_upload_enable=YES ascii_download_enable=YES ftpd_banner=Welcome to FTP Server chroot_local_user=YES ls_recurse_enable=NO listen=YES hide_ids=YES pam_service_name=vsftpd userlist_enable=YES tcp_wrappers=YES guest_enable=YES allow_writeable_chroot=YES #虚拟机宿主用户 guest_username=ftpuser virtual_use_local_privs=YES #个人vsftp文件存放目录 user_config_dir=/etc/vsftpd/vconf
注意:
- 虚拟机宿主用户要改为自己创建的用户
2.2 虚拟用户配置
-
制作虚拟用户文件
vim /etc/vsftpd/virftp.txt
myftp1 123 myftp2 123
-
生成虚拟用户数据库文件
db_load -T -t hash -f /etc/vsftpd/virftp.txt /etc/vsftpd/virftp.db
如果修改了/etc/vsftpd/virftp.txt 内容,需要 再次 生成虚拟用户数据库文件
2.3 设置认证文件 PAM
vim /etc/pam.d/vsftpd
注释 除第二行以外 的
详情如下:
#%PAM-1.0
#session optional pam_keyinit.so force revoke
auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
#auth required pam_shells.so
#auth include password-auth
#account include password-auth
#session required pam_loginuid.so
#session include password-auth
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virftp
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virftp
2.4 虚拟用户配置
-
创建虚拟用户配置文件存放路径
mkdir /etc/vsftpd/vconf
-
创建虚拟用户家路径
mkdir /home/vft
-
赋予宿主用户权限
chown ftpuser:ftpuser /home/vftp
-
建立 单个虚拟用户 配置文件
myftp1 是自定义的虚拟用户名字
vim /etc/vsftpd/vconf/myftp1
local_root=/home/ftp #指定虚拟用户的具体主路径,可更改 anonymous_enable=NO #设定不允许匿名用户访问 write_enable=YES #设定允许写操作 local_umask=022 #设定上传文件权限掩码 anon_upload_enable=NO #设定不允许匿名用户上传 anon_mkdir_write_enable=NO #设定不允许匿名用户建立目录 idle_session_timeout=600 #设定空闲连接超时时间 data_connection_timeout=120 #设定单次连续传输最大时间 max_clients=10 #设定并发客户端访问个数 max_per_ip=5 #设定单个客户端的最大线程数,这个配置主要来照顾Flashget、迅雷等多线程下载软件 local_max_rate=50000 #设定该用户的最大传输速率,单位b/s
-
复制 修改文件名为第二个虚拟用户的名字
cp /etc/vsftpd/vconf/myftp1 /etc/vsftpd/vconf/myftp2
3 配置黑名单
-
在vsftpd.conf中修改userlist_enable = YES
vim /etc/vsftpd/vsftpd.conf
userlist_enable=YES
本文中已修改
-
在黑名单中添加用户名字 myftp2
vim /etc/vsftpd/user_list
添加并保存
4 测试
- 重启服务
systemctl restart vsftpd
-
测试黑名单
ftp localhost
-
创建
5 遇到的错误
500 OOPS: vsftpd: refusing to run with writable root inside chroot()
在vsftpd.conf中把 allow_writeable_chroot打开 (本文配置中已打开)
allow_writeable_chroot=YES
550 create directory operation failed
关闭SELinux
vim /etc/selinux/config
将 SELINUX=XXX -->XXX 代表级别
改为:
SELINUX=disabled