搭建FTP服务,实现三种方式的访问:1.匿名访问;2,本地用户访问;3虚拟用户访问。

FTP服务(File Transfer Protocol,文件传输协议)是典型的C/S结构 的应用层协议,需要由服务端软件,客户端软件两部分共同实 现文件传输功能。既可以在局域网使用,又可以在广域网使 用。
在Windows系统中,常见的FTP服务器软件包括FileZilla Sener, Serv-U等,而在linux系统中,vsftpd是目前在linux/UNIX领域 应用 十分广泛的一款FTP服务软件
本次实验主要讲解vsftpd,在虚拟机上以redhat6.5为服务端,Windows7为客户端。
FTP传输模式
文本模式:ASCII模式,以文本序列传输数据
二进制模式:Binary模式,以二进制序列传输数据(更适合传输 程序,图片等非纯文本文件的传输)
FTP用户的类型
匿名用户:anonymous或ftp
本地用户:帐号名称,密码等信息保存在passwd,shadow文件 中
虚拟用户:使用独立的账号/密码数据文件
首先在服务端redhat6.5上面挂载光盘,用rpm安装vsftpd的软件包,并开启服务。


1)匿名访问配置
进入vsftpd的配置文件进行相关设置,赋予匿名用户上传文件,创建文件目录,以及其他写入权限(重命名等)。更改好设置保存并退出



开启ftpd服务,关闭防火墙,关闭增强型功能

在ftp站点创建一个文件并写入内容,修改站点权限,赋予普通用用读写执行权限

进入客户端(Windows7,前提两者能够互联互通),打开运行程序,匿名访问FTP服务,并上传下载文件

可以在C盘看到下载的文件,

把刚才的文件重命名,在上传到ftp服务端


在linux服务端查看vsftpd站点内容,可以看到刚刚上传的文件

2)本地用户登录
在Windows7系统的客户端使用本地用户张三进行登录访问FTP服务,并上传文件,可以看到本地用户登录的默认位置为用户的家目录,如果不进行高级别的安全设置,本地用户可以自由切换目录。



1)禁锢宿主目录(家目录)
若我们对本地用户只是采用vsftpd服务配置文件的默认设置,则用户将能够随意地切换到服务器的/var,/etc,/boot等宿主目录以外的文件夹,这样一来便存在很大的安全隐患。因此我们需要添加“chroot_local_user”配置项,将所有的本地用户禁锢在其宿主目录下


修改好配置文件,再重启vsftpd服务,然后从客户端用本地用户进行登录,测试一下是否被禁锢在宿主目录,可以看到用户已经被禁锢在宿主目录,而不能随意进行切换目录


2)黑白名单(使用user_list用户列表文件)
首先查看一下user_list文件,里面有两行注释,代表的含义分别为白名单和黑名单,系统默认设置该用户列表文件为黑名单。


那么我们把用户加入到这个列表文件里,则该用户就无法使用服务端提供的FTP服务
把用户zhangsan加入该列表文件,进行验证一下(每次修改完配置文件需要重启服务)

进入客户机使用zhangsan登陆不上,而使用lisi用户则可以,

我们也可以根据该列表文件的注释将其变成白名单(仅允许该列表文件内的用户访问FTP服务)
修改配置文件,添加设置“userlist_deny=NO”,然后保存修改设置并退出,重启服务,进入客户端进行验证。

进入客户机使用lisi登陆不上,而使用lzhangsan用户则可以,此时该列表文件变成了白名单。

3,虚拟账户
在实际工作环境,为了安全考虑我们往往会使用虚拟账户。
首先要在/etc/vsftpd目录下建立虚拟用户帐户,加入两个用户lisa和tom


然后将该虚拟用户帐户转换成数据库文件

修改权限,不让其他人看到虚拟账户的内容,并建立vuser用户,指定家目录/opt/vuser,并不使用shell登录

编辑pam认证模块支持虚拟用户的登录


对vsftpd配置文件进行编辑设置:开启虚拟用户,使用pam认证登录


设定好之后,保存并退出,重启服务。再进入客户端用lisa用户进行登录,并上传一个文件。



打开服务端查看虚拟用户vuser的家目录/opt/vuser,可以看到刚刚上传的文件,

再进入客户端用tom用户进行登录,并上传一个文件。

打开服务端查看虚拟用户vuser的家目录/opt/vuser,可以看到刚刚上传的文件,

我们可以看到lisa和tom上传的文件显示的所有者,所属组都不是本用户,而是一个虚拟用户vuser。这样安全性就提高了。
我们还可以给虚拟用户里面的单个用户配置不同的权限。
修改vsftpd配置文件,添加“user_config_dir=/etc/vsftpd/vu_dir”(单独用户配置文件夹)配置设定。

在配置文件夹里创建用户配置文件,给tom单独设置权限,然后重启服务。


在客户机分别用这两个用户进行登录访问ftp服务,并各自上传一个文件,查看它们的权限,有何不同。


在虚拟用户vuser的家目录下可以看到各自上传的文件,它们的权限不同。

原文地址:http://blog.51cto.com/13728740/2140089

时间: 2024-11-03 21:42:12

搭建FTP服务,实现三种方式的访问:1.匿名访问;2,本地用户访问;3虚拟用户访问。的相关文章

CentOS6.5下搭建ftp服务器(三种认证模式:匿名用户、本地用户、虚拟用户)

CentOS 6.5下搭建ftp服务器 vsftpd(very secure ftp daemon,非常安全的FTP守护进程)是一款运行在Linux操作系统上的FTP服务程序,不仅完全开源而且免费,此外,还具有很高的安全性.传输速度,以及支持虚拟用户验证等其他FTP服务程序不具备的特点,下面开始搭建: 1.用root 进入系统 2.使用命令 rpm  -qa | grep vsftpd 查看系统是否安装了ftp,若安装了vsftp,使用这个命令会在屏幕上显示vsftpd的版本 3.如果安装了,可

详解Linux搭建vsftp服务器通过三种方式实现文件传输

概述 FTP(File Transfer Protocol)中文称为"文件传输协议".用于Internet上的控制文件的双向传输. 工作原理 一.主动模式: 1.客户端通过用户名和密码登录服务器端,登录的是21端口(服务器端主动开启的).2.服务器端通过21端口接收到客户端的访问,验证用户名和密码.3. 登陆成功,客户端会随机开启一个1024以上的端口,在端口上会传递一个叫port的命令,通过命令告知服务器,打开端口,向客户端传递数据.(顺便的会将随机端口号告知服务器)4.服务器接收之

CXF3.0.4客户端调用Web service来获取服务的三种方式

服务端的代码请看我的另一篇文章:点击打开链接 首先必须要有一个可用的WSDL服务地址,这个地址有我们需要调用的方法,将地址复制到浏览器地址栏,看测试能否通过. 方式一: 配置CXF环境变量,用wsdl2java工具自动产生代码.项目结构目录如下: 其中com.yq.webservice下面的所有的java类都是wsdl2java工具自动产生的. <span style="font-size:18px;"><span style="white-space:pr

Linux中设置服务自启动的三种方式

有时候我们需要Linux系统在开机的时候自动加载某些脚本或系统服务 主要用三种方式进行这一操作: ln -s                       在/etc/rc.d/rc*.d目录中建立/etc/init.d/服务的软链接(*代表0-6七个运行级别之一) chkonfig                命令行运行级别设置 ntsysv                   伪图形运行级别设置 注意:1.这三种方式主要用于以redhat为基础的发行版 2.如果还不知道运行级别是什么,那么最

hive三种方式区别和搭建、HiveServer2环境搭建、HWI环境搭建和beeline环境搭建

说在前面的话 以下三种情况,最好是在3台集群里做,比如,master.slave1.slave2的master和slave1都安装了hive,将master作为服务端,将slave1作为服务端. hive三种方式区别和搭建 Hive中metastore(元数据存储)的三种方式: a)内嵌Derby方式 b)Local方式 c)Remote方式 1.本地derby这种方式是最简单的存储方式,只需要在hive-site.xml做如下配置便可<?xml version="1.0"?&g

[转]Linux中设置服务自启动的三种方式

from:http://www.cnblogs.com/nerxious/archive/2013/01/18/2866548.html 有时候我们需要Linux系统在开机的时候自动加载某些脚本或系统服务 主要用三种方式进行这一操作: ln -s                       在/etc/rc.d/rc*.d目录中建立/etc/init.d/服务的软链接(*代表0-6七个运行级别之一) chkonfig                命令行运行级别设置 ntsysv        

(转)Linux中设置服务自启动的三种方式

有时候我们需要Linux系统在开机的时候自动加载某些脚本或系统服务 主要用三种方式进行这一操作: ln -s                       在/etc/rc.d/rc*.d目录中建立/etc/init.d/服务的软链接(*代表0-6七个运行级别之一) chkonfig                命令行运行级别设置 ntsysv                   伪图形运行级别设置 注意:1.这三种方式主要用于以redhat为基础的发行版 2.如果还不知道运行级别是什么,那么最

android客户端与服务端交互的三种方式

android客户端向服务器通信一般有以下选择: 1.传统的java.net.HttpURLConnection类 2.apache的httpClient框架(已纳入android.jar中,可直接使用) 3.github上的开源框架async-http(基于httpClient) ---------------------------------------------------------------------------------- 下面分别记录这三种方式的使用, 传统方式: /**

15.4 xshell使用xftp传输文件 15.5 使用pure-ftpd搭建ftp服务

15.4 xshell使用xftp传输文件 15.5 使用pure-ftpd搭建ftp服务 扩展 vsftp使用mysql存放虚拟用户并验证 http://www.aminglinux.com/bbs/thread-342-1-1.html ftp的主动和被动模式 http://www.aminglinux.com/bbs/thread-961-1-1.html 15.4 xshell使用xftp传输文件 打开xshell,新建一个会话窗口 输入它的用户名 root 密码123465 这个时候它

文件上传的三种方式-Java

前言:因自己负责的项目(jetty内嵌启动的SpringMvc)中需要实现文件上传,而自己对java文件上传这一块未接触过,且对 Http 协议较模糊,故这次采用渐进的方式来学习文件上传的原理与实践.该博客重在实践. 一.Http协议原理简介 HTTP是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展.目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的规范化工作正在进行之中,而且HT