先吐槽一下这个工具,配置繁琐,限制规则复杂,报错信息不够详细,学起来吃力。

准备工作

[root@vsftp-server ~]# mkdir /data/ #创建ftp目录
[root@vsftp-server ~]# useradd -s /sbin/nologin -d /data/vsftp localUser #虚拟用户将被映射为本地系统用户
[root@vsftp-server ~]# cat /etc/shells #末尾追加/sbin/nologin解决localUser登录530问题
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
/sbin/nologin
[root@vsftp-server ~]# ll /data/vsftp/ -d
drwx------ 2 localUser localUser 62 Dec 1 17:50 /data/vsftp/

安装客户端和服务端

[root@vsftp-server ~]# yum install -y vsftpd ftp

修改配置

[root@vsftp-server ~]# mv vsftpd.conf vsftpd.conf.ori
[root@vsftp-server ~]# vim /etc/vsftpd/vsftpd.conf
#是否启用匿名免密账号
anonymous_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
#是否允许本地系统用户登录
local_enable=YES
local_root=/data/vsftp/
local_umask=022
#是否允许虚拟用户账号密码登录
guest_enable=YES
#虚拟账号映射为本地系统用户
guest_username=localUser
#虚拟用户使用本地用户权限
virtual_use_local_privs=YES
write_enable=YES
dirmessage_enable=YES
connect_from_port_20=YES
chown_uploads=NO
user_config_dir=/etc/vsftpd/v_conf.d
xferlog_enable=YES
xferlog_file=/var/log/xferlog
xferlog_std_format=YES
async_abor_enable=YES
ascii_upload_enable=YES
ascii_download_enable=YES
ftpd_banner=Welcome to vsFTP service.
allow_writeable_chroot=YES
#是否允许本地用户访问上级目录
chroot_local_user=YES
#是否启用目录访问限制列表
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
ls_recurse_enable=YES
listen=YES
#启用用户限制名单
userlist_enable=YES
#deny名单属性:YES为黑名单,NO为白名单
userlist_deny=NO
userlist_file=/etc/vsftpd/user_list
tcp_wrappers=YES
pam_service_name=vsftpd

虚拟用户登录认证

[root@vsftp-server vsftpd]# vim /etc/vsftpd/v_user_list
virtualUser1
123123
virtualUser2
123123

生成认证数据库,每次修改v_user_list都要重新生成一遍

[root@vsftp-server vsftpd]# db_load -T -t hash -f /etc/vsftpd/v_user_list /etc/vsftpd/v_u.db
[root@vsftp-server vsftpd]# chmod 600 /etc/vsftpd/virtusers.db

配置PAM认证规则,即时生效,不必重启vsftpd

参考资料:https://www.cnblogs.com/z-books/p/4329676.html

[root@vsftp-server vsftpd]# vim /etc/pam.d/vsftpd
#%PAM-1.0
auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed #拒绝黑名单用户
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/v_u #验证虚拟用户身份
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/v_u #验证虚拟用户账号密码
#认证用到的数据库文件的文件名使用/etc/vsftpd/v_u,而不是/etc/vsftpd/v_u.db,更不是v_user_list
auth include password-auth #此配置将影响本地用户登录
account include password-auth #此配置将影响本地用户登录
auth required pam_shells.so #此配置将影响本地用户登录
session include password-auth
session required pam_loginuid.so
session optional pam_keyinit.so force revoke

注意以上配置有先后顺序,顺序更改可能导致认证失效

用户权限方面,chroot_list和白名单user_list,都是即时生效,不必重启服务

[root@vsftp-server ~]# vim /etc/vsftpd/user_list
localUser
virtualUser1
virtualUser2 [root@vsftp-server ~]# vim /etc/vsftpd/chroot_list
#允许本地用户访问上级目录
localUser
#不允许虚拟用户访问上级目录
#virtualUser1
#virtualUser2

为每个虚拟用户单独指定一个家目录,未指定家目录的虚拟用户将出现登录异常

[root@vsftp-server vsftpd]# mkdir /etc/vsftpd/v_conf.d
[root@vsftp-server vsftpd]# vim /etc/vsftpd/v_conf.d/virtualUser1
local_root=/data/vsftp/virtualUser1
write_enable=YES
[root@vsftp-server vsftpd]# vim /etc/vsftpd/v_conf.d/virtualUser2
local_root=/data/vsftp/virtualUser2
write_enable=YES

启动服务并验证结果

[root@vsftp-server ~]# systemctl restart vsftpd

注意localUser是在chroot允许列表里的,可以访问上级目录

排错

异常日志:

[root@vsftp-server ~]# tailf /var/log/secure

本地用户登录530 Login incorrect异常:

auth required pam_shells.so 配置项的含义为仅允许用户的shell为 /etc/shells 文件内的shell命令时,才能够成功

参考:https://blog.csdn.net/hahahaxiaoyu/article/details/100582853

从零搭建vsftpd的更多相关文章

  1. Ubuntu server搭建vsftpd小记

    Ubuntu server中搭建vsftpd小记 <h1> 在Ubuntu server中安装vsftpd</h1> sudo apt-get install vsftpd & ...

  2. 从零搭建基于golang的个人博客网站

    原文链接 : http://www.bugclosed.com/post/14 从零搭建个人博客网站需要包括云服务器(虚拟主机),域名,程序环境,博客程序等方面.本博客 就是通过这几个环节建立起来的, ...

  3. Centos6.5搭建vsftpd,并配置用户和密码登录

    Centos6.5搭建vsftpd,并配置用户和密码登录 2017年05月11日 18:40:47 阅读数:6142 1)安装vsftpd yum install vsftpd 2)配置vsftpd配 ...

  4. SpringBoot整合Shiro实现基于角色的权限访问控制(RBAC)系统简单设计从零搭建

    SpringBoot整合Shiro实现基于角色的权限访问控制(RBAC)系统简单设计从零搭建 技术栈 : SpringBoot + shiro + jpa + freemark ,因为篇幅原因,这里只 ...

  5. 从零搭建docker+jenkins 自动化部署环境

    从零搭建docker+jenkins+node.js自动化部署环境 本次案例基于CentOS 7系统 适合有一定docker使用经验的人阅读 适合有一定linux命令使用经验的人阅读 1.docker ...

  6. 从零搭建consul

    从零搭建consul 原文链接:https://blog.csdn.net/weixin_42107541/article/details/87640807#2linux_25 从零搭建consul1 ...

  7. 从零搭建一个SpringCloud项目之Feign搭建

    从零搭建一个SpringCloud项目之Feign搭建 工程简述 目的:实现trade服务通过feign调用user服务的功能.因为trade服务会用到user里的一些类和接口,所以抽出了其他服务需要 ...

  8. 从零搭建Spring Boot脚手架(1):开篇以及技术选型

    1. 前言 目前Spring Boot已经成为主流的Java Web开发框架,熟练掌握Spring Boot并能够根据业务来定制Spring Boot成为一个Java开发者的必备技巧,但是总是零零碎碎 ...

  9. 从零搭建一个IdentityServer——项目搭建

    本篇文章是基于ASP.NET CORE 5.0以及IdentityServer4的IdentityServer搭建,为什么要从零搭建呢?IdentityServer4本身就有很多模板可以直接生成一个可 ...

随机推荐

  1. VUE自学日志02-应用与组件实例

    准备好了吗? 我们刚才简单介绍了 Vue 核心最基本的功能--本教程的其余部分将更加详细地涵盖这些功能以及其它高阶功能,所以请务必读完整个教程! 应用 & 组件实例 创建一个应用实例创建一个应 ...

  2. 踩坑系列《九》 无法获取实体类xxx对应的表名

    话不多说,直接说明原因 类似于 @MapperScan(basePackages = "com.hyxiao.user.mapper") 启动类的mapper扫描注解的导入包正确的 ...

  3. Vue插槽slot理解与初体验 ~

    一.插槽的理解 1.官网介绍 Vue 实现了一套内容分发的 API,将 <slot> 元素作为承载分发内容的出口. 2.为什么使用插槽 Vue 中有一个重要的概念-组件,可以在开发中将子组 ...

  4. 订单峰值激增 230%,Serverless 如何为世纪联华降本超 40%?|双11 云原生实践

    作者 | 朱鹏 导读:2020 年 双11,世纪联华基于阿里云函数计算 (FC) 弹性扩容,应用于大促会场 SSR.线上商品秒杀.优惠券定点发放.行业导购.数据中台计算等多个场景,业务峰值 QPS 较 ...

  5. Filter防火墙

    实验简介 实验属于防火墙系列 实验目的 了解个人防火墙的基本工作原理: 掌握Filter防火墙的配置. 实验环境 一台安装了win7操作系统的主机. 预备知识 防火墙 防火墙(Firewall)是一项 ...

  6. CVE-2017-11882 漏洞分析总结 新手漏洞分析详细教程

    CVE-2017-11882分析总结 注: 这篇随笔记录了CVE-2017-11882漏洞分析的整个过程,并介绍了相关调试软件的使用 漏洞信息 CVE-2017-11882属于缓冲区溢出类型漏洞,产生 ...

  7. exe图标消失的解决方案

    步骤 win + r组合键打开运行窗口 输入cmd,回车 在终端窗口右键粘贴即可 taskkill /im explorer.exe /f cd /d %userprofile%\appdata\lo ...

  8. Just My Code debugging

    Just My Code debugging During a debugging session, the Modules window shows which code modules the d ...

  9. 【二食堂】Alpha - Scrum Meeting 5

    Scrum Meeting 5 例会时间:4.15 12:30 - 13:00 进度情况 组员 昨日进度 今日任务 李健 1. 主页搭建结束issue2. 与后端协商确定接口的设计3. 查找文本区域功 ...

  10. Kotlin/Native 用KMM写Flutter插件

    一.用KMM写Flutter插件 Google官方有一个写Flutter例子How to write a Flutter plugin,这里把Google plugin_codelab 例子改成用KM ...