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

vsftpd 允许用户以三种认证模式登录FTP服务器。

  • 匿名开放模式:是一种最不安全的认证模式,任何人都可以无需密码验证而直接登录。
  • 本地用户模式:是通过Linux系统本地的账户密码信息进行认证的模式,相较于匿名开放模式更安全,而且配置起来也很简单。
  • 虚拟用户模式:是这三种模式中最安全的一种认证模式,它需要为FTP服务单独建立用户数据库文件,虚拟出用来进行口令验证的账户信息,而这些账户信息在服务器系统中实际上是不存在的,仅供FTP服务程序进行认证使用。这样,即使黑客破解了账户信息也无法登录服务器,从而有效降低了破坏范围和影响。

1、yum 安装

yum install -y vsftpd

2、创建一个不能登录系统的用户ftpuser用于映射虚拟用户,ftp根目录

useradd -d /home/ftpsite -s /sbin/nologin ftpuser
chmod /home/ftpsite/

修改配置文件 /etc/vsftpd/vsftpd.conf, 先备份一份

cd /etc/vsftpd
cp -a vsftpd.conf vsftpd.conf.bak
vim vsftpd.conf
anonymous_enable=NO     #关闭匿名开放模式
local_enable=YES #允许本地用户模式 虚拟用户模式也要开启
guest_enable=YES #开启虚拟用户模式
guest_username=ftpuser #指定用于映射虚拟用户的系统账户
#启用ASCII模式的传输
ascii_upload_enable=YES
ascii_download_enable=YES
#将所有用户限定在其主目录内
chroot_local_user=YES
chroot_list_enable=NO #如果有用户不需要限定在主目录以下设置
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list #这个文件需要自己创建

chroot_local_user=YES     所有用户限定在其主目录内
chroot_list_enable=YES    启用例外
/etc/vsftpd/chroot_list         这里的用户名都不受限制,可以切换出主目录,用户名一行填写一个

chroot_local_user=NO       所有用户都不受限制,可以切换出主目录
chroot_list_enable=YES    启用例外
/etc/vsftpd/chroot_list         这里的用户名都受到限制,限定在其主目录内,用户名一行填写一个

3、创建虚拟用户

vim virtual_user
test1
test111
test2
test222

创建了2个账户,test1、test2。第一行用户名,第二行密码,依此类推:

使用 db_load 命令生成 vsftpd 的认证文件,将用户信息文件转换为数据库并使用hash加密:

db_load -T -t hash -f virtual_user virtual_user.db
chmod 600 virtual_user.db
rm -f virtual_user.db

4、建立虚拟用户所需的PAM配置文件,对虚拟用户的安全和账户权限进行验证

vim /etc/pam.d/vsftpd.virtual
auth       required     pam_userdb.so db=/etc/vsftpd/virtual_user #不需要填后缀
account    required     pam_userdb.so db=/etc/vsftpd/virtual_user

修改 /etc/vsftpd/vsftpd.conf,指定刚创建的PAM文件

pam_service_name=vsftpd.virtual

5、给不同虚拟用户设置不同权限,及主目录

前面已近创建了test1、test2两个虚拟用户,分别创建主目录

mkdir /home/ftpsite/test1
mkdir /home/ftpsite/test2
chown ftpuser:ftpuser /home/ftpsite/test1
chown ftpuser:ftpuser /home/ftpsite/test2

创建虚拟用户配置文件,及存放目录,配置文件的名称要跟之前 virtual_user.db 里用户名一致

mkdir /etc/vsftpd/virtual_user_conf
vim /etc/vsftpd/virtual_user_conf/test1
local_root=/home/ftpsite/test1   #设置用户主目录
allow_writeable_chroot=YES #2.3.5之后,如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了,可以去掉写权限或加上这项
anon_world_readable_only=NO #只要文件所有者对文件有读权限即可下载
write_enable=YES #写入开关,是下面几个权限的前提
anon_upload_enable=YES #上传
anon_mkdir_write_enable=YES #创建文件夹
anon_other_write_enable=YES #删除、覆盖、重命名

anon_world_readable_only
文件有三种权限,文件所有者,文件所有组,文件的其他人,这个anon_world_readable_only参数意思是,当他为YES时候,文件的其他人必须有读的权限才允许下载,单单所有者为ftpuser且有读权限是无法下载的,必须其他人也有读权限,才允许下载,这是为安全性的一方面考虑,若为NO则只要ftpuser用户对文件有读权限即可下载
目录是一样的,当他为YES时候,目录的其他人必须有读的权限才允许读取文件列表,否则提示 failed to open directory
https://bbs.csdn.net/topics/390083069

用户test2

vim /etc/vsftpd/virtual_user_conf/test2
local_root=/home/ftpsite/test2
allow_writeable_chroot=YES
anon_upload_enable=YES

修改 /etc/vsftpd/vsftpd.conf,加上虚拟用户配置目录

user_config_dir=/etc/vsftpd/virtual_user_conf

6、启动vsftp,添加防火墙端口

systemctl start vsftpd
systemctl enable vsftpd
firewall-cmd --add-service=ftp --permanent
firewall-cmd --reload

7、链接测试 test1 test2 两个权限是不一样的

Linux下配置vsftp的若干问题: https://blog.csdn.net/pandaball/article/details/54838119

CentOS7安装vsftpd3.0.2、以及虚拟用户配置的更多相关文章

  1. vsftpd安装及虚拟用户配置

    服务器环境:CentOS6.9 Linux 2.6.32-696.10.1.el6.x86_64 安装vsftpd.db4.db4-utils # yum -y install vsftpd db4 ...

  2. Centos7安装Zabbix4.0步骤

    点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 Centos7安装Zabbix4.0步骤 官方搭建zabbix4.0的环境要求: 1. 环境搭建L ...

  3. Centos7 安装 MongoDB4.0

    目录 安装包下载 MongoDB安装 启动数据库 补充 小结 诚邀访问我的个人博客:我在马路边 更好的阅读体验点击查看原文:Centos7安装MongoDB4.0 原创博客,转载请注明出处 @ 由于项 ...

  4. Centos7安装MySQL8.0

    请到这个地址看:https://www.cnblogs.com/kevingrace/p/10482469.html Centos7安装MySQL8.0 - 操作手册 一.yum安装方式: 卸载之前版 ...

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

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

  6. centos7安装redis3.0和phpredis扩展详细教程(图文)

    整理一下centos7安装redis3.0和phpredis扩展的过程,有需要的朋友可以拿去使用. 一.安装redis3.0 1.安装必要的包 yum install gcc 2.centos7安装r ...

  7. centos7安装zabbix3.0超详细步骤解析

    centos7安装zabbix3.0超详细步骤解析 很详细,感谢作者 以下是我操作的history 622 java -version 623 javac -version 624 grep SELI ...

  8. vsftpd 虚拟用户配置

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

  9. VSFTPD虚拟用户配置

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

随机推荐

  1. C#生成唯一值的方法汇总

    生成唯一值的方法很多,下面就不同环境下生成的唯一标识方法一一介绍,作为工作中的一次总结,有兴趣的可以自行测试: https://www.cnblogs.com/xinweichen/p/4287640 ...

  2. kvm虚拟化2-qemu-kvm

    Kvm  只支持x86 64的硬件虚拟化    要求cpu必须支持硬件虚拟化 HVM Kvm两个组件: 1 kvm.ko模块装入后为/dev/kvm 工作为hypervisor ,在用户空间通过系统调 ...

  3. 【Vue】-- 数据双向绑定的原理 --Object.defineProperty()

    Object.defineProperty()方法被许多现代前端框架(如Vue.js,React.js)用于数据双向绑定的实现,当我们在框架Model层设置data时,框架将会通过Object.def ...

  4. [PKUSC2018]星际穿越(倍增)

    题意:n个点的图,点i和[l[i],i)的所有点连双向边.每次询问(l,r,x)表示x到[l,r]的所有点的最短路径长度和. 首先这题显然可以线段树优化建图,但是需要比较好的常数才能通过45分,还需要 ...

  5. DWM1000 三基站一标签定位HEX

    蓝点DWM1000 模块已经打样测试完毕,有兴趣的可以申请购买了,更多信息参见 蓝点论坛 HEX 下载链接参见论坛:http://bphero.com.cn/forum.php?mod=viewthr ...

  6. 编程菜鸟的日记-初学尝试编程-C++ Primer Plus 第5章编程练习4

    #include <iostream>using namespace std;const MAXSIZE=12;int main(){ char *month[MAXSIZE]={&quo ...

  7. 09-Http & Servlet

    Http协议&Servlet Http协议 什么是协议 > 双方在交互.通讯的时候, 遵守的一种规范.规则. http协议 > 针对网络上的客户端 与 服务器端在执行http请求的 ...

  8. Windows系统Git安装配置

    Git的安装 Git是一个开源的分布式的版本控制软件,是Linus Torvalds 为了方便开源贡献者协同开发和管理 Linux 内核开发替代BitKe而开发的. 打开git官网的下载地址:http ...

  9. DEV_TreeList使用经验小结

    1. 点击叶子节点是希望Open键显示,点击非叶子节点时希望隐藏.实践中发现点击到了非叶子节点图标,Open没有隐藏,如何解决? 增加一个判断: if (_hitInfo.HitInfoType != ...

  10. ArcGIS Construction Tool OnSketchFinished事件不响应

    使用ArcGIS AddIN ConstructionTool做东西,绘制完Sketch之后,OnSketchFinished事件不响应,没有任何异常与错误. 1.初步问题:OnSketchFinis ...