使用vsftpd搭建FTP服务器并实现文件上传与下载
一、前期准备
1、仓库源准备
# 挂载光盘
mount /dev/sr0 /mnt
# 删除仓库源文件
rm -rf /etc/yum.repos.d/*
# 编写仓库源文件
vim /etc/yum.repos.d/vsftpd.repo
# 内容
[vsftpd]
name=centos7
baseurl=file:///mnt
enabled=1
gpgcheck=0
2、vsftpd 安装、使用
- 安装
yum clean all # 清除缓存
yum repolist all # 可略
yum install vsftpd -y
systemctl start vsftpd
- 查看状态
ps -e | grep ftp
systemctl status vsftpd.service
- 使用
systemctl start vsftpd # 启动
systemctl restart vsftpd # 重启
systemctl enable vsftpd # 自启动
3、vsftpd.conf 主配置文件
- 清除带#号的注释信息
mv /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
# 拷贝一个使用
grep -v "#" /etc/vsftpd/vsftpd.conf.bak > /etc/vsftpd/vsftpd.conf
- 原始内容
cat /etc/vsftpd/vsftpd.conf -n
# 如下:
anonymous_enable=YES # 默认允许匿名用户登录
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
二、用户登录前期准备
获取虚拟机ip ✨
# 分配一个虚拟机ip
dhclient
ifconfig
#【第二行的ip就是虚拟机ip】
# 后面登录的时候就可以在自己的本地电脑:此电脑 中进行连接
ftp://虚拟机ip
权限与资源目录设置
- 赋予权限
# 资源目录
ls -ld /var/ftp/pub
chmod 777 /var/ftp/pub
ls -ld /var/ftp/pub
systemctl restart vsftpd
# 防火墙
systemctl stop firewalld # 临时关闭防火墙
systemctl status firewalld # 查看状态: 若有dead字样表示成功
# selinux
setenforce 0 # 临时关闭
getenforce # 查看状态:若为Permissive表示成功
- vsftpd 资源目录
# 测试文件备用
cd /var/ftp/pub
touch demo.tar # ftp连接成功后可看到此文件
window本地配置
- 开启ftp
控制面板 --> 程序 --> 启用或关闭Windows功能
- 防火墙开放ftp
控制面板 --> 系统安全 --> 允许应用通过Windows防火墙
三、用户登录实现
1、匿名用户登录
# 拷贝一个使用
grep -v "#" /etc/vsftpd/vsftpd.conf.bak > /etc/vsftpd/vsftpd.conf
- vsftp 配置
vim /etc/vsftpd/vsftpd.conf
# 新增
anon_root=/var/ftp
anon_upload_enable=YES
anon_mkdir_write_enable=YES
systemctl restart vsftpd
# 本地直接ftp连接即可(密码啥的都不用)
2、本地用户登录
# 拷贝一个使用
grep -v "#" /etc/vsftpd/vsftpd.conf.bak > /etc/vsftpd/vsftpd.conf
- vsftp 配置
vim /etc/vsftpd/vsftpd.conf
# 修改
anonymous_enable=NO
systemctl restart vsftpd
# ftp连接(使用Centos登录的账号即可)
3、虚拟用户登录
- 创建虚拟用户
mkdir /vftp
vim /vftp/vuser.txt
# 内容
lencamo
666666
zhangsan
555555
- 使虚拟用户生效
db_load -T -t hash -f /vftp/vuser.txt /vftp/vuser.db
chmod 700 /vftp/vuser.db
cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak # 备份
vim /etc/pam.d/vsftpd
# 用‘#’注释所有内容,并新增内容如下:
auth required pam_userdb.so db=/vftp/vuser
account required pam_userdb.so db=/vftp/vuser
useradd -d /var/ftp/vuser vuser
chown vuser.vuser /var/ftp/vuser
chmod 555 /var/ftp/vuser
ls -ld /var/ftp/vuser
- vsftp 配置
# 拷贝一个使用
grep -v "#" /etc/vsftpd/vsftpd.conf.bak > /etc/vsftpd/vsftpd.conf
vim /etc/vsftpd/vsftpd.conf
# 清空原内容,然后新增下面配置:
anonymous_enable=NO
local_enable=YES
chroot_local_user=YES
allow_writeable_chroot=YES
write_enable=YES
guest_enable=YES
guest_username=vuser
listen=YES
pam_service_name=vsftpd
local_root=/var/ftp
anon_upload_enable=YES
anon_mkdir_write_enable=YES
systemctl restart vsftpd
# ftp连接(使用虚拟用户登录即可)