外观
01.阿里云ECS上Linux系统实例搭建FTP站点
约 1999 字大约 7 分钟
进阶工具技术学习个人
2022-06-05
背景知识
在开始第一天任务之前,先记录一下 ECS 、FTP 、VSFTPD这三个概念。(如果不了解它们分别代表什么,那么此次任务的意义就没法体现。)
ECS:云服务器 ECS ,全称 Elastic Compute Service ,是阿里云提供的一种弹性计算服务。简单来说,ECS 就是一个服务器,只不过在“云”上,用户省去了以前实体服务器采购、运维等步骤,而且还没有设备折旧之类的顾虑。相对于实体服务器的限制,ECS 支持即开即用,以及还可以对服务器配置弹性伸缩。
FTP:文件传输协议 FTP,全称 File Transfer Protocol ,是 TCP/IP 协议组中的协议之一。FTP 协议由两个部分组成,一是 FTP 服务器,可以用来存储文件;二是 FTP 客户端,可以用来访问 FTP 服务器上的资源。该协议默认使用 TCP 端口中的20和21这两个端口。
VSFTPD:全称 very secure FTP daemon ,是一款在 Linux 发行版中最受推崇的FTP服务器。在今天的任务中,将使用这款服务器软件开启 FTP 服务。
第一步:远程连接 ECS 服务器
首先,根据提示在页面左侧开通云产品资源,免费开通一个 ECS 服务器,用于后续实验。

然后,打开 Terminal ,输入连接命令ssh [username]@[ipaddress],其中[username]对应 ECS 服务器的用户,一般为默认的root,[ipaddress]对应 ECS 服务器的弹性****ip,该信息可从右侧的 ECS 服务器信息栏获取。例如:ssh root@123.123.123.123(注意,ssh与root之间存在一个空格。)
输入连接命令后,提示 Are you sure you want to continue connecting (yes/no)?,直接输入yes继续连接,之后会要求输入 ECS 服务器的密码,密码依旧可从右侧的信息栏获取。(注意,输入密码时不可见,不要误以为自己没输。)
输入正确密码后,提示Welcome to Alibaba Cloud Elastic Compute Service !即为连接成功。

第二步:安装vsftpd
1.输入命令apt install vsftpd
2.输入命令systemctl enable vsftpd.service,用于设置 FTP 服务开机自启动。
3.输入命令systemctl start vsftpd.service,用于启动 FTP 服务。
4.输入命令netstat -antup | grep ftp,用于查看FTP服务监听的端口。成功查看端口的界面:

第三步:配置****vsftp
vsftpd 安装后默认开启了匿名 FTP 的功能,使用匿名 FTP,用户无需输入用户名密码即可登录 FTP 服务器,但没有权限修改或上传文件。
文本介绍了以下几个配置 vsftpd 的方法以及相关的参数说明,您可以根据具体需要进行参考。
- 配置匿名用户上传文件权限
- 配置本地用户登录
- vsftpd.conf 的配置文件参数说明
配置匿名用户上传文件权限
1、修改 vsftpd.conf 的配置文件的选项,可以赋予匿名 FTP 更多的权限。
- 修改 /etc/vsftpd/vsftpd.conf:
- 运行 vim /etc/vsftpd/vsftpd.conf。
- 按 i 键进入编辑模式。
- 将写权限修改为 write_enable=YES。
- 将匿名上传权限修改为 anon_upload_enable=YES。
- 按 Esc 键退出编辑模式,然后输入 :wq 保存并退出文件。

2、运行以下命令更改 /var/ftp/pub 目录的权限,为 FTP 用户添加写权限,并重新加载配置文件。
- chmod o+w /var/ftp/pub/
- systemctl restart vsftpd.service

配置本地用户登录
本地用户登录就是指用户使用 Linux 操作系统中的用户账号和密码登录 FTP 服务器。
vsftpd 安装后默只支持匿名 FTP 登录,用户如果试图使用 Linux 操作系统中的账号登录服务器,将会被 vsftpd 拒绝,但可以在 vsftpd 里配置用户账号和密码登录。具体步骤如下:
1、创建 ftptest 用户。
- useradd ftptest
2、运行以下命令修改 ftptest 用户密码。
- passwd ftptest
3、在home目录下创建ftptest文件夹
- mkdir ftptest
- chmod a+wrx ftptest

4、修改 /etc/vsftpd/vsftpd.conf:
- 运行 vim /etc/vsftpd/vsftpd.conf。
- 按键 i 进入编辑模式。
- 将是否允许匿名登录 FTP 的参数修改为 anonymous enable=NO。
- 将是否允许本地用户登录 FTP 的参数修改为 local_enable=YES。
- 按键 Esc 退出编辑模式,然后按键 :wq 保存并退出文件。

运行以下命令重新加载配置文件。
systemctl restart vsftpd.service
vsftpd.conf 的配置文件参数说明
运行命令 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 端口的规则,具体步骤参见 添加安全组规则。
第四步:客户端测试 FileZilla_
打开客户端的 计算机,在路径栏输入 ftp://服务器 IP 地址:FTP 端口(如果不填端口则默认访问21端口),例如:ftp://0.0.0.0:20。弹出输入用户名和密码的对话框表示配置成功,正确的输入用户名和密码后,即可对 FTP 文件进行相应权限的操作。
说明 客户端使用此方法访问 FTP 站点时,需要对 IE 浏览器进行设置,才能打开 FTP 的文件夹。 打开 IE 浏览器,选择 设置 > Internet 选项 > 高级。勾选 启用 FTP 文件夹视图,取消勾选 使用被动 FTP。
几个不错的分享:
新建ftp用户并指定访问目录
在Linux中添加ftp用户,并设置相应的权限,操作步骤如下:
1、环境:ftp为vsftp。被限制用户名为test。被限制路径为/home/test
2、建用户:在root用户下:
useradd -d /home/ftp ftpname //增加用户test,并制定ftpname用户的主目录为/home/ftp
passwd ftpname //为ftpname设置密码
3、更改用户相应的权限设置:
usermod -s /sbin/nologin ftpname //限定用户ftpname不能使用telnet,只能使用ftp
usermod -s /sbin/bash ftpname //用户test恢复正常
usermod -d /ftp ftpname //更改用户ftpname的主目录为/ftp
4、限制用户只能访问/home/ftp,不能访问其他路径
修改/etc/vsftpd/vsftpd.conf如下:
chroot_list_enable=YES #限制访问自身目录
# (default follows)
chroot_list_file=/etc/vsftpd/vsftpd.chroot_list
新编辑 vsftpd.chroot_list文件,将受限制的用户添加进去,每个用户名一行
改完配置文件,不要忘记重启vsFTPd服务器
[root@linuxspliu root]# service vsftpd restart
5、如果需要允许用户修改密码,但是又没有telnet登录系统的权限:
usermod -s /usr/bin/passwd test #用户telnet后将直接进入改密界面
ftp://用户名:密码@url/目录
例:
ftp://userchenq:pwd@192.168.1.119/platform
