一、准备工作

1.1、服务器准备

  • 操作系统:centos 7.x
  • 关闭防火墙(firewall/iptables)和SELinux

参见笔记《【E20200101-1】Centos 7.x 关闭防火墙(firewall)和SELinux》

  • 更新服务器(不含内核)
# yum --exclude=kernel* update
  • 安装好用的文本工具(nano)
# yum -y install nano

1.2、理解“Port模式(主动模式)和Pasv模式(被动模式)”的概念

Port模式(主动模式):

当FTP服务器配置的是Port模式:那么【客户端C】会在登入【服务端S】后发送一条命令告诉【服务端S】(“客户端C”在本地打开了一个端口N在等着“服务端S”进行数据连接),当【服务端S】收到【客户端C】发来的信息后 就会向【客户端C】打开的端口N进行连接,并通过端口N提供数据服务。

Pasv模式(被动模式):

当FTP服务器配置的是Pasv模式,那么【客户端C】会在登入【服务端S】后【服务端S】会发信息给【客户端C】(“服务端S”在服务器上打开了一个端口M在等着“客户端C”进行数据连接),当【客户端C】收到【服务端S】发来的信息后,就会向【服务端S】打开的端口M进行连接,并通过端口N提供数据服务。

二、安装vsftp

2.1、yum安装vsftp

yum -y install vsftpd

2.2、启动服务

systemctl start vsftpd.service

三、配置vsftp

3.1、主要配置文件默认地址

vsftp主要配置文件默认地址(可以通过vsftpd另外指定)

/etc/vsftpd/vsftpd.conf

其他常用配置文件地址可以在vsftpd.conf配置中指定,以下为vsftpd: version 3.0.2默认配置信息

#定义不能跳出用户主目录的文件
chroot_list_file=/etc/vsftpd/chroot_list
#定义限制/允许用户登录的文件
userlist_file=/etc/vsftpd/user_list
#定义登录信息文件的位置
banner_file=/etc/vsftpd/banner
#禁止使用的匿名用户登陆时作为密码的电子邮件地址
banned_email_file=/etc/banned_emails
#日志文件位置
xferlog_file=/var/log/vsftpd.log
#目录信息文件
message_file=.message

3.2、修改vsftpd.conf配置文件

配置文件路径

/etc/vsftpd/vsftpd.conf

备份一份配置文件

# cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak

使用nano文本编辑器修改配置文件

# nano /etc/vsftpd/vsftpd.conf

使用一下内容替换原有配置文件

############允许本地用户登入,拒绝匿名登入#####################

#控制是否允许匿名用户登入,YES 为允许匿名登入,NO 为不允许。默认值为YES。
#anonymous_enable=YES/NO(YES)
anonymous_enable=NO #控制是否允许本地用户登入,YES 为允许本地用户登入,NO为不允许;
#local_enable=YES/NO(YES)默认值为YES;
local_enable=YES #设置本地用户登入者新增或上传档案时的 umask (匿名用户的掩码)值;
#如umask是022,这时创建一个权限为666的文件,文件的实际权限为666-022=644
#默认值为077 对应新建档案的对应权限为700;
local_umask=022 ############设置增、删、改、查权限################### #是否允许登陆用户有写权限。属于全局设置,默认值为YES;
#write_enable=YES/NO(YES)默认值为YES;
write_enable=YES #是否将所有用户限制在主目录,YES为启用 NO禁用;
#在安装vsftpd后不做配置的话,ftp用户是可以向上切换到要目录之外的;
#chroot_local_user=YES/NO (NO) 默认值为NO;
chroot_local_user=YES ##用于指定用户列表文件中的用户不允许切换到上级目录;
#chroot_list_enable=YES/NO (NO) 默认值为NO;
chroot_list_enable=YES #是否限制在“主目录”下的用户名单文件地址;
#当chroot_list_enable=YES(默认值为NO)时生效;
#至于是“限制名单”还是“排除名单”,这取决于chroot_local_user的值;
#当chroot_local_user=YES时,该文件里的用户作为“例外”不做限制;
#当chroot_local_user=NO时,该文件里的用户作为“例外”受到限制;
chroot_list_file=/etc/vsftpd/chroot_list #从2.3.5之后,vsftpd增强了安全检查;
#如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了!
#如果检查发现还有写权限,就会报该错误。
#要修复这个错误,可以用命令chmod a-w /home/user去除用户主目录的写权限;
#注意把目录替换成你自己的。或者你可以在vsftpd的配置文件中增加下列项
allow_writeable_chroot=YES #############虚拟用户配置:配置成使用本地用户相同的权限############### #默认Vsftpd.conf中不包含这些设定项目,需要自己手动添加配置
#虚拟用户使用PAM认证方式。
#设置PAM使用的名称,默认值为/etc/pam.d/vsftpd。
pam_service_name=vsftpd #设定启用虚拟用户功能;
#guest_enable= YES/NO(NO)默认值为NO。
guest_enable=YES #这里用来映射虚拟用户。默认值为ftp。
#指定虚拟用户映射的宿主用户
#也可以指定虚拟用户的宿主用户为apache/nginx运行账户,可以避免很多权限设置问题
guest_username=nginx #当该参数激活(YES)时,虚拟用户使用与本地用户相同的权限;
#当此参数关闭(NO)时,虚拟用户使用与匿名用户相同的权限。
#virtual_use_local_privs=YES/NO(NO)默认情况下此参数是关闭的(NO)。
virtual_use_local_privs=YES #设定虚拟用户个人Vsftp的配置文件存放路径;
#也就是说,这个被指定的目录里,将存放每个Vsftp虚拟用户个性的配置文件;
#需要注意的地方就是这些配置文件名必须和虚拟用户名相同;
user_config_dir=/etc/vsftpd/vuser_conf ############配置日志############# #开启日记功能
xferlog_enable=YES
#使用标准格式
xferlog_std_format=YES 
#当xferlog_std_format关闭且本选项开启时,记录所有ftp请求和回复,当调试比较有用
log_ftp_protocol=NO  ###############端口与主被动配置:配置成Pasv模式(被动模式)########## #ftp服务监听端口
listen_port=21 #设置开启Pasv模式(被动模式)
#pasv_enable=YES #设置Pasv模式(被动模式)数据连接端口范围从 10060~10065
pasv_min_port=10060
pasv_max_port=10065 ###############时间相关配置################## #显示目录清单时是用本地时间还是GMT时间,可以通过mdtm命令来达到一样的效果
use_localtime=YES #Pasv模式(被动模式)请求超时
accept_timeout=5 #Port模式(主动模式)连接超时
connect_timeout=10 #空闲等待时长
idle_session_timeout=120 #数据连接超时时间
data_connection_timeout=120

3.3、创建虚拟账户映射的宿主用户

这里要注意宿主用户对于ftp主目录的属主权限和读写权限

//创建nginx用户并添加到ftp组
# useradd -g ftp -M -d /data/vsftpd -s /sbin/nologin nginx
//设置用户 nginx 的密码
# passwd nginx
//创建ftp主目录
# mkdir /data/vsftpd
//把主目录 /data/vsftpd 的所有权给nginx账号和ftp组
# chown -R nginx:ftp /data/vsftpd

3.4、创建虚拟用户清单文件

使用nano文本编辑器创建虚拟用户文件

# nano /etc/vsftpd/vuser_passwd
# 编辑虚拟用户名单文件内容;
# 第奇数行为账号,偶数行为密码;
#注意:不能使用系统保留的用户名,例如root
ftp1
12345678
ftp2
12345678

3.5、生成虚拟用户数据文件

//使用db_load命令生成vsftpd的认证文件,将用户信息文件转换为数据库并使用hash加密:
# db_load -T -t hash -f /etc/vsftpd/vuser_passwd /etc/vsftpd/vuser_passwd.db
//修改数据库文件权限
# chmod 600 /etc/vsftpd/vuser_passwd.db

数据库生成后最好清空该文本文件,并在安全的地方记录用户名和密码;

如果用户账号有所变化,需要重新生成虚拟用户数据文件

3.6、为各虚拟用户建立独立的配置文件

这里以使用nano文档编辑工具为虚拟用户ftp1建立独立的配置文件为例

//建立虚拟用户个人vsftp的配置文件目录,路径需要vsftpd.conf中配置的路径一致
# mkdir /etc/vsftpd/vuser_conf
//创建并编辑虚拟用户ftp1的配置文件
# nano /etc/vsftpd/vuser_conf/ftp1

虚拟用户ftp1的配置文件内容如下

#ftp1虚拟用户独立配置文件

#登入时所在目录
local_root=/home/vsftpd/ftp1 用户登入时, #是否允许登陆用户有写权限。属于全局设置,默认值为YES;
#这里可以直接使用全局配置而无需独立配置,除非是和全局配置不一样
#write_enable=YES/NO(YES)默认值为YES;
#write_enable=YES ########### 访问权限配置#########################
#只有当vsftpd.conf中virtual_use_local_privs=NO 时以下配置生效
#virtual_use_local_privs配置说明如下
#当该参数激活(YES)时,虚拟用户使用与本地用户相同的权限;
#当此参数关闭(NO)时,虚拟用户使用与匿名用户相同的权限。
#virtual_use_local_privs=YES/NO(NO)默认情况下此参数是关闭的(NO)。
################################################ # 是否只读,不能下载
# anon_world_readable_only=(YES/NO)
anon_world_readable_only=NO #如果设为YES,则允许匿名登入者有上传文件(非目录)的权限;
#只有全局的write_enable=YES(默认YES)时,此项才有效;
#当然,匿名用户必须要有对上层目录的写入权。默认值为NO;
anon_upload_enable=YES #如果设为YES,则允许匿名登入者有新增目录的权限
#只有全局的write_enable=YES(默认YES)时,此项才有效;
#当然,匿名用户必须要有对上层目录的写入权。
#anon_mkdir_write_enable=YES/NO(NO)默认值为NO。
anon_mkdir_write_enable=YES #如果设为YES,则允许匿名登入者拥有上传或者建立目录之外的权限,譬如删除或者重命名。
#如果anon_upload_enable=NO,则匿名用户不能上传文件,但可以删除或者重命名已经存在的文件;
#如果anon_mkdir_write_enable=NO,则匿名用户不能上传或者新建文件夹,但可以删除或者重命名已经存在的文件夹。
#anon_other_write_enable=YES/NO(NO)默认值为NO。
anon_other_write_enable=YES

3.7、创建用户目录

根据拟用户独立配置文件中配置的路径建立用户目录

# mkdir -p /home/vsftpd/ftp1

3.8、生成虚拟用户的PAM文件(重要)

这里的pam文件路径是由vsftpd.conf中的【pam_service_name=vsftpd】配置

默认Vsftpd.conf中不包含这些设定项目,需要自己手动添加配置

如果没设置PAM使用的名称,默认值为/etc/pam.d/vsftpd。

//进入pam.d目录
# cd /etc/pam.d/
//备份vsftpd文件
# cp vsftpd vsftpd.bak

修改vsftpd文件内容

  1. 加入第三和第四行;
  2. 下面的全部注释掉;
#%PAM-1.0
#注意下面是64位操作系统,如果是32位的话lib64需要改成lib
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd #session optional pam_keyinit.so force revoke
#auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
#auth required pam_shells.so
#auth include password-auth
#account include password-auth
#session required pam_loginuid.so
#session include password-auth

至此vsftp已经安装并配置好了 nice~

四、服务运维

//重启服务
# systemctl restart vsftpd.service
//启动服务
# systemctl start vsftpd.service
//服务状态查看
# systemctl status vsftpd.service

Eword 原创学习笔记

文档编号:E20200102-1

文档标签:Centos、vsftp、ftp

转载请注明出处

【E20200102-1】centos 7 下vsftp的安装和配置的更多相关文章

  1. CentOS 7下Samba服务安装与配置详解

    1. Samba简介 Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成.SMB(Server Messages Block,信息服务块)是一种在局域网上共 ...

  2. Centos 7下Nagios的安装及配置

    简介 Nagios 是一款自动化运维工具,可以协助运维人员监控服务器的运行状况,并且拥有报警功能.本文章将介绍其安装方法和详细的配置方法. nagios 监控服务应用指南 本地资源:负载,CPU,磁盘 ...

  3. CentOS 6下OpenCV的安装与配置

    自己按照网上的教程一步一步来的 http://www.jb51.net/os/RedHat/280309.html 虚拟机环境 CentOS 6.5 内核版本:4.1.14 64位 gcc,gcc 4 ...

  4. Centos 7下mysql的安装与配置

    1,先下载好MySQ安装包并解压(不做详细说明). 2,上传解压后的MySQL安装包到虚拟机上. 3,安装MySQL [root@localhost /]# yum install mysql5.7. ...

  5. CentOS 7下OpenLDAP编译安装及配置

    一.环境 Server:基于CentOS-7-x86_64-1511 Server IP: 172.18.12.203 二.软件获取 OpenLDAP OpenLDAP官网下载地址:http://ww ...

  6. 阿里云Centos 7 FTP(vsftp)服务安装及配置

    #检查vsftpd是否安装 rpm -qa | grep vsftpd #检查vsftpd版本并安装 yum list vsftpd yum install vsftpd #设置开机启动 system ...

  7. CentOS 7下源码安装MySQL 5.7

    网上说linux安装mysql服务分两种安装方法: ①源码安装,优点是安装包比较小,只有几十M左右,缺点是安装依赖的库多,安装编译时间长,安装步骤复杂容易出错: ②使用官方编译好的二进制文件安装,优点 ...

  8. CentOS 6 下RPM方式安装MySQL5.6

    CentOS 6 下RPM方式安装MySQL5.6 1. 下载Linux对应的RPM包,如:CentOS6.7_64对应的RPM包,如下:[root@mysql ~]# ll总用量 113808-rw ...

  9. CentOS 6.6下JDK1.7安装与配置(Linux)经典入门详解案例

    最近用的linux较多,在网站找了一些关于linux环境下jdk安装的教程,过程是有的但是好多细节都没有表现出来,所以我花了点时间总结了一下,希望对大家都有帮助... CentOS下JDK1.7安装与 ...

随机推荐

  1. [jQuery]入口函数(一) jquery.min.js 一定要单线程下载,复制粘贴容易入坑

    jQuery入口函数 等着DOM结构渲染完毕即可执行内部代码,不必等到所有外部资源加载完毕 $(function () { // 此处是页面DOM加载完成的入口 }); $(document).rea ...

  2. [Pyhton]连接MSSQL实例并执行SQL语句

    运行环境: 服务器端: MSSQL 2014 Server 2012 R2 程序端: Python 3.7.4 MacOS 10.14.6 CentOS Linux release 7.7.1908 ...

  3. jQuery-Moblie在Chrome下出现的问题

    第一次用jQuery然后就遇到很蛋疼的地方,打开页面一直处在菊花状态,一开始以为自己搞错什么,是不是引用错文件,看里面的错误警告 Failed to execute 'replaceState' on ...

  4. C#基础知识学习(2)string类中的方法

    1.Compare 比较字符串 用来比较2个字符串的长度大小和值是否相同,相同则返回0,当x比y小返回-1,否则返回1,如果长度相同,且值不同,则返回1,代码如下 public static void ...

  5. nginx+uwsgi部署Django项目到Ubuntu服务器全过程,以及那些坑!!!

    前言:自己在windows上用PyCharm编写的Django项目,编写完后在windows上运行一点问题都没有,但是部署到服务器上时却Bug百出.百度,CSDN,sf,各种搜索寻求解决方案在历时3天 ...

  6. [WPF 自定义控件]自定义一个“传统”的 Validation.ErrorTemplate

    1. 什么是Validaion.ErrorTemplate 数据绑定模型允许您将与您Binding的对象相关联ValidationRules. 如果用户输入的值无效,你可能希望在应用程序 用户界面 ( ...

  7. 2000_wideband extension of telephone speech using a hidden Markov model

    论文地址:基于隐马尔科夫模型的电话语音频带扩展 博客作者:凌逆战 博客地址:https://www.cnblogs.com/LXP-Never/p/12151866.html 摘要 本文提出了一种从l ...

  8. pip 安装源-Python学习

    1.国内常用的安装源 -- 豆瓣:https://pypi.douban.com/simple -- 阿里:https://mirrors.aliyun.com/pypi/simple --中国科技大 ...

  9. leetcode--js--Two Sum

    问题描述: 给定一个整数数列,找出其中和为特定值的那两个数. 你可以假设每个输入都只会有一种答案,同样的元素不能被重用. 示例: 给定 nums = [2, 7, 11, 15], target = ...

  10. 展讯sprd_battery.c 充电驱动

    sprd_battery.c 是充电驱动,这个是充电功能的核心内容,电量显示策略.温度检测策略.充电保护机制等功能在这里实现,功能实现与硬件细节剥离,调用通用接口实现逻辑控制: 1 sprdbat_p ...