vsftp安装与使用

说明:

FTP 传输模式分为两类,PORT 和PASV ,PORT 是一般形式的。这两种FTP在建立控制连接时操作是一样的,都是由客户端首先和FTP服务器的控制端口(默认值为21)建立控制链接,并通过此链接进行传输操作指令。

它们的区别在于使用数据传输端口(ftp- data)的方式。

  • PORT FTP由FTP服务器指定数据传输所使用的端口,默认值为20。
  • PASV FTP由FTP客户端决定数据传输的端口。 PASV FTP这种做法,主要是考虑到存在防火墙的环境下,由客户端与服务器进行沟通(客户端向服务器发出数据传输请求中包含了数据传输端口),决定两者之间的数 据传输端口更为方便一些。

vsftpd默认开启两种方式,如果只开启其中一个,在一些ftp客户端也能自动转换模式,要明确当前连接是哪种模式,可在服务端和客户端监控端口使用情况

安装

下载

系统 :centos7.9
cpu : x86_64
vsftp版本选择:3.0.2

官网: https://security.appspot.com/vsftpd.html#download
rpm包列表:https://developer.aliyun.com/packageSearch?word=vsftpd
rpm包具体连接:https://mirrors.aliyun.com/centos/7.9.2009/os/x86_64/Packages/vsftpd-3.0.2-28.el7.x86_64.rpm?spm=a2c6h.13651111.0.0.6e3c2f70aZxKB0&file=vsftpd-3.0.2-28.el7.x86_64.rpm

依赖包

基础配置-开启被动模式(主动模式默认开启)

配置文件:/etc/vsftpd/vsftpd.conf

  • 备份旧配置文件:
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
  • 清空/etc/vsftpd/vsftpd.conf配置内容,使用如下完整配置
port_enable=YES
pasv_enable=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
chroot_local_user=YES
chroot_list_enable=NO
chroot_list_file=/etc/vsftpd/chroot_list
listen=YES
#listen_ipv6=YES
guest_enable=YES
guest_username=ftpuser
ascii_upload_enable=YES
ascii_download_enable=YES
pam_service_name=vsftpd.virtual
userlist_enable=YES
tcp_wrappers=YES#3.0.3版本不再依赖此包,可以删除
user_config_dir=/etc/vsftpd/virtual_user_conf
pasv_min_port=6000#设置被动模式的端口范围,最小端口号~最大端口号
pasv_max_port=7000#我们设置的范围可以不用那么大,但数值最好大些(至少也大于1024)
  • port_enable=YES #开启port模式
  • pasv_enable=YES #开启pasv模式
  • listen=YES #使用ipv4
  • listen_ipv6=YES #使用ipv6,在同一个配置文件中不能同时使用,可配置两个文件同时使用(未验证)
  • connect_from_port_20=YES #port模式的默认端口

添加用户

添加操作系统用户

# -d 指定家目录为/opt/ftp,作为ftp用户目录,此目录所在磁盘空间要尽量大
useradd -d /opt/ftp -s /sbin/nologin ftpuser

# 修改家目录权限
chmod 777 -R /opt/ftp

添加ftp虚拟用户

cd /etc/vsftpd

  • 创建2个账户,test1、test2。第一行用户名,第二行密码
    #vi /etc/vsftpd/virtual_user
    test1
    test111
    test2
    test222
    
  • 上面的用户信息生成vsftpd 的认证文件:/etc/vsftpd目录下
    db_load -T -t hash -f virtual_user virtual_user.db
    chmod 600 virtual_user.db
    rm -f virtual_user
    
  • 建立虚拟用户所需的PAM配置文件,对虚拟用户的安全和账户权限进行验证
    #vi /etc/pam.d/vsftpd.virtual
    auth       required     pam_userdb.so db=/etc/vsftpd/virtual_user   
    account    required     pam_userdb.so db=/etc/vsftpd/virtual_user
    
  • 给不同虚拟用户设置不同权限,及主目录
    mkdir /opt/ftp/test1
    mkdir /opt/ftp/test2
    chown ftpuser:ftpuser  /opt/ftp/test1
    chown ftpuser:ftpuser  /opt/ftp/test2
    
  • 创建虚拟用户配置文件,及存放目录,配置文件的名称要跟之前 virtual_user.db 里用户名一致
    # mkdir /etc/vsftpd/virtual_user_conf
    # vi /etc/vsftpd/virtual_user_conf/test1
    
    local_root=/opt/ftp/test1
    allow_writeable_chroot=YES
    anon_world_readable_only=NO
    write_enable=YES
    anon_upload_enable=YES
    anon_mkdir_write_enable=YES
    anon_other_write_enable=YES
    
  • 问题:连接后可能存在只能查看无法操作的问题
    如果开启了selinux,如果不开,则不需要配置
    sestatus -b | grep ftp	# 查看ftp状态
    #把这个两个改成on后重启即可 ftpd_full_access、tftp_home_dir 
    setsebool -P ftpd_full_access on
    setsebool -P tftp_home_dir on
    

防火墙配置

开放连接端口:21

firewall-cmd --permanent --zone=public --add-port=21/tcp
firewall-cmd --reload

开放被动模式上传端口:6000~7000

firewall-cmd --permanent --zone=public --add-port=6000-7000/tcp
firewall-cmd --reload

开放主动模式上传端口:20

firewall-cmd --permanent --zone=public --add-port=20/tcp
firewall-cmd --reload

启动

systemctl restart vsftpd
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值