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

准备工作

[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. python简单操作excel

    python操作excel 写入excel # 写入excel import xlwt # 创建xls对象 wb = xlwt.Workbook() # 新增两个表单页(sheet1) sh1 = w ...

  2. 三步搞定IDEA集成热部署

    第一步.在你的SpringBoot项目中添加DevTools依赖 <!-- 热部署DevTools --> <dependency> <groupId>org.sp ...

  3. C++: 基于四叉树数据结构的自适应网格(初探)

    C++: 基于四叉树数据结构的自适应网格 二叉树是一种典型的非线性存储数据结构,查找效率可以达到\(O(log_2N)\),同样,这类树状结构存在许多种变体,详细参考邓俊辉老师的<数据结构C++ ...

  4. PHP审计之PHP反序列化漏洞

    PHP审计之PHP反序列化漏洞 前言 一直不懂,PHP反序列化感觉上比Java的反序列化难上不少.但归根结底还是serialize和unserialize中的一些问题. 在此不做多的介绍. 魔术方法 ...

  5. Analysis Tools(分析工具)

    分析工具 1.叠加分析 # Process: 交集取反 arcpy.SymDiff_analysis("", "", 输出要素类, "ALL" ...

  6. 题解 CF555E Case of Computer Network

    题目传送门 题目大意 给出一个\(n\)个点\(m\)条边的无向图,有\(q\)次有向点对\((s,t)\),问是否存在一种方法定向每条边使得每个点对可以\(s\to t\). \(n,m,q\le ...

  7. 小白自制Linux开发板 番外篇 一 modprobe加载驱动问题(转载整理)

    使用modprobe加载驱动 转载地址:https://blog.csdn.net/qq_39101111/article/details/78773362 前面我们提到,modprobe并不需要指定 ...

  8. noip模拟78

    考试过程:先读题,然后觉得开题顺序1 4 2 3. 首先是T1,要是不考虑重复这题很简单,但是考虑重复就比较复杂了,我打完,对拍完差不多用了两个小时,然后就是忘了算内存,结果内存爆了,\(100pts ...

  9. springcloud整合config组件

    config组件 config组件支持两种配置文件获取方式springcould搭建的微服务的配置文件的获取方式有两种.它支持配置服务放在配置服务的内存中(即本地),也支持放在远程Git仓库中或者本地 ...

  10. 云原生的弹性 AI 训练系列之三:借助弹性伸缩的 Jupyter Notebook,大幅提高 GPU 利用率

    Jupyter Notebooks 在 Kubernetes 上部署往往需要绑定一张 GPU,而大多数时候 GPU 并没有被使用,因此利用率低下.为了解决这一问题,我们开源了 elastic-jupy ...