1. 安装启动 vsftpd
1. 查看是否安装过 vsftpd
vsftpd -v
2. 如果未安装则执行安装命令
yum -y install vsftpd
3. 安装 vsftpd 虚拟用户配置依赖包
yum install -y psmisc net-tools systemd-devel libdb-devel perl-DBI
4. 启动 vsftpd 服务
systemctl start vsftpd.service
5. 设置 vsftpd 开机启动
systemctl enable vsftpd.service
6. 设置文件夹权限
chmod 777 -R /var/ftp/pub
7. 关闭selinux服务
vi /etc/selinux/config
将SELINUX=enforcing改为:SELINUX=disabled
8. 安装ftp客户端
yum -y install ftp
9. 使用本地测试
ftp localhost
2. 修改配置文件 vsftpd.conf
修改前先备份
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
修改配置文件
vi /etc/vsftpd/vsftpd.conf
设定不允许匿名访问
anonymous_enable = NO
设定本地用户可以访问。注:如使用虚拟宿主用户,在该项目设定为NO的情况下所有虚拟用户将无法访问
local_enable = YES
write_enable = YES
local_umask = 022
dirmessage_enable = YES
记录上传下载文件的日志
xferlog_enable = YES
connect_from_port_20 = YES
chown_uploads = YES
chown_username= ftp
日志记录文件位置
xferlog_file = /var/log/vsftpd.log
格式化日志
xferlog_std_format = YES
设定支持ASCII模式的上传和下载功能
ascii_upload_enable = YES
ascii_download_enable = YES
使用户不能离开主目录
chroot_list_enable = YES
chroot_list_file = /etc/vsftpd/chroot_list
ls_recurse_enable = YES
监听IPv4 sockets
listen = YES
注释IPv6 sockets监听
listen_ipv6 = YES
PAM认证文件名,PAM将根据/etc/pam.d/vsftpd进行认证
pam_service_name = vsftpd
userlist_enable = YES
userlist_deny =YES
userlist_file = /etc/vsftpd/user_list
tcp_wrappers = YES
设定启用虚拟用户功能
guest_enable = YES
指定虚拟用户的宿主用户,CentOS中已经有内置的ftp用户了
guest_username = ftp
设定虚拟用户个人vsftp的CentOS FTP服务文件存放路径。存放虚拟用户个性的CentOS FTP服务文件(配置文件名=虚拟用户名)
user_config_dir = /etc/vsftpd/vconf
pasv_min_port =10221
pasv_max_port =10231
文件上传下载权限设置
allow_writeable_chroot = YES
anon_umask = 022
file_open_mode =777
虚拟用户和本地用户有相同的权限
virtual_use_local_privs = YES
3. 建立根目录锁定的帐户文件
将 vsftpd.conf 配置文件中的 guest_username 加入 chroot_list
touch /etc/vsftpd/chroot_list
echo ftp >> /etc/vsftpd/chroot_list
4. 创建虚拟用户账号密码文件
vi /etc/vsftpd/virtusers
单数行账号,双数行密码
lhc
liuhuachao
tjx
tangjiaxing
5. 生成虚拟用户认证的db文件
db_load -T -t hash -f /etc/vsftpd/virtusers /etc/vsftpd/virtusers.db
6. 设置PAM验证文件
修改前先备份
cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak
修改pam文件
vi /etc/pam.d/vsftpd
#%PAM-1.0
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers
auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
auth required pam_shells.so
auth include system-auth
account include system-auth
session include system-auth
session required pam_loginuid.so
7. 创建虚拟用户配置目录和文件
新建虚拟用户目录
mkdir -p /etc/vsftpd/vconf
文件名必须与第 5 步中建立的用户名一致
vi /etc/vsftpd/vconf/lhc ``` local_root=/home/vsftpd write_enable=YES anon_umask=022 anon_world_readable_only=NO anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES ```
8. 创建虚拟用户测试目录
mkdir -p /home/vsftpd
1. 注意:这里新建的目录名应该与配置文件中的 local_root 一致
2. 如果不同虚拟用户使用不同的目录,也应该建立相应目录。否则连接失败
chown -R vsftpd.vsftpd /home/vsftpd
注意:一定要修改目录的用户和用户组,不修改会造成上传文件失败
9. 设置防火墙
永久打开单个端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
永久打开区间端口
firewall-cmd --zone=public --add-port=4400-4600/tcp --permanent
在阿里云安全组设置开放端口
重启防火墙
systemctl restart firewalld.service
10. 测试ftp
重启vsftpd
systemctl restart vsftpd.service
在windows资源管理器中打开
ftp://ftp.*.com
使用xftp/FileZilla等客户端连接