[笔记]CentOS7 vsftpd安装及配置使用

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
云防火墙,500元 1000GB
简介: [笔记]CentOS7 vsftpd安装及配置使用

前言

最近在调研ftp服务的登陆 所以有必要安装研究一下作为Linux端ftp的实现软件—— vsftpd

以vsftpd 3.02版本为例

一、安装配置

1.1 卸载vsftpd

先查找vsftpd是否安装

[root@localhost ~]# rpm -aq vsftpd
vsftpd-3.0.2-29.el7_9.x86_64

有输出就代表已经安装了

卸载之前先停止vsftpd

systemctl stop vsftpd

再卸载

rpm -e vsftpd
• 1

1.2 安装vsftpd

yum install -y vsftpd

注意:如果提示"No package vsftpd available."

执行如下

wget http://mirror.centos.org/centos/7/updates/x86_64/Packages/vsftpd-3.0.2-29.el7_9.x86_64.rpm
rpm -ivh vsftpd-3.0.2-29.el7_9.x86_64.rpm

1.3 安装ftp客户端

vsftpd是服务端,ftp是客户端。

要想访问我们的vsftpd服务就必须要先安装客户端。

yum install ftp -y

如果提示“No package ftp available.”, 则执行以下操作

wget http://mirror.centos.org/centos/7/os/x86_64/Packages/ftp-0.17-67.el7.x86_64.rpm
rpm -ivh ftp-0.17-67.el7.x86_64.rpm

1.4 启动vsftpd

systemctl start vsftpd

1.5 防火墙配置

防火墙放行21端口

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

防火墙永久开放ftp服务,即类似windows 防火墙可让该应用 通行

firewall-cmd --add-service=ftp --permanent

防火墙重新加载

firewall-cmd --reload

1.6 Selinux配置

CentOS的所有访问权限都是由SELinux来管理的,为了避免我们安装中由于权限关系而导致的失败,需要先将其关闭,以后根据需要再进行重新管理。

查看selinux状态

[root@localhost script]# sestatus 
SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   enforcing
Mode from config file:          enforcing
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Max kernel policy version:      31

临时关闭selinux

# 临时关闭SE
getenforce
setenforce 0

永久关闭

getsebool -a | grep ftp 
setsebool -P ftpd_full_access on

二、相关目录

# vsftp配置文件
/etc/vsftpd/vsftpd.conf
# PAM认证文件
/etc/pam.d/vsftpd
# 匿名用户默认目录
/var/ftp
# 匿名用户的下载目录
/var/ftp/pub
# 不能访问 ftp server 的用户列表
/etc/vsftpd/ftpusers
# 允许访问 ftp server 的用户列表
/etc/vsftpd/user_list
# ftp 的上传下载日志
/var/log/xferlog
# ftp登陆日志目录 需要 vsftpd.conf conf dual_log_enable=YES
/var/log/vsftpd.log

三、配置conf

3.1 配置/etc/vsftpd/vsftpd.conf

先备份一份

cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak

注意:添加配置项时结尾不要有空格 不然可能会启动不了服务

3.2 vsftpd日志配置

ftp服务器的日志设置,可以通过修改主配置文件/etc/vsftpd.conf实现。

主配置文件中与日志设置有关的选项包括:

  • xferlog_enable
  • xferlog_file
  • dual_log_enable

xferlog_enable

如果启用该选项,系统将会维护记录服务器上传和下载情况的日志文件。默认情况下,该日志文件为 /var/log/vsftpd.log。但也可以通过配置文件中的 vsftpd_log_file 选项来指定其他文件。默认值为NO。

xferlog_std_format

如果启用该选项,传输日志文件将以标准 xferlog 的格式书写,该格式的日志文件默认为 /var/log/xferlog,也可以通过 xferlog_file 选项对其进行设定。默认值为NO。

dual_log_enable

如果启用该选项,将生成两个相似的日志文件,默认在 /var/log/xferlog/var/log/vsftpd.log 目录下。前者是 wu-ftpd 类型的传输日志,可以利用标准日志工具对其进行分析;后者是Vsftpd类型的日志。

syslog_enable

如果启用该选项,则原本应该输出到/var/log/vsftpd.log中的日志,将输出到系统日志中。

四、使用

4.0 ftp命令 基本使用

vsftpd是服务端,ftp是客户端。

要想使用ftp命令就必须要先安装ftp

安装方法 参考本章 安装ftp客户端

4.1 开启vsftpd登陆日志

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

添加:

dual_log_enable=YES

然后重启ftp服务即可

systemctl restart vsftpd

4.2 使用Winscp Root账号登陆FTP

  1. 修改 vsftpd.conf 配置
anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=077
anon_upload_enable=YES
anon_mkdir_write_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/xferlog
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
anon_root=/var/ftp/
dual_log_enable=YES
  1. 修改 /etc/vsftpd/user_list 配置文件
    注释掉root
  2. 修改/etc/vsftpd/ftpusers配置文件
    注释掉root

然后接下来你就可以使用root账号进行ftp登陆进行上传下载了

4.3 匿名模式 访问ftp服务

匿名模式是最不安全的一种认证模式,任何人都可以无须密码验证而直接登录到FTP服务器。

4.4 本地用户模式 访问ftp服务

本地用户模式 是通过Linux系统本地的账户密码信息进行认证的模式,相较于匿名开放模式更安全,而且配置起来也很简单。但是如果黑客破解了账户的信息,就可以畅通无阻地登录FTP服务器,从而完全控制整台服务器。

4.5 虚拟用户模式

参考

虚拟用户模式是更安全的一种认证模式,它需要为FTP服务单独建立用户数据库文件,虚拟出用来进行密码验证的账户信息,而这些账户信息在服务器系统中实际上是不存在的,仅供FTP服务程序进行认证使用。这样,即使黑客破解了账户信息也无法登录服务器,从而有效降低了破坏范围和影响。

4.6 连接的主动模式和被动模式

https://www.cnblogs.com/puloieswind/p/15727632.html

  1. 完成一个FTP的传输过程不仅仅只需要21一个端口,而是2个端口,21端口只是一个命令端口,其实另外还有一个数据端口,我想这就是有些朋友在内网架设FTP并且在网关上做了21端口的映射之后外网还是不能访问的原因吧,另外一个数据端口是多少呢?这又牵涉到另外一个问题。
  2. FTP具有两种模式,分别是port模式(也叫主动模式)pasv模式(也叫被动模式),怎么来理解这两种模式呢?我来打个比喻吧,在主动模式下:客户端给服务器端的21端口发命令说,我要下载什么什么,并且还会说我已经打开了自己的某个端口,你就从这里把东西给我吧,服务器知道后就会通过另外一个数据端口把东西传给客户端,这就是主动模式,可以理解为服务端主动给客户端传输文件;在被动模式下:客户端给服务器端的21端口发命令说,我要下载什么什么,服务器端知道后,就打开一个端口,然后告诉客户端,我已经打开了某某端口,你自己进去拿吧,于是客户端就从那个端口进去拿文件了,这就是被动模式,可以理解为服务端被客户端拿走了东西

五、常见问题

5.1 匿名访问ftp服务

ftp://xx.xxx.xxx.xx 访问时超时或者无法访问

5.2 使用Winscp Root角色登陆 提示 Permission denied.

ftpusers文件

查看root角色是否在 不能访问 ftp server 的用户列表/etc/vsftpd/ftpusers中,如果在删除

user_list文件

查看root角色是否在 允许访问 ftp server 的用户列表/etc/vsftpd/user_list中,如果不在就添加

If userlist_deny=NO, only allow users in this file

If userlist_deny=YES (default), never allow users in this file, and

5.3 /var/log/vsftpd.log 不存在或者为空

1.为空 可能是没有登陆行为

2.vsftpd.conf 没有添加 dual_log_enable=YES 配置项

5.4 OOPS: could not read chroot() list file:/etc/vsftpd/chroot_list

参考

/etc/vsftpd/vsftpd.conf #编辑vsftpd配置文件

找到以下三行,注释掉就行可以了

chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

改为

#chroot_local_user=YES
#chroot_list_enable=YES
#chroot_list_file=/etc/vsftpd/chroot_list

重启FTP

systemctl restart vsftpd

Winscp登陆访问ftp时 提示“监测到超时! (数据连接) 无法获得目录列表 列出‘/‘的目录项时出错。”

参考

阿里云轻型应用服务器 公网连接vsftpd连接不上

参考

  1. 检查一下阿里云服务器防火墙20-21端口是否开放
  2. 配置完如果发现没有生效 重启一下服务器 再试

打开FTP 服务器上的文件夹时发生错误,请检查是否有权限访问该文件夹 FTP

解决方法1 地址栏\改为// 试试

参考

总结

本节主要介绍了vsftp的安装和使用,有问题的可以评论留言


参考:

Linux使用笔记:配置FTP服务器(vsftp)

VSFTP介绍安装使用

centos7搭建vsftpd-配置文件全解

阿里云的esc ftp搭建

vsftpd日志配置

《linux就该这么学》之 vsftpd


相关文章
|
6天前
|
存储 分布式计算 Hadoop
Centos7.9安装kerberos
Centos7.9安装kerberos
55 25
|
1天前
|
存储 Shell 网络安全
Centos7.9安装openldap
Centos7.9安装openldap
32 16
|
2天前
|
数据可视化 Linux 应用服务中间件
Centos7.9安装phpldapadmin
Centos7.9安装phpldapadmin
33 15
|
6天前
|
Java
CentOS7.8配置Adoptium-Java17运行环境
本指南介绍如何设置清华镜像源并安装 Temurin-17-JRE 运行环境。首先,编辑 `/etc/yum.repos.d/adoptium.repo` 文件,配置清华镜像源。接着,使用 `yum install -y temurin-17-jre` 命令安装 Temurin-17-JRE,并通过 `java --version` 验证安装成功。相关配置和操作界面截图附后。
22 8
|
5天前
|
网络协议 Java 应用服务中间件
centos7环境下tomcat8的安装与配置
本文介绍了在Linux环境下安装和配置Tomcat 8的详细步骤。首先,通过无网络条件下的文件交互软件(如Xftp 6或MobaXterm)下载并解压Tomcat安装包至指定路径,启动Tomcat服务并测试访问。接着,修改Tomcat端口号以避免冲突,并部署Java Web应用项目至Tomcat服务器。最后,调整Linux防火墙规则,确保外部可以正常访问部署的应用。关键步骤包括关闭或配置防火墙、添加必要的端口规则,确保Tomcat服务稳定运行。
|
2月前
|
SQL 存储 Linux
从配置源到数据库初始化一步步教你在CentOS 7.9上安装SQL Server 2019
【11月更文挑战第16天】本文介绍了在 CentOS 7.9 上安装 SQL Server 2019 的详细步骤,包括配置系统源、安装 SQL Server 2019 软件包以及数据库初始化,确保 SQL Server 正常运行。
115 4
|
2月前
|
SQL 存储 Linux
从配置源到数据库初始化一步步教你在CentOS 7.9上安装SQL Server 2019
【11月更文挑战第8天】本文介绍了在 CentOS 7.9 上安装 SQL Server 2019 的详细步骤,包括系统准备、配置安装源、安装 SQL Server 软件包、运行安装程序、初始化数据库以及配置远程连接。通过这些步骤,您可以顺利地在 CentOS 系统上部署和使用 SQL Server 2019。
141 1
|
3月前
|
Linux 网络安全 数据安全/隐私保护
Linux系统之Centos7安装cockpit图形管理界面
【10月更文挑战第12天】Linux系统之Centos7安装cockpit图形管理界面
145 1
Linux系统之Centos7安装cockpit图形管理界面
|
2月前
|
SQL 存储 Linux
从配置源到数据库初始化一步步教你在CentOS 7.9上安装SQL Server 2019
【11月更文挑战第7天】本文介绍了在 CentOS 7.9 上安装 SQL Server 2019 的详细步骤,包括系统要求检查与准备、配置安装源、安装 SQL Server 2019、配置 SQL Server 以及数据库初始化(可选)。通过这些步骤,你可以成功安装并初步配置 SQL Server 2019,进行简单的数据库操作。
|
2月前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。通过具体案例,读者可以了解如何准备环境、下载源码、编译安装、配置服务及登录 MySQL。编译源码安装虽然复杂,但提供了更高的定制性和灵活性,适用于需要高度定制的场景。
161 3