搭建FTP服务器实现文件共享

搭建FTP服务器实现文件共享

 

VSFTP服务器概述

4.1.1  FTP服务概述:

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

FTP(File Transfer Protocol: 文件传输协议)作用:Internet 上用来传送文件的协议。

 

常见FTP服务器:

Windows:Serv-U 、FTP Server、filezilla_server

Linux:ProFTPD:(Professional FTP daemon)一个Unix平台上或是类Unix平台上(如Linux, FreeBSD等)的FTP服务器程序。

1.2  VSFTP

VSFTP是一个基于GPL发布的类Unix系统上使用的FTP服务器软件,它的全称是Very Secure FTP 从此名称可以看出来,编制者的初衷是代码的安全。

特点:

它是一个安全、高速、稳定的FTP服务器。

VSFTP模式: C/S 模式 

端口:

[root@K3 ~]# vim /etc/services    

FTP监听的端口有两个:

端口20:用于传输数据  

端口21:用于传输指令

FTP(File Service Protocol):文件服务协议。

1.3  工作流程(原理)分为两种模式:

主动和被动模式:

FTP会话包含了两个通道,控制通道和数据传输通道,FTP的工作有两种模式,一种是主动模式,一种是被动模式,以FTP Server为参照,主动模式,服务器主动连接客户端传输,被动模式,等待客户的连接。

主动模式的工作原理:

FTP客户端连接到FTP服务器的21号端口,发送用户名和密码,客户端随机开放一个端口(1024以上),发送PORT命令到FTP服务器,告知服务器客户端采用主动模式并开放端口,FTP服务器收到PORT主动模式命令和端口后,通过服务器的20号端口和客户端开放的端口连接,发送数据,原理如图 4-2 所示,(无论是主动还是被动模式,首先的控制通道都是先建立起来,只是在数据传输模式上的区别)

 

 

 

 PASV是Passive的缩写,中文成为被动模式,工作原理:FTP客户端连接到FTP服务器所监听的21号端口,发送用户名和密码,发送PASV命令到FTP服务器,服务器在本地随机开放一个端口(1024以上),然后把开放的端口告知客户端,而后客户端再连接到服务器开放的端口进行数据传输

 

 

2.搭建匿名登录FTP

 

服务器 IP 角色
k2 10.27.17.92 vsftp服务端
k3 10.27.17.93 客服端
k4 10.27.17.94 windows

 

2.1 安装服务端

[root@k2 ~]# yum -y install vsftpd

 

2.2 安装客户端:

[root@xuegod64 ~]# yum install -y lftp                 #使用Yum安装ftp客户端。

lftp

注:从CentOS开始,系统镜像中默认没有ftp客户端命令。取而代之的是lftp命令。

Linux客户端:

lftp 是一个功能强大的下载工具,它支持访问文件的协议: ftp、ftps、http、https、hftp、fish(其中ftps和https需要在编译的时候包含openssl库),llftp的界面非常类似一个Shell,有命令补全、历史记录、允许多个后台任务执行等功能,使用起来非常方便。它还有书签、排队、镜像、断点续传、多进程下载、等功能

2.3  配置文件位置:

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

/etc/vsftpd/ftpusers                   #用于指定哪些用户不能访问FTP 服务器,即黑名单。

/etc/vsftpd/user_list                   #指定允许使用VSFTP的用户列表文件,即白名单。

 

首先请明确一点:ftpusers不受任何配制项的影响,它总是有效,它是一个黑名单!

而user_list则是和vsftpd.conf中的userlist_enable和userlist_deny两个配置项紧密相关的,它可以有效,也可以无效,有效时它可以是一个黑名单,也可以是一个白名单!那么是什么的设置决定了它的作用呢?这就是问题二要解释的。
  所以简单总结就是:ftpusers和user_list没有任何关系,ftpusers文件总是生效,user_list则取决于userlist_enable和userlist_deny两项配置。

 

[root@k2  ~]# vim /etc/vsftpd/user_list          

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

2.4启动服务

[root@k2 vsftpd]# systemctl start vsftpd           #启动FTP服务。

[root@k2 vsftpd]# systemctl enable vsftpd #设置开启自动启动FTP服务。

[root@k2 ~]# netstat -antup | grep ftp              #查看FTP服务监听的端口。

tcp    0     0 0.0.0.0:21          0.0.0.0:*          LISTEN       11725/vsftpd

2.5允许匿名用户访问

[root@xuegod63 vsftpd]# vim  /etc/vsftpd/vsftpd.conf      

anonymous_enable=YES

anon_upload_enable=YES

anon_mkdir_write_enable=YES

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

但不能删除,报500的错

解决办法是手动添加一行

[root@K2 vsftpd]# chown ftp.ftp /var/ftp/pub/               #修改FTP共享目录属主、

anon_other_write_enable=YES  

 

注:千万不要和anon_mkdir_write_enable=YES这个挨着,换一个位置。

重启FTP服务,使配置文件生效:

[root@k2 vsftpd]# systemctl restart vsftpd

2.6 测试一下:

 

 

 

 k3上测试

[root@k3 ~]# lftp 10.27.17.92
lftp 10.27.17.92:~> ls
drwxr-xr-x 3 14 50 26 Oct 09 03:07 pub
lftp 10.27.17.92:/> cd pub
lftp 10.27.17.92:/pub> ll
lftp 10.27.17.92:/pub> ls
drwx------ 2 14 50 6 Oct 09 01:47 新文件夹
lftp 10.27.17.92:/pub> mkdir aa
mkdir ok, `aa' created
lftp 10.27.17.92:/pub> ls
drwx------ 2 14 50 6 Oct 09 03:08 aa
drwx------ 2 14 50 6 Oct 09 01:47 新文件夹
lftp 10.27.17.92:/pub> mkdir bb cc
mkdir ok, 2 directories created
lftp 10.27.17.92:/pub> ls
drwx------ 2 14 50 6 Oct 09 03:08 aa
drwx------ 2 14 50 6 Oct 09 03:08 bb
drwx------ 2 14 50 6 Oct 09 03:08 cc
drwx------ 2 14 50 6 Oct 09 01:47 新文件夹
lftp 10.27.17.92:/pub> rm -rf aa
rm ok, `aa' removed
lftp 10.27.17.92:/pub> ls
drwx------ 2 14 50 6 Oct 09 03:08 bb
drwx------ 2 14 50 6 Oct 09 03:08 cc
drwx------ 2 14 50 6 Oct 09 01:47 新文件夹
lftp 10.27.17.92:/pub>

 

3、用户名密码方式访问VSFTP

WEB服务器维护,FTP 给不同的部门账号,进行相关目录的维护

 设置两个用户,共享/var/www/html   ,用户名kezi1,kezi2     

这两个帐号的根目录限制为/var/www/html,不能进入该目录以外的任何目录。

只允许:kezi1和kezi2两用户 可以上传,vsftp禁止匿名。

3.1  建立用户并设置密码

[root@k2 vsftpd]# useradd -s /sbin/nogling kezi1
[root@k2 vsftpd]# useradd -s /sbin/nogling kezi2
[root@k2 vsftpd]# echo "123456"|passwd --stdin kezi1
Changing password for user kezi1.
passwd: all authentication tokens updated successfully.
[root@k2 vsftpd]# echo "123456"|passwd --stdin kezi2
Changing password for user kezi2.
passwd: all authentication tokens updated successfully.

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

[root@k2 vsftpd]# vim vsftpd.conf

anonymous_enable=NO             #禁止匿名用户登录

local_enable=YES                 #允许本地用户登录

 

local_root=/var/www/html         #设置本地用户的根目录为/var/www/html 。

chroot_list_enable=YES               #激chroot 功能。

chroot_list_file=/etc/vsftpd/chroot_list            #设置锁定用户在根目录中的列表文件。此文件存放要锁定的用户名。

allow_writeenable_chroot=YES              #允许锁定的用户有写的权限。

3.3 建立/etc/vsftpd/chroot_list 文件,添加kezi1 和kezi2帐号

[root@k2 vsftpd]# touch /etc/vsftpd/chroot_list
[root@k2 vsftpd]# vim chroot_list

kezi1
kezi2

3.4 修改本地权限

[root@k2 vsftpd]# ll -d /var/www/html
drwxr-xr-x. 2 root root 24 Sep 27 15:28 /var/www/html
[root@k2 vsftpd]# chmod -R o+w /var/www/html/index.html
[root@k2 vsftpd]# ll -d /var/www/html
drwxr-xr-x. 2 root root 24 Sep 27 15:28 /var/www/html

 

posted @ 2019-10-08 13:52  科子  阅读(2499)  评论(0编辑  收藏  举报