[笔记]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


相关文章
|
13天前
|
SQL 存储 Linux
从配置源到数据库初始化一步步教你在CentOS 7.9上安装SQL Server 2019
【11月更文挑战第8天】本文介绍了在 CentOS 7.9 上安装 SQL Server 2019 的详细步骤,包括系统准备、配置安装源、安装 SQL Server 软件包、运行安装程序、初始化数据库以及配置远程连接。通过这些步骤,您可以顺利地在 CentOS 系统上部署和使用 SQL Server 2019。
|
14天前
|
SQL 存储 Linux
从配置源到数据库初始化一步步教你在CentOS 7.9上安装SQL Server 2019
【11月更文挑战第7天】本文介绍了在 CentOS 7.9 上安装 SQL Server 2019 的详细步骤,包括系统要求检查与准备、配置安装源、安装 SQL Server 2019、配置 SQL Server 以及数据库初始化(可选)。通过这些步骤,你可以成功安装并初步配置 SQL Server 2019,进行简单的数据库操作。
|
1月前
|
Linux 网络安全 数据安全/隐私保护
Linux系统之Centos7安装cockpit图形管理界面
【10月更文挑战第12天】Linux系统之Centos7安装cockpit图形管理界面
90 1
Linux系统之Centos7安装cockpit图形管理界面
|
21天前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。通过具体案例,读者可以了解如何准备环境、下载源码、编译安装、配置服务及登录 MySQL。编译源码安装虽然复杂,但提供了更高的定制性和灵活性,适用于需要高度定制的场景。
62 3
|
22天前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。
本文介绍了在 CentOS 7 中通过编译源码安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。内容涵盖准备工作、下载源码、编译安装、配置服务、登录设置及实践心得,帮助读者根据需求选择最适合的安装方法。
39 2
|
24天前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
74 2
|
28天前
|
Linux 知识图谱
Centos7安装killall,fuser, killall,pstree和pstree.x11
通过上述步骤,您已在CentOS 7系统中成功部署了killall、fuser、pstree以及pstree.x11,为高效管理系统进程打下了坚实基础。更多关于服务器管理与优化的知识,获取全面技术支持与解决方案。
44 1
|
28天前
|
监控 安全 Linux
CentOS7下安装配置ntp服务的方法教程
通过以上步骤,您不仅能在CentOS 7系统中成功部署NTP服务,还能确保其配置合理、运行稳定,为系统时间的精确性提供保障。欲了解更多高级配置或遇到特定问题,提供了丰富的服务器管理和优化资源,可作为进一步学习和求助的平台。
66 1
|
10天前
|
存储 安全 Linux
VMware安装CentOS7
【11月更文挑战第11天】本文详细介绍了在 VMware 中安装 CentOS 7 的步骤,包括准备工作、创建虚拟机、配置虚拟机硬件和安装 CentOS 7。具体步骤涵盖下载 CentOS 7 镜像文件、安装 VMware 软件、创建和配置虚拟机硬件、启动虚拟机并进行安装设置,最终完成 CentOS 7 的安装。在安装过程中,需注意合理设置磁盘分区、软件选择和网络配置,以确保系统的性能和功能满足需求。
|
1月前
|
Java jenkins 持续交付
Centos7下docker的jenkins下载并配置jdk与maven
通过上述步骤,您将成功在CentOS 7上的Docker容器中部署了Jenkins,并配置好了JDK与Maven,为持续集成和自动化构建打下了坚实基础。
109 1
下一篇
无影云桌面