Fork me on GitHub

使用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功能

image

  • 防火墙开放ftp

控制面板 --> 系统安全 --> 允许应用通过Windows防火墙

image

三、用户登录实现

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连接(使用虚拟用户登录即可)
posted @ 2022-12-11 16:08  Lencamo  阅读(1569)  评论(0编辑  收藏  举报