服务器环境:CentOS Linux release 7.4   3.10.0-693.5.2.el7.x86_64

服务器软件:vsftpd-3.0.2

FTP工作模式:主动模式和被动模式

主动模式

被动模式

vsftpd的配置文件

/etc/vsftpd/vsftpd.conf  主配置文件

/etc/vsftpd/ftpusers  黑名单

/etc/vsftpd/vsftpd_conf_migrate.sh  迁移脚本

/etc/vsftpd/user_list  用户列表,与userlist_enbale和userlist_deny选项密切相关,详见http://blog.csdn.net/bluishglc/article/details/42273197

安装vsftpd

# yum -y install vsftpd

安装libdb-utils

安装Berkeley DB工具,用于生成虚拟用户认证文件

# yum -y install libdb-utils    #CentOS7是libdb-utils
# yum -y install db4 db4-utils #CentOS6是db4-utils

宿主用户

创建宿主用户,即guest_username,所有虚拟用户都是映射宿主用户的目录权限。

# useradd -d /var/vsftp -s /sbin/nologin vsftp

主配置文件

# vi /etc/vsftpd/vsftpd.conf

#关闭匿名访问
anonymous_enable=NO
#启用本地系统用户,包括虚拟用户
local_enable=YES
#允许执行FTP命令,如果禁用,将不能进行上传、下载、删除、重命名等操作
write_enable=YES
#本地用户umask值
local_umask=
dirmessage_enable=YES
#启用日志
xferlog_enable=YES
xferlog_std_format=YES
#关闭ftp-data端口,相当于不使用主动模式
connect_from_port_20=NO
#限制用户不能离开FTP主目录,启用并设置例外用户清单
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
#使用ipv4进行监听
listen=YES
listen_ipv6=NO #pam认证文件名称,位于/etc/pam.d/
pam_service_name=vsftpd
#启用全局用户例外清单
userlist_enable=YES
#启用tcp封装
tcp_wrappers=YES #虚拟用户权限是否与本地用户相同。为NO时,将与匿名用户的权限相同,在每个虚拟用户配置文件里设置匿名用户的选项等于虚拟用户的权限
virtual_use_local_privs=NO #启用guest后,所有非匿名用户将映射到guest_username进行访问,包括本地系统用户也不能使用,并且转换成一个虚拟用户,与其他虚拟用户的配置方法一样
guest_enable=YES
guest_username=vsftp
#虚拟用户配置文件目录
user_config_dir=/etc/vsftpd/vuser_conf
#启用pasv模式
pasv_enable=YES
pasv_min_port=33000
pasv_max_port=

主配置文件可参考:man vsftpd.conf或https://security.appspot.com/vsftpd/vsftpd_conf.html

chroot_list文件

chroot()会检查chroot_list文件

# touch /etc/vsftpd/chroot_list

虚拟用户列表

奇行为用户名,偶行为密码

# vi /etc/vsftpd/vuser
ftpserver

虚拟用户认证文件

# db_load -T -t hash -f /etc/vsftpd/vuser /etc/vsftpd/vuser.db
# chmod 600 /etc/vsftpd/vuser.db

虚拟用户认证配置

注释掉其他本地用户认证的内容,因为启用了guest_enable后,本地用户将失效,所有非匿名用户变成虚拟用户

# cp /etc/pam.d/vsftpd{,.bak}
# vi /etc/pam.d/vsftpd
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser

虚拟用户配置文件

# mkdir /etc/vsftpd/vuser_conf/
# vi /etc/vsftpd/vuser_conf/ftpserver  #文件名与对应FTP虚拟用户一致
local_root=/var/vsftp/ftpserver  #虚拟用户主目录,用户和组必须指定为宿主用户vsftp
#vsftpd主配置文件中已规定虚拟用户权限与匿名用户一致,因此以下针对匿名用户的权限配置即为虚拟用户的权限
anon_umask=
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

虚拟用户主目录和权限

最新版vsftpd不允许用户主目录有w权限,因此在主目录下新建一个子目录,赋予700权限。所有上传、下载、删除、重命名等操作只能在子目录中进行

# mkdir -p /var/vsftp/ftpserver/newdir
# chown -R vsftp.vsftp /var/vsftp
# chmod -R /var/vsftp
# chmod -R 700 /var/vsftp/newdir

SELINUX

# setsebool -P ftpd_full_access on

防火墙

# iptables -I INPUT -p tcp --dport  -j ACCEPT  #FTP连接端口
# iptables -I INPUT -p tcp --dport : -j ACCEPT  #pasv模式下的随机端口
# iptables-save >/etc/sysconfig/iptables  #保存防火墙配置

重启

# systemctl restart iptables.service
# systemctl restart vsftpd.service

vsftpd安装及虚拟用户配置的更多相关文章

  1. vsftpd服务安装与虚拟用户配置

    vsftpd的全名是“Very secure FTP Daemon” 一.安装vsftpd安装db4-util用于生成认证文件 yum -y install db4-utils 安装vsftpd yu ...

  2. Ubuntu14 vsftp 的安装和虚拟用户配置

    一.介绍 FTP 是 File Transfer Protocol (文件传输协议)的缩写 ,在 Unix/Linux 系统中常用的免费 FTP 服务器软件主要是 VSFTP,vsftp的官方地址:h ...

  3. centos7: vsftpd安装及启动: ftp配置(以虚拟用户为例)

    centos7: vsftpd安装及启动: ftp配置 1安装: yum -y install vsftpd /bin/systemctl start vsftpd.service #启动 /bin/ ...

  4. centos7下安装vsftpd与PAM虚拟用户

    Vsftp与PAM虚拟用户 使用yum 安装vsftp yum install vsftpd pam pam-* db4 db4-* 设置开机启动 chkconfig vsftpd on 创建一个保存 ...

  5. CentOS7安装vsftpd3.0.2、以及虚拟用户配置

    vsftpd(very secure ftp daemon)是一款运行在Linux操作系统上的FTP服务程序,不仅完全开源而且免费,还具有很高的安全性.传输速度,以及支持虚拟用户验证. vsftpd ...

  6. VSFTPD虚拟用户配置

    转载:http://www.cnblogs.com/allenjin/archive/2011/12/03/2274542.html 以下操作验证OK!!!! VSFTPD虚拟用户配置 VSFTP = ...

  7. ubuntu 12.04 配置vsftpd 服务,添加虚拟用户,ssl加密

    1.对于12.04的vsftpd 有一些bug,推荐安装版本vsftpd_2.3.5-1ubuntu2ppa1_amd64.debapt-get install python-software-pro ...

  8. vsftpd 虚拟用户配置

    vsftpd 虚拟用户的作用是 通过不同的虚拟用户可以有不同的根目录. 从 2.3.5 版本之后,vsftpd增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不能在具有写权限了,如果检查 ...

  9. vsftp虚拟用户配置

    找了很久,终于找到像样一点的文章,很详细,参数方面懂英文基本能看懂,一个教程是否有用,关键在于细节.错了一点点就不能配下去了. ------------------------------------ ...

随机推荐

  1. mongoDB学习手记1--Windows系统下的安装与启动

    第一步:下载安装包 我们首先需要下载 mongodb 的安装包,直接到官网下载即可.地址为:https://www.mongodb.com/download-center#community. 看下自 ...

  2. Scaffolding Template on Asp.Net Core Razor Page

    Scaffolding Template Intro 我们知道在Asp.Net MVC中,如果你使用的EF的DBContext的话,你可以在vs中通过右键解决方案-添加控制器-添加包含视图的控制器,然 ...

  3. C++拷贝构造函数专题

    C++拷贝构造函数 在定义任何C++类时,拷贝空置操作都是必要部分,类需要控制拷贝.赋值和销毁对象时发生的行为.拷贝构造函数的用途:当创建了一个新对象时,可以用另一个对象的数据初始化这个新建的对象. ...

  4. 我的Spring学习记录(四)

    虽然Spring管理这我们的Bean很方便,但是,我们需要使用xml配置大量的Bean信息,告诉Spring我们要干嘛,这还是挺烦的,毕竟当我们的Bean随之增多的话,xml的各种配置会让人很头疼. ...

  5. MySQL之多表操作

    前言:之前已经针对数据库的单表查询进行了详细的介绍:MySQL之增删改查,然而实际开发中业务逻辑较为复杂,需要对多张表进行操作,现在对多表操作进行介绍. 前提:为方便后面的操作,我们首先创建一个数据库 ...

  6. java基础知识及详细笔记

    第一章:初识java 1.1.java的概述 ü  什么是计算机程序:计算机按照某种顺序而完成的一系列有序指令的集合. ü  Java的作用:1:安装和运行本机上的桌面程序.2:通过浏览器访问面向in ...

  7. Android02-控件

    在android studio中,新建一个module时布局文件中就会默认带一个TextView,里面显示着一句话:Hello World !  布局中通常放置的是android控件,下面介绍几个an ...

  8. centos7下安装tesseract-ocr进行验证码识别

    摘要: centos7安装依赖库 tesseract配置 代码例子 centos7安装依赖库 安装centos系统依赖 yum install -y automake autoconf libtool ...

  9. Jquery实现弹出选择框选择后返回,支持多级分类

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...

  10. 全球多个 TOP 网站藏挖矿代码,5 亿 PC 沦为矿工

    据ZDNet报道,现在很多网站都开始在网页脚本中藏匿挖矿代码,在用户访问时偷算力用于挖矿.来自Adguard的报告称也证实,也有5亿台电脑中招. 最新最热的IT技术付费社区 IT帮 itbang.me ...