是 Linux 下的一款小巧轻快、安全易用的 FTP 服务器软件。本教程以
CentOS 7.264位操作系统为例,说明
如何在 Linux 实例上安装并配置 vsftpd。
步骤一: 安装 vsftpd
- 远程连接 并登录到 Linux 实例。
- 运行命令
安装 vsftpd。出现下图表示安装成功。 http://static-aliyun-doc.oss-cn-hangzhou.aliyuncs.com/assets/img/21756/155434705512598_zh-CN.pngyum install -y vsftpd
- 运行以下命令进入
目录,并查看该目录下的文件。/etc/vsftpd
http://static-aliyun-doc.oss-cn-hangzhou.aliyuncs.com/assets/img/21756/155434705612599_zh-CN.png 说明cd /etc/vsftpd ls
-
是 vsftpd 的核心配置文件。/etc/vsftpd/vsftpd.conf
-
是黑名单文件,此文件里的用户不允许访问 FTP 服务器。/etc/vsftpd/ftpusers
-
是白名单文件,此文件里的用户允许访问 FTP 服务器。/etc/vsftpd/user_list
-
- 运行以下命令设置FTP服务开机自启动。
systemctl enable vsftpd.service
- 运行以下命令启动 FTP 服务。
systemctl start vsftpd.service
- 运行以下命令查看 FTP 服务监听的端口。
http://static-aliyun-doc.oss-cn-hangzhou.aliyuncs.com/assets/img/21756/155434705612600_zh-CN.pngnetstat -antup | grep ftp
步骤二: 配置 vsftpd
vsftpd 安装后默认开启了匿名访问 FTP 服务器的功能。使用匿名访问,您无需输入用户名密码即可登录 FTP 服务器,但没有权限修改或上传文件。
本教程介绍了以下两种配置 vsftpd 的方法,并提供了相关的参数说明,您可以根据具体需要进行参考。
- 配置匿名用户上传文件权限
- 配置本地用户登录
匿名访问FTP服务器是一种不安全的访问模式,任何人无需密码验证就可以登录到FTP服务器,这种模式一般只用来保存不重要的公开文件,不推荐在生产环境中使用。如果您需要配置匿名用户上传文件的权限,可以参考以下步骤配置:
- 修改
/etc/vsftpd/vsftpd.conf
- 运行
vim /etc/vsftpd/vsftpd.conf
- 按i 键进入编辑模式。
- 将写权限修改为
write_enable=YES
- 将匿名上传权限修改为
anon_upload_enable=YES
- 按Esc键退出编辑模式,然后输入
保存并退出文件。 http://static-aliyun-doc.oss-cn-hangzhou.aliyuncs.com/assets/img/21756/155434705612602_zh-CN.png:wq
- 运行
- 运行以下命令更改
目录的权限,为 FTP 用户添加写权限,并重新加载配置文件。/var/ftp/pub
http://static-aliyun-doc.oss-cn-hangzhou.aliyuncs.com/assets/img/21756/155434705612603_zh-CN.pngchmod o+w /var/ftp/pub/ systemctl restart vsftpd.service
本地用户登录是指用户使用 Linux 操作系统的账号和密码登录 FTP 服务器。
vsftpd 安装后默认只支持匿名访问 FTP 服务器,如果您试图使用 Linux 操作系统中的账号登录服务器,将会被 vsftpd 服务拒绝。您可以参考以下步骤配置 vsftpd 服务,以使用Linux账号和密码访问FTP服务器。
- 运行以下命令为FTP服务创建一个Linux用户。本示例中,该用户名为ftptest。
useradd ftptest
- 运行以下命令修改ftptest 用户的密码。
passwd ftptest
- 创建一个供FTP服务使用的文件目录。
mkdir /var/ftp/test
- 更改/var/ftp/test目录的拥有者为ftptest。
chown -R ftptest:ftptest /var/ftp/test
- 输入命令
打开vsftpd.conf配置文件并按键i进入编辑模式。vim /etc/vsftpd/vsftpd.conf
-
修改vsftpd.conf配置文件。
FTP服务器可以配置为主动模式或被动模式。
- 主动模式下,客户端向服务端发送数据端口的信息,由服务端主动连接客户端发送的数据端口。配置FTP为主动模式的参数如下:
#禁止匿名登录FTP服务器 anonymous_enable=NO
允许本地用户登录FTP服务器
local_enable=YES
设置本地用户登录后所在的目录
local_root=/var/ftp/test
全部用户被限制在主目录
chroot_local_user=YES
启用例外用户名单
chroot_list_enable=YES
指定例外用户列表,这些用户不被锁定在主目录
chroot_list_file=/etc/vsftpd/chroot_list
配置其他参数
allow_writeable_chroot=YES local_umask=022 dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_std_format=YES listen=YES pam_service_name=vsftpd userlist_enable=YES tcp_wrappers=YES
- 被动模式下,服务端开启并发送数据端口的信息给客户端,由客户端连接服务端开启的数据端口,服务端被动接受连接。在被动模式下,您需要配置服务端可以开启的数据端口范围。配置FTP为被动模式的参数如下:
#禁止匿名登录FTP服务器 anonymous_enable=NO
允许本地用户登录FTP服务器
local_enable=YES
设置本地用户登录后所在目录
local_root=/var/ftp/test
全部用户被限制在主目录
chroot_local_user=YES
启用例外用户名单
chroot_list_enable=YES
指定例外用户列表,这些用户不被锁定在主目录
chroot_list_file=/etc/vsftpd/chroot_list
开启被动模式
pasv_enable=YES
FTP服务器公网IP
pasv_address=<FTP服务器公网IP>
设置被动模式下,建立数据传输可使用port范围的最小值
pasv_min_port=port number
设置被动模式下,建立数据传输可使用port范围的最大值
pasv_max_port=port number
配置其他参数
local_umask=022 dirmessage_enable=YES xferlog_enable=YES xferlog_std_format=YES tcp_wrappers=YES allow_writeable_chroot=YES listen=YES listen_ipv6=NO pam_service_name=vsftpd userlist_enable=YES
<blockquote> <p><strong>说明</strong> 建议您把端口范围设在比较高的一段范围内,比如50000-50010,有助于提高访问FTP服务器的安全性。</p> </blockquote> </li></ul></li><li>按Esc键退出编辑模式,然后按键<code>:wq</code>保存并退出文件。</li><li>运行<code>vim /etc/vsftpd/chroot_list</code>命令创建chroot_list文件,并写入不受只可以访问其主目录限制的例外用户名单。
说明 如果没有例外用户也必须要有 chroot_list文件,内容可为空。
- 按键Esc退出编辑模式,然后按键
:wq
- 运行以下命令重启vsftpd服务。
systemctl restart vsftpd.service
- 主动模式下,客户端向服务端发送数据端口的信息,由服务端主动连接客户端发送的数据端口。配置FTP为主动模式的参数如下:
cat /etc/vsftpd/vsftpd.conf
查看配置文件内容。
用户登录控制:
参数 | |
---|---|
anonymous_enable=YES | 接受匿名用户 |
no_anon_password=YES | 匿名用户login时不询问口令 |
anon_root=(none) | 匿名用户主目录 |
local_enable=YES | 接受本地用户 |
local_root=(none) | 本地用户主目录 |
用户权限控制:
write_enable=YES | 可以上传(全局控制) |
local_umask=022 | 本地用户上传文件的umask |
file_open_mode=0666 | 上传文件的权限配合umask使用 |
anon_upload_enable=NO | 匿名用户可以上传 |
anon_mkdir_write_enable=NO | 匿名用户可以建目录 |
anon_other_write_enable=NO | 匿名用户修改删除 |
chown_username=lightwiter | 匿名上传文件所属用户名 |
步骤三: 设置安全组
搭建好 FTP 站点后,您需要在实例安全组的入方向添加放行下列 FTP 端口的规则。
- FTP 为主动模式时:端口21。
- FTP 为被动模式时:端口21,以及配置文件/etc/vsftpd/vsftpd.conf中参数pasv_min_port和pasv_max_port之间的所有端口。
添加安全组规则的具体步骤,请参见
添加安全组规则步骤四: 客户端测试
您可以通过 FTP 客户端或浏览器访问 FTP 服务器进行测试。本教程以windows自带的IE(Internet Explorer)浏览器为例,分别为您介绍 FTP 服务器配置为主动模式或被动模式时的访问步骤。
FTP服务器为主动模式- 打开客户端的 IE 浏览器。
- 将浏览器设置为主动访问模式。选择 设置 > Internet 选项 > 高级 。勾选 启用 FTP 文件夹视图,取消勾选 使用被动 FTP。
- 在地址栏中输入
,例如:ftp://<FTP服务器IP地址>:FTP端口
ftp://39.10.0.28:21
- 在弹出的对话框中,输入用户名和密码,即可对 FTP 文件进行相应权限的操作。
- 将浏览器设置为被动访问模式。选择 设置 > Internet 选项 > 高级 。勾选 启用 FTP 文件夹视图,勾选 使用被动 FTP。
-
ftp://<FTP服务器IP地址>:FTP端口
ftp://39.10.0.28:21
说明 使用浏览器访问 FTP 服务器出错时,建议您清除浏览器缓存后再尝试。 云服务器ECS地址:阿里云·云小站