Linux下ftp安装配置及三种用户的验证
一、原理简介
二、安装配置
三、三种用户的验证
一、简介
FTP即文件传输协议(File Transfer Protocol),完成各主机的文件共享功能,基于客户端-服务器的协议,工作在应用层,tcp的21号端口。
ftp有两个连接
命令连接:控制连接,21/tcp。客户端与服务端的tcp 21端口建立连接,发送命令
数据连接:客户端与服务端数据的传送。
数据连接又有两种模式


主动(Port)模式:客户端从一个随机端口N(N>1024)连接服务端的命令端口21。然后客户端打开端口N+1,并发送FTP命令"portN+1"到FTP服务器。接着服务器会从它自己的数据端口20连接到客户端的端口(N+1)。简单的说也就是在数据连接的过程中服务器端主动连接客户端。
被动(Passive)模式:由于服务器端主动连接客户端的主动模式导致客户端不安全性,所以出现被动模式。客户端从一个随机端口N(N>1024)连接服务端的命令端口21,服务器端返回一个报文,其中含有需要客户端来连接的数据端口信息,也就是服务器端打开的一个随机端口(此端口一般大于5000),然后客户端会用端口(N+1)去连接服务端的随机端口。因为防火墙的连接追踪功能,使得这几个连接为相关联的连接,所以服务器端的防火墙对客户端来连接的随机端口(大于5000)不会有影响。简单的说也就是在数据连接的过程中,是服务器端被动的让客户端来连接,又因为防火墙的连接追踪机制使得其端口连接能够进行。
ftp有两种数据传输方式
ASCII:一般为文本,数据库等。
二进制:一般为mp3,jpeg等格式文件。
ftp有较多的服务器端程序和客户端程序,以下:
服务器端程序:
wu-ftpd:Washington University-ftpd
vsftpd: Very Secure ftp Daemon
proftpd:
pureftpd
Filezilla
Serv-U:windows下的
客户端程序:
CLI:
ftp
lftp
GUI:
gftpd
FlashFXP
Cuteftp
Filezilla
也由于vsftpd主打的是安全性、完全开源及免费、速率高、支持IPv6、虚拟用户功能等等其他FTP服务端软件不具备的功能。此处使用vsftpd来搭建ftp服务。
二、vsftpd安装配置(centos 7)

服务器端和客户端都为192.168.1.222
yum install vsftpd –y
清空防火墙规则或关闭防火墙,关闭selinux。
安装完成后可以看到/etc/vsftpd下的几个文件,
用户禁止登陆列表
/etc/vsftpd/ftpusers
/etc/vsftpd/user_list
主配置文件
/etc/vsftpd/vsftpd.conf

三、三种用户的验证(匿名用户、普通用户、虚拟用户)
1.匿名用户模式
在vsftpd.conf文件中,找到参数如下去掉注释:
|
anonymous_enable=YES |
允许匿名访问模式。(默认) |
|
anon_umask=022 |
匿名用户上传文件的umask值。 |
|
anon_upload_enable=YES |
允许匿名用户上传文件 |
|
anon_mkdir_write_enable=YES |
允许匿名用户创建目录 |
|
anon_other_write_enable=YES |
允许匿名用户修改目录名或删除目录(此信息没有,需手动加) |
可利用客户端工具xftp或者ftp来检查是否有效,ftp命令用于使用FTP服务,格式为:"ftp [参数] [FTP主机]",yum install ftp –y安装即可。
安装完之后,操作可如下图:


此处我在登录ftp之前创建的anon目录,发现匿名用户创建不了目录。由于此目录的用户与其属组都为root,所以没有权限,可使用setfacl给个匿名用户权限

再来登录进去可见创建成功,重命名和文件的删除、上传也没问题(此处没有截图。还有可在ftp模式下使用help来查看可使用的命令)。

2.本地用户的验证
首先关闭之前的匿名用户相关配置,添加下列参数,没有的手动添加即可,重启服务。
|
anonymous_enable=NO |
禁止匿名访问模式。 |
|
local_enable=YES |
允许本地用户模式。 |
|
write_enable=YES |
设置可写入权限。 |
|
local_umask=022 |
本地用户模式创建文件的umask值。 |
|
userlist_deny=YES |
参数值为YES即禁止名单中的用户(需手动添加) |
|
userlist_enable=YES |
允许"禁止登陆名单",名单文件为ftpusers与user_list。 |
由于本地用户可随意进入系统各个目录,所以需添加参数。
新建用户hot
useradd hot并设置密码
然后登录验证,可看到创建目录,重命名删除等操作。

chroot_local_user=YES 禁锢本地用户于其家目录中,这样用户只能在其家目录下。
添加此参数,登录会出现500 OOPS: vsftpd: refusing to run with writable root inside chroot()
Login failed.的错误,问题是因为用户的根目录可写,并且使用了chroot限制,而这在最近的更新里是不被允许的。要修复这个错误,可以用命令chmod a-w /home/hot去除用户根目录的写权限即可。
但是有个问题设置此参数之后,本地用户无法上传文件及创建文件和删除文件,(selinux和防火墙都关闭了)。最好使用下面参数!!
|
allow_writeable_chroot=YES |
允许禁锢的FTP根目录可写而不拒绝用户登入请求。 |
至于userlist_enable和userlist_deny这两个参数理解其意便知怎么用。上面配置文件图已给出说明。
3.虚拟用户的验证
虚拟用户模式的帐号密码都不是真实系统中存在的,所以只要配置妥当虚拟用户模式会比本地用户模式更加安全,但是Vsftpd服务配置虚拟用户模式的操作步骤相对复杂一些,具体流程如下:
第1步:建立虚拟FTP用户数据库文件。
第2步:创建FTP根目录及虚拟用户映射的系统用户。
第3步:建立支持虚拟用户的PAM认证文件。
第4步:在vsftpd.conf文件中添加支持配置。
第5步:为虚拟用户设置不同的权限。
第6步:重启vsftpd服务,验证实验效果。
PAM(Pluggable Authentication Modules)是一种认证机制,通过一些动态链接库和统一的API将系统提供的服务与认证方式分开,可以根据需求灵活的调整服务程序的不同认证方式。可以不必对应用程序做任何的修改,易用性很强,PAM采取了分层设计的思想——应用程序层、应用接口层、鉴别模块层,程序层调用接口层,接口调用模块层。
其目录/etc/pam.d:针对不同服务而定义好的pam配置文件。
例如vsftpd程序就会在其主配置文件("/etc/vsftpd/vsftpd.conf")中写入下面的参数:
pam_service_name=vsftpd
表示登陆FTP服务器时是根据/etc/pam.d/vsftpd的文件内容进行安全认证的。
第1步:建立虚拟FTP用户数据库文件。
# cd /etc/vsftpd/
创建用于生成FTP用户数据库的原始帐号和密码文件:
# vim vuser.list //单数行为帐号,双数行为密码。账号不是真实存在于系统中的,是借助于宿主账号nobody

使用db_load命令用HASH算法生成FTP用户数据库文件vuser.db:
# db_load -T -t hash -f vuser.list vuser.db
查看数据库文件的类型:
# file vuser.db
FTP用户数据库内容很敏感,所以权限给小一些:
# chmod 600 vuser.db
删除原始的帐号和密码文件:
# rm -f vuser.list
第2步:创建FTP根目录及虚拟用户映射的系统用户。
创建用户virtual并设置为不允许登陆系统并定义该用户的家目录:
# useradd -d /var/ftproot -s /sbin/nologin virtualftp
为保证其他用户可以访问,给予rwxr-xr-x权限:
# chmod -Rf 755 /var/ftproot/

第3步:建立支持虚拟用户的PAM认证文件:
# vim /etc/pam.d/vsftpd.vu
//参数db用于指向刚刚生成的vuser.db文件,但不要写后缀。
auth required pam_userdb.so db=/etc/vsftpd/vuser
account required pam_userdb.so db=/etc/vsftpd/vuser

第4步:在vsftpd.conf文件中添加支持配置。
可以关闭匿名用户模式
|
参数 |
作用 |
|
anonymous_enable=NO |
禁止匿名开放模式。 |
|
local_enable=YES |
允许本地用户模式。 |
|
guest_enable=YES |
开启虚拟用户模式。 |
|
guest_username=virtualftp |
指定虚拟用户帐号。 |
|
pam_service_name=vsftpd.vu |
指定pam文件。 |
|
allow_writeable_chroot=YES |
允许禁锢的FTP根目录可写而不拒绝用户登入请求。 |
第5步:为虚拟用户设置不同的权限
权限默认是不能上传、创建、修改文件,可配置用户独立的用户权限。
指定用户独立的权限配置文件存放的目录:
# vim /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/vusers_dir
创建用户独立的权限配置文件存放的目录:
# mkdir /etc/vsftpd/vusers_dir/
在该目录下创建空白的hdd的配置文件,指定hdd用户的具体权限:

第6步:重启vsftpd服务,验证实验效果。
如下图可以看到创建目录删除目录上传下载等功能都没有问题。也可以直接在windows下打开文件窗口输入ftp://IP 操作其功能。

以上。
Linux下ftp安装配置及三种用户的验证的更多相关文章
- VMware Linux 下 Nginx 安装配置 - nginx.conf 配置 [负载两个 Tomcat] (三)
首先启动Nginx 1. 相关浏览 两个 Tomcat 配置: VMware Linux 下 Nginx 安装配置 - Tomcat 配置 (二) Nginx 安装配置启动: VMware Linu ...
- Linux下git安装配置
一.Linux下git安装配置 2013-07-28 20:32:10| 分类: 默认分类 | 标签:linux git server |举报|字号 订阅 http://abomby ...
- Linux下PHP安装配置MongoDB数据库连接扩展
Web服务器: IP地址:192.168.21.127 PHP安装路径:/usr/local/php 实现目的: 安装PHP的MongoDB数据库扩展,通过PHP程序连接MongoDB数据库 具体操作 ...
- VMware Linux 下 Nginx 安装配置 - Tomcat 配置 (二)
准备工作 相关浏览: VMware Linux 下 Nginx 安装配置 (一) 1. 选在 /usr/local/ 下创建 softs 文件夹,通过 ftp 命令 把 apache-tomcat-7 ...
- Linux下查看磁盘挂载的三种方法
Linux下查看磁盘挂载的三种方法 2009-06-05 23:17 好久没有更新日志了,呵呵.不是没有要写的东东.实在抽不出时间来写,要准备公司的考试呢,C++考试.已经有七个月没有写C++代码了, ...
- Linux CentOS7 VMware 安装软件包的三种方法、rpm包介绍、rpm工具用法、yum工具用法、yum搭建本地仓库
一.安装软件包的三种方法 Linux下游三种安装方法,rpm工具.yum工具.源码包.rpm按装一个程序包时,有可能因为该程序包依赖另一个程序包而无法安装:yum工具,可以连同依赖的程序包一起安装. ...
- JDK1.6在LINUX下的安装配置[转]
JDK1.6在LINUX下的安装是如何进行的呢,让我们开始我们的演示: Ubuntu Linux下jdk的安装与配置 1.JDK1.6安装准备 从sun公司网站www.sun.com下载linux版本 ...
- Linux下FTP安装与配置
第一部分 .note-content {font-family: 'Helvetica Neue', Arial, 'Hiragino Sans GB', STHeiti, 'Microsoft Ya ...
- Linux下Mycat安装配置和使用
mysql安装下载mysql[百度云]tar -zxvf mysql-5.6.32-linux-glibc2.5-x86_64.tar.gz 解压把mysql文件夹移动到 /usr/local/ 下m ...
随机推荐
- JS 判断是否是手机端并跳转操作
JS 判断运行当前脚本的应用程序是否为手机端或者一些其他信息,在我的工作中遇到的不是十分频繁,被我的同事一问就给问住了,所以把之前找到的一些知识点整理出来,供大家参考,若哪里不对欢迎指出,我会及时的更 ...
- 【读书笔记】iOS-手势识别
一,事件处理机制 事件是当用户手指触及屏幕,或地屏幕上滑动,或摇晃设备等时候,系统不断地把这些事件通过消息发送给应用程序对象.在iOS设备中能够捕获的事件有3种:触摸事件,移动事件和多媒体远程控制事件 ...
- 【读书笔记】iOS-离线可用的Web应用
众所周知,网页不光需要靠互联网接入访问才能提供各种形式的服务,而且连网页自身的各种设计元素也需要在有网接入的情况上才能获得. 但借助于HTML5的离线特性,我们可以通过把各种类型的资源都储存在Web应 ...
- Java 开源博客 Solo 1.8.0 发布 - 改进文件上传
本次发布主要是更新了编辑器,使其更好地支持文件上传.(1.8.0 版本变更记录请看这里) 我们的 Markdown 编辑器: 另外,我们对 HTTPS 的支持也更完善了,欢迎大家试用! 简介 Solo ...
- Java数据解析---JSON
一.Java数据解析分为:XML解析和JSON解析 XML解析即是对XML文件中的数据解析,而JSON解析即对规定形式的数据解析,比XML解析更加方便 JSON解析基于两种结构: 1.键值对类型 { ...
- Git 恢复本地误删的文件
通过git进行代码管理的项目,如果在本地编辑的过程中误删了某些文件或者文件夹,可以通过git操作来复原. Step 1: git status 查看本地对改动的暂存记录.如下图所示,本人误删了文件夹“ ...
- Java学习笔记:输入、输出数据
相关内容: 输出数据: print println printf 输入数据: Scanner 首发时间:2018-03-16 16:30 输出数据: JAVA中在屏幕中打印数据可以使用: System ...
- maven(七),本地仓库
运行机制: 在pom.xml文件中添加依赖jar包时,首先会从本地仓库查找,如果本地仓库不存在,就从中央仓库下载到本地仓库,中央仓库是maven默认的远程仓库 仓库坐标 eclipse默认会在wind ...
- [20171110]_allow_read_only_corruption参数.txt
[20171110]_allow_read_only_corruption参数.txt --//昨天在修改查询隐含参数脚本时发现一个参数_allow_read_only_corruption,感觉应该 ...
- centos 6.5下安装nmap工具及简单用法
Nmap是一款针对大型网络的端口扫描工具,被广泛应用于黑客领域做漏洞探测以及安全扫描,其主要功能有主机发现(Host Discovery). 端口扫描(Port Scanning). 版本侦测(Ver ...