基于滴滴云主机搭建 FTP 文件共享服务器(一)

FTP 简单介绍

什么是 FTP 服务器?

FTP 服务器(File Transfer Protocol Server)是在互联网上提供文件共享存储和访问服务的计算机,它们依照 FTP 协议提供服务。

FTP(File Transfer Protocol: 文件传输协议)是一种 Internet 上用来传送文件的协议,支持这种协议的服务器就是 FTP 服务器。

常见 FTP 服务器如下:

  • Windows:Serv-U FTP Server

  • Linux:oftpd、ftpd、vsftpd、pure-ftpd、proftpd、wu-ftpd、glftpd

功能比较简单的有 ftpd 和 Oftpd,前者与 FTP 客户端工具 FTP 类似,只有标准的功能,此外支持 SSL。Oftpd 是一款非常小巧的匿名 FTP 服务器。

可配制型高级的主要是 vsftpd 和 pure-ftpd。 这两个侧重于安全、速度和轻量级,在大型 FTP 服务器上用得比较多,尤其是 vsftpd,这类服务器对用户认证和权限控制比较简单,更注重安全型和速度。Pure-ftpd 相对 vsftpd 要强大一些,支持的用户认证方式也比较多。

配置性更好的是 proftpd、wu-ftpd 和 glftpd。Proftpd 的配置方式跟 Apache 非常类似,支持虚拟服务器,可针对目录、虚拟用户进行权限配制,可继承和覆盖。

今天主要介绍 VSFTP。

VSFTP 是一个基于 GPL 发布的类 Unix 系统上使用的 FTP 服务器软件,它的全称是 Very Secure FTP,它的优势就是安全、高速、稳定的 FTP 服务器。接下来介绍如何搭建这个文件共享服务器。

开始安装

首先安装 VSFTP

安装前检查一下包是否已经安装,如下:

[root@10-255-1-40 ~]#  rpm -qa | grep vsftp
vsftpd-3.0.2-22.el7.x86_64
[root@10-255-1-40 ~]#

如果没有安装,使用如下方式安装:

[root@10-255-1-40 ~]# yum install vsftpd
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
正在解决依赖关系
--> 正在检查事务
---> 软件包 vsftpd.x86_64.0.3.0.2-22.el7 将被 安装
--> 解决依赖关系完成

依赖关系解决

==============================================================================================================================================================
 Package                             架构                                版本                                         源                                 大小
==============================================================================================================================================================
正在安装:
 vsftpd                              x86_64                              3.0.2-22.el7                                 base                              169 k

事务概要
==============================================================================================================================================================
安装  1 软件包

总下载量:169 k
安装大小:348 k
Is this ok [y/d/N]: 

接着安装 LFTP,这个可以用来登录浏览 FTP 共享文档:

[root@10-255-1-40 ~]# yum install  lftp
已加载插件:fastestmirror
base                                                                                                                                   | 3.6 kB  00:00:00     
epel                                                                                                                                   | 3.2 kB  00:00:00     
extras                                                                                                                                 | 3.4 kB  00:00:00     
updates                                                                                                                                | 3.4 kB  00:00:00     
Loading mirror speeds from cached hostfile
正在解决依赖关系
--> 正在检查事务
---> 软件包 lftp.x86_64.0.4.4.8-8.el7_3.2 将被 安装
--> 解决依赖关系完成

依赖关系解决

==============================================================================================================================================================
 Package                           架构                                版本                                           源                                 大小
==============================================================================================================================================================
正在安装:
 lftp                              x86_64                              4.4.8-8.el7_3.2                                base                              751 k

事务概要
==============================================================================================================================================================
安装  1 软件包

总下载量:751 k
安装大小:2.4 M
Is this ok [y/d/N]:

以上两个都输入 y 安装即可,滴滴云已经提供专业的 yum 安装源,您可以放心的安装相关服务。当然了,除了 yum 的安装方式之外,您还可以选择从官方下载源码或者 RPM 包来安装,RPM 安装命令:

rpm -ivh /home/demo/vsftpd-3.0.2-22.el7.x86_64.rpm

这根据您的使用方式来选择,哪个方便使用哪个安装。

开始配置

配置文件位置

[root@10-255-1-40 vsftpd]# pwd
/etc/vsftpd
[root@10-255-1-40 vsftpd]# ll
总用量 20
-rw------- 1 root root  125 8月   3 2017 ftpusers
-rw------- 1 root root  361 8月   3 2017 user_list
-rw------- 1 root root 5030 8月   3 2017 vsftpd.conf
-rwxr--r-- 1 root root  338 8月   3 2017 vsftpd_conf_migrate.sh
[root@10-255-1-40 vsftpd]#

/etc/vsftpd/vsftpd.conf:vsftpd 的核心配置文件

/etc/vsftpd/ftpusers:用于指定哪些用户不能访问 FTP 服务器,是个黑名单

/etc/vsftpd/user_list:指定允许使用 vsftpd 的用户列表文件,是个白名单

vim /etc/vsftpd/user_list

# 如果 userlist_deny= YES(默认),不允许在这个文件中的用户登录 FTP,甚至不提示输入密码

# prompt 提示

/etc/vsftpd/vsftpd_conf_migrate.sh:是 vsftpd 操作的一些变量和设置脚本

/var/ftp/:默认情况下匿名用户的根目录,其目录如下:

[root@10-255-1-40 vsftpd]# cd /var/ftp/pub/
[root@10-255-1-40 pub]# pwd
/var/ftp/pub
[root@10-255-1-40 pub]#

服务启动

我们先不做配置的情况下,看看默认能做什么事情,启动服务:

[root@10-255-1-40 var]# systemctl  status vsftpd
● vsftpd.service - Vsftpd ftp daemon
   Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; disabled; vendor preset: disabled)
   Active: inactive (dead)
[root@10-255-1-40 var]# systemctl  start vsftpd
[root@10-255-1-40 var]# systemctl  status vsftpd
● vsftpd.service - Vsftpd ftp daemon
   Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; disabled; vendor preset: disabled)
   Active: active (running) since 日 2018-12-09 03:54:48 UTC; 1s ago
  Process: 9175 ExecStart=/usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf (code=exited, status=0/SUCCESS)
 Main PID: 9176 (vsftpd)
   CGroup: /system.slice/vsftpd.service
           └─9176 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf

12月 09 03:54:48 10-255-1-40 systemd[1]: Starting Vsftpd ftp daemon...
12月 09 03:54:48 10-255-1-40 systemd[1]: Started Vsftpd ftp daemon.
[root@10-255-1-40 var]#

滴滴云主机默认安全组没有打开 21 端口,具体如何打开参考滴滴云官网介绍,打开后如下:
在这里插入图片描述

访问

以 mac 为例,mac 上自带客户端工具,其他操作系统也可以使用浏览器、文件夹资源管理器等工具进行访问。

访问协议前缀都是 ftp://IP 地址,端口一般都是默认端口,打开 mac 上的自带工具 Finder,选择前往,再选择连接服务器,如下:
在这里插入图片描述
进入如下界面,输入 FTP 服务器信息:
在这里插入图片描述
默认只能使用匿名用户访问,如图:
在这里插入图片描述

成功后如下图:
在这里插入图片描述

下面做一些配置:
允许所有员工上传和下载文件,并允许创建用户自己的目录:

anon_mkdir_write_enable 字段可以控制是否允许匿名用户创建目录。

查看并备份原配置文件:

[root@10-255-1-40 vsftpd]# ls
ftpusers  user_list  vsftpd.conf  vsftpd_conf_migrate.sh
[root@10-255-1-40 vsftpd]# cp vsftpd.conf vsftpd.conf.bak
[root@10-255-1-40 vsftpd]#

允许匿名用户访问:

anonymous_enable=YES

允许匿名用户上传文件并可以创建目录:

anon_upload_enable=YES
anon_mkdir_write_enable=YES

如图:
在这里插入图片描述

重新启动服务:

[root@10-255-1-40 vsftpd]# systemctl restart vsftpd
[root@10-255-1-40 vsftpd]#

mac 终端:

dubodeMacBook-Pro-2:ftp dubobo$ ftp ftp://116.85.5.228/
Connected to 116.85.5.228.
220 (vsFTPd 3.0.2)
331 Please specify the password.
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
200 Switching to Binary mode.
ftp> ls
229 Entering Extended Passive Mode (|||63798|)


ftp: Can't connect to `116.85.5.228': Operation timed out
200 EPRT command successful. Consider using EPSV.
150 Here comes the directory listing.
drwxr-xr-x    2 14       50             42 Dec 09 07:59 pub
drwxr-xr-x    2 0        0               6 Dec 09 08:18 test
226 Directory send OK.
ftp> 
ftp> 
ftp>

Windows 资源管理器:
在这里插入图片描述
解决办法:
在这里插入图片描述

修改完后,再次访问:
在这里插入图片描述

但是发现,能创建目录,但不能删除和重命名文件夹,如图所示:
在这里插入图片描述
在这里插入图片描述
我们建立一个文件夹,如下:

[root@10-255-1-40 ftp]# mkdir /var/ftp/zhangsan
[root@10-255-1-40 ftp]# chown ftp.ftp /var/ftp/
pub/      test/     zhangsan/ 
[root@10-255-1-40 ftp]# chown ftp.ftp /var/ftp/zhangsan/
[root@10-255-1-40 ftp]# systemctl restart vsftpd
[root@10-255-1-40 ftp]

在这里插入图片描述

匿名用户上传文件就算可以了,但是不能删除和重命名。

注:工作中,匿名用户只是只读访问,写的权限也没有的。

补充:如果想让匿名用户可以重命名或者删除的权限,添加如下一条配置参数,即 anon_other_write_enable,如下:

#
# Uncomment this if you want the anonymous FTP user to be able to create
# new directories.
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

在这里插入图片描述

重新启动服务就可以对重新命名和删除文件夹了。

[root@10-255-1-40 ftp]# systemctl restart vsftpd

匿名用户就可以删除和修改,非常不安全,所以要慎重使用这个参数。

注意,默认匿名用户家目录的权限是 755,这个权限是不能改变的。

实战演练

假设现有两个部门负责产品文档,他们分别使用 user1 和 user2 帐号进行管理。要求只允许 user1 和 user2 帐号登录 FTP 服务器,但不能登录本地系统,并将这两个帐号的目录限制为 /home/test,而且不能进入该目录以外的任何目录。

1.建立产品系统内容的 FTP 帐号 user1 和 user2 并禁止本地登录,然后设置其密码

[root@10-255-1-40 ftp]# useradd -s /sbin/nologin user1

同样创建user2用户。

修改两个用户密码:

[root@10-255-1-40 ftp]# passwd user1
更改用户 user1 的密码 。
新的 密码:
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[root@10-255-1-40 ftp]# 
[root@10-255-1-40 ftp]# 
[root@10-255-1-40 ftp]# 

将 user2 同样更改密码,也可以直接使用命令 passwd user1 回车修改密码。

2.配置 vsftpd.conf 主配置文件并作相应修改

[root@10-255-1-40 ftp]# vim /etc/vsftpd/vsftpd.conf
\# Allow anonymous FTP? (Beware - allowed by default if you comment this out).
anonymous_enable=NO 禁止匿名用户
\#
\# Uncomment this to allow local users to log in.
\# When SELinux is enforcing check for SE bool ftp_home_dir
local_enable=YES允许本地登陆
# Allow anonymous FTP? (Beware - allowed by default if you comment this out).
anonymous_enable=NO
#
# Uncomment this to allow local users to log in.
# When SELinux is enforcing check for SE bool ftp_home_dir
local_enable=YES

继续修改,将:

#chroot_local_user=YES
#chroot_list_enable=YES
# (default follows)
#chroot_list_file=/etc/vsftpd/chroot_list

修改为:

# chroot)
chroot_local_user=YES
local_root=/home/test
chroot_list_enable=YES
# (default follows)
chroot_list_file=/etc/vsftpd/chroot_list

local_root=/home/test:设置本地用户的根目录为 /home/test
chroot_list_enable=YES:激 chroot 功能
chroot_list_file=/etc/vsftpd/chroot_list:设置锁定用户在根目录中的列表文件。此文件存放要锁定的用户名

保存并退出。

3.建立 /etc/vsftpd/chroot_list 文件,添加 user1 和 user2 帐号

[root@10-255-1-40 vsftpd]# touch /etc/vsftpd/chroot_list
[root@10-255-1-40 vsftpd]# ls
chroot_list  ftpusers  user_list  vsftpd.conf  vsftpd.conf.bak  vsftpd_conf_migrate.sh
[root@10-255-1-40 vsftpd]#
[root@10-255-1-40 vsftpd]# vim chroot_list 
[root@10-255-1-40 vsftpd]# cat chroot_list 
user1
user2
[root@10-255-1-40 vsftpd]#

按照上述配置修改好文件。

创建对应文档目录:

[root@10-255-1-40 var]# mkdir /home/test
您在 /var/spool/mail/root 中有新邮件
[root@10-255-1-40 var]# chmod 777 /home/test/

使用资源管理器创建一个文件夹并验证:

会出现如下登录界面:
在这里插入图片描述

随便创建一个目录,如下:
在这里插入图片描述

[root@10-255-1-40 var]# cd /home/test/
[root@10-255-1-40 test]# ls
新文件夹
[root@10-255-1-40 test]#

基本的测试完了,欢迎拍砖。

猜你喜欢

转载自blog.csdn.net/java060515/article/details/84941320