(1)vsftpd基本介绍

作用:实现文件共享

1)vsftpd两种模式

主动模式

所谓主动模式,指的是FTP服务器“主动”去连接客户端的数据端口来传输数据,其过程具体来说就是:客户端从一个任意的非特权端口N(N>1024)连接到FTP服务器的命令端口(即tcp 21端口),紧接着
客户端开始监听端口N+1,并发送FTP命令“port N+1”到FTP服务器。然后服务器会从它自己的数据端口(20)“主动”连接到客户端指定的数据端口(N+1),这样客户端就可以和ftp服务器建立数据传输通道了

被动模式

所谓被动模式,指的是FTP服务器“被动”等待客户端来连接自己的数据端口,其过程具体是:当开启一个FTP连接时,客户端打开两个任意的非特权本地端口(N >1024和N+1)。第一个端口连接服务器的21端口,
但与主动方式的FTP不同,客户端不会提交PORT命令并允许服务器来回连它的数据端口,而是提交PASV命令。这样做的结果是服务器会开启一个任意的非特权端口(P > 1024),并发送PORT P命令给客户端。然后客户端发起从本地端口N+1到服务器的端口P的连接用来传送数据。(注意此模式下的FTP服务器不需要开启tcp 20端口了)

2)vsftpd配置文件详解/etc/vsftpd/vsftpd.conf,

注意:vsftpd配置文件不允许有空格,使用vim编辑器set list查看是否有空格,如果有空格,服务无法启动

anonymous_enable=YES					//是否允许匿名用户登录ftp,匿名用户的家目录是/var/ftp,只能下载文件
local_enable=YES //是否允许本地用户登录
write_enable=YES //是否允许写
local_umask=022 //控制本地用户上传文件的默认权限,umask表示要减掉的权限
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES //监听端口21
listen_port=21
pam_service_name=vsftpd
userlist_enable=YES //限制用户是否登录,下面有详解
userlist_deny=NO
tcp_wrappers=YES
use_localtime=YES //同步系统时间,保持上传文件的时间一致
pasv_enable=yes //开启被动模式,最小端口10240,最大端口20480
pasv_max_port=20480
pasv_min_port=10240
chroot_local_user=YES //锁定所有用户在自己的家目录
local_root=/ftp //指定所有本地用户的家目录
anon_root=/var/ftp //指定匿名用户的家目录
#anon_max_rate=500000 //匿名用户限速500k
#local_max_rate=80000 //本地用户限速为80k
#max_clients=500 //ftp最大连接数
#max_per_ip=2 //单个ip最大连接数,线程数
dual_log_enable=YES //开启vsftpd日志
vsftpd_log_file=/var/log/vsftpd.log

user_list文件详解

tom: 在/etc/vsftpd/user_list中
jim:不在user_list中
userlist_enable=YES, userlist_deny=YES //tom: 拒绝登入 jim: 允许登录 user_list文件是黑名单
userlist_enable=YES, userlist_deny=NO //tom: 允许登录 jim:拒绝登录 user_list文件是白名单
userlist_enable=NO,userlist_deny=NO //tom: 允许登录 jim: 允许登录
userlist_enable=NO,userlist_deny=YES //tom: 允许登录 jim: 允许登录

锁定用户在自己的家目录

方法一:锁定部分用户chroot_list_enable=YES   chroot_list_file=/etc/vsftpd/chroot_list
方法二:锁定所有本地用户:chroot_local_user=YES

(2)vsftpd实现

目标:实现所有系统用户登录ftp的默认家目录是都是/ftp,使用被动模式

1)关闭centos7的firewalld防火墙,使用iptables防火墙

systemctl stop firewald.service
systemctl disable firewald.service
yum install iptables-services iptables-devel -y
systemctl enable iptables.service
systemctl start iptables.service
sed -ri '/^SELINUX=/cSELINUX=disabled' /etc/sysconfig/selinux
setenforce 0

2)安装vsftpd

yum install vsftpd -y
systemctl start vsftpd
systemctl enable vsftpd

3)创建用户

useradd tom
echo "tom123" | passwd --stdin tom

4)创建系统本地用户的家目录并授权

mkdir /ftp
setfacl -m u:tom:rwx /ftp

5)添加用户到user_list文件

echo "tom" >>/etc/vsftpd/user_list
echo "anonymous" >>/etc/vsftpd/user_list

6)给防火墙添加FTP访问转换支持模块

#vim /etc/sysconfig/iptables-config
IPTABLES_MODULES="ip_conntrack_ftp"
IPTABLES_MODULES="ip_nat_ftp"

7)给防火墙添加访问规则

iptables -I INPUT  1 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -I INPUT 1 -p tcp -m state --state NEW --dport 21 -j ACCEPT
service iptables save
service iptables restart

8)检测模式是否加载成功

#lsmod | grep ftp
nf_nat_ftp 12770 0
nf_conntrack_ftp 18638 1 nf_nat_ftp
nf_nat 26787 1 nf_nat_ftp
nf_conntrack 133387 5 nf_nat_ftp,nf_nat,xt_conntrack,nf_conntrack_ftp,nf_conntrack_ipv4

9)修改vsftpd配置文件

#vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES //是否允许匿名用户登录ftp,匿名用户的家目录是/var/ftp,只能下载文件
local_enable=YES //是否允许本地用户登录
write_enable=YES //是否允许写
local_umask=022 //控制本地用户上传文件的默认权限,umask表示要减掉的权限
dirmessage_enable=YES
connect_from_port_20=YES //主动模式
xferlog_std_format=YES
listen=YES //监听端口21
listen_port=21
pam_service_name=vsftpd //使用pam认证
userlist_enable=YES //限制用户是否登录,下面有详解
userlist_deny=NO
tcp_wrappers=YES
use_localtime=YES //同步系统时间,保持上传文件的时间一致
pasv_enable=yes //开启被动模式,最小端口10240,最大端口20480
pasv_max_port=20480
pasv_min_port=10240
chroot_local_user=YES //锁定所有用户在自己的家目录
local_root=/ftp //指定所有本地用户的家目录
#anon_root=/var/ftp //指定匿名用户的家目录
allow_writeable_chroot=YES //2.3.5之后,vsftpd增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了!如果检查发现还有写权限,就会报该错误。解决方案
dual_log_enable=YES //开启vsftpd日志
vsftpd_log_file=/var/log/vsftpd.log

10)重启vsftpd

systemctl restart vsftpd

11)测试验证

本地用户:可以上传文件,下载文件

12)注意

注意:以上方式适合nat环境目的地址nat,如果是1个公网全部映射成1个内网ip,需要添加以下配置
pasv_addr_resolve=yes
pasv_address=公网ip

(3)客户端工具

1)lftp

lftp 192.168.1.40 					\\匿名登录
lftp tom:tom123@192.168.1.40 \\使用用户名和密码登录
ls
cd
get \\下载单个文件
mget \\下载多个文件
put \\上传单个文件
mput \\上传多个文件
mirror \\下载目录

2)wget

wget ftp://192.168.1.40/hosts --ftp-user=tom --ftp-password=tom123				\\带用户名和密码下载ftp文件
wget ftp://192.168.1.40/hosts --ftp-user=tom --ftp-password=tom123 -P /tmp/ \\下载文件保存到/tmp目录下
wget ftp://192.168.1.40/hosts --ftp-user=tom --ftp-password=tom123 -O /tmp/host.txt \\下载文件另存为/tmp目录下修改文件名为host.txt

CentOS7安装和配置vsftpd的更多相关文章

  1. CentOS7安装及配置vsftpd (FTP服务器)

    CentOS7安装及配置vsftpd (FTP服务器) 1.安装vsftpd 1 yum -y install vsftpd 2.设置开机启动 1 systemctl enable vsftpd 3. ...

  2. CentOS7安装及配置vsftpd (FTP服务器FTP账号创建以及权限设置)

    本文章向大家介绍CentOS7安装及配置vsftpd (FTP服务器FTP账号创建以及权限设置),主要包括CentOS7安装及配置vsftpd (FTP服务器FTP账号创建以及权限设置)使用实例.应用 ...

  3. Centos7安装并配置mysql5.6完美教程

    Centos7安装并配置mysql5.6完美教程 Centos7将默认数据库mysql替换成了Mariadb,对于我们这些还想使用mysql的开发人员来说并不是一个好消息.然而,网上关于Linux安装 ...

  4. 开发--CentOS-7安装及配置

    开发|CentOS-7安装及配置 本文主要进行详细讲解CentOS7.5系统的安装过程,以及CentOS系统初始化技术.我并不想将这篇文章变成一个教程,尽管我将详细的进行每一步的讲解,enjoy! 前 ...

  5. CentOS7安装和配置FTP

    1. 安装vsftpd #安装vsftpd yum install -y vsftpd #设置开机启动 systemctl enable vsftpd.service # 重启 service vsf ...

  6. centos 5 yum安装与配置vsFTPd FTP服务器

    vsftpd作为FTP服务器,在Linux系统中是非常常用的.下面我们介绍如何在centos系统上安装vsftp. 什么是vsftpd vsftpd是一款在Linux发行版中最受推崇的FTP服务器程序 ...

  7. Centos7安装并配置mysql5.6

    1.下载安装包:https://pan.baidu.com/s/18xAumOggjm9bu9Wty6kYjg 2.卸载系统自带的Mariadb 2.1查询已安装的mariadb [root@loca ...

  8. centos yum安装与配置vsFTPd FTP服务器(转)

    vsftpd作为FTP服务器,在Linux系统中是非常常用的.下面我们介绍如何在centos系统上安装vsftp. 什么是vsftpd vsftpd是一款在Linux发行版中最受推崇的FTP服务器程序 ...

  9. centos7安装并配置postgresql

    安装并配置postgresql,参考以下两篇文章即可 https://www.postgresql.org/download/linux/redhat/ http://www.jianshu.com/ ...

随机推荐

  1. HDU1530 最大团 模板

    Maximum Clique Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  2. Moodle配置

    Moodle配置 1.   内部设置 在 Moodle 站点管理员界面中有一系列的配置页面(可以从'设置' 块中访问 '网站管理'区).这里有一些重要的系统设置,你需要进行检查. 根据提示信息并结合实 ...

  3. AngularJs学习——常用表单指令练习

    一.知识点 ng-show.ng-hide.ng-if(控制元素显示隐藏,区别在于ng-hide是是否显示隐藏元素,而ng-if是是否移除元素): ng-src.ng-class(为元素添加路径和cl ...

  4. 通过java客户端连接hbase 注意事项

    1.通过Java客户端连接Hbase,其中hbase通过zookeeper去管理,需要注意的是客户端端口. 通过在浏览器端输入地址查看:http://192.168.3.206:60010/maste ...

  5. [uva11174]村民排队 递推+组合数+线性求逆元

    n(n<=40000)个村民排成一列,每个人不能排在自己父亲的前面,有些人的父亲不一定在.问有多少种方案. 父子关系组成一个森林,加一个虚拟根rt,转化成一棵树. 假设f[i]表示以i为根的子树 ...

  6. 【bzoj3476-懒惰的奶牛】线段树

    题解: 感觉这题和别人的做法不一样...呵呵呵...调了一百年.. 设家坐标为(a,b),对于每个点(x,y),可以转化为|a-x|+|b-y|<=k 对于每个点,它的影响范围是一个菱形(也就是 ...

  7. bzoj 2079: [Poi2010]Guilds——结论题

    Description Zy皇帝面临一个严峻的问题,两个互相抵触的贸易团体,YYD工会和FSR工会,他们在同一时间请求在王国各个城市开办自己的办事处.这里有n个城市,其中有一些以双向马路相连,这两个工 ...

  8. 课下加分项目 MYPWD 20155335 俞昆

    Mypwd 的解读与实现 20155335 linux下pwd命令的编写 实验要求: 1 .学习pwd命令 2 . 研究pwd实现需要的系统调用(man -k; grep),写出伪代码 3 .实现my ...

  9. MVC4 AspNet MVC下的Ajax / 使用JQuery做相关的Ajax请求

    源码参考:链接:http://pan.baidu.com/s/1pKhHHMj  密码:mkr4 1:新建-->项目-->Web-->ASP.NET MVC 4 Web 应用程序.命 ...

  10. JS中的实例方法与静态方法

    一.静态方法与实例方法的例子: 我们先来看一个例子来看一下JS中的静态方法和实例方法到底是什么 静态方法: function A(){} A.sayMeS=function(){ console.lo ...