从零搭建vsftpd
先吐槽一下这个工具,配置繁琐,限制规则复杂,报错信息不够详细,学起来吃力。
准备工作
[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的更多相关文章
- Ubuntu server搭建vsftpd小记
Ubuntu server中搭建vsftpd小记 <h1> 在Ubuntu server中安装vsftpd</h1> sudo apt-get install vsftpd & ...
- 从零搭建基于golang的个人博客网站
原文链接 : http://www.bugclosed.com/post/14 从零搭建个人博客网站需要包括云服务器(虚拟主机),域名,程序环境,博客程序等方面.本博客 就是通过这几个环节建立起来的, ...
- Centos6.5搭建vsftpd,并配置用户和密码登录
Centos6.5搭建vsftpd,并配置用户和密码登录 2017年05月11日 18:40:47 阅读数:6142 1)安装vsftpd yum install vsftpd 2)配置vsftpd配 ...
- SpringBoot整合Shiro实现基于角色的权限访问控制(RBAC)系统简单设计从零搭建
SpringBoot整合Shiro实现基于角色的权限访问控制(RBAC)系统简单设计从零搭建 技术栈 : SpringBoot + shiro + jpa + freemark ,因为篇幅原因,这里只 ...
- 从零搭建docker+jenkins 自动化部署环境
从零搭建docker+jenkins+node.js自动化部署环境 本次案例基于CentOS 7系统 适合有一定docker使用经验的人阅读 适合有一定linux命令使用经验的人阅读 1.docker ...
- 从零搭建consul
从零搭建consul 原文链接:https://blog.csdn.net/weixin_42107541/article/details/87640807#2linux_25 从零搭建consul1 ...
- 从零搭建一个SpringCloud项目之Feign搭建
从零搭建一个SpringCloud项目之Feign搭建 工程简述 目的:实现trade服务通过feign调用user服务的功能.因为trade服务会用到user里的一些类和接口,所以抽出了其他服务需要 ...
- 从零搭建Spring Boot脚手架(1):开篇以及技术选型
1. 前言 目前Spring Boot已经成为主流的Java Web开发框架,熟练掌握Spring Boot并能够根据业务来定制Spring Boot成为一个Java开发者的必备技巧,但是总是零零碎碎 ...
- 从零搭建一个IdentityServer——项目搭建
本篇文章是基于ASP.NET CORE 5.0以及IdentityServer4的IdentityServer搭建,为什么要从零搭建呢?IdentityServer4本身就有很多模板可以直接生成一个可 ...
随机推荐
- Django+Nginx+Uwsgi(全网最全步骤工作原理流程与部署历程)
一.必要前提 1.1 准备知识 django 一个基于python的开源web框架,请确保自己熟悉它的框架目录结构. uWSGI 一个基于自有的uwsgi协议.wsgi协议和http服务协议的web网 ...
- 题解 SP6779 【GSS7 - Can you answer these queries VII】
题目传送门 题目大意 给出一个\(n\)个点的树,每个点有权值.有\(m\)次操作,每次要么查询一条链上的最大子段和,要么把一条链的权值都修改为一个常数. \(n,m\le 10^5\) 思路 如果是 ...
- 洛谷2387 NOI2014魔法森林(LCT维护最小生成树)
本题是运用LCT来维护一个最小生成树. 是一个经典的套路 题目中求的是一个\(max(a_i)+max(b_i)\)尽可能小的路径. 那么这种的一个套路就是,先按照一维来排序,然后用LCT维护另一维 ...
- 3DGIS开发使用的开源项目
gdal proj4 vcglib assimp libjpg libpng osg libtess2 cesiumjs glm
- 【Azure 应用服务】App Service中运行Python 编写的 Jobs,怎么来安装Python包 (pymssql)呢?
问题描述 在App Service中运行Python编写的定时任务,需要使用pymssql连接到数据库,但是发现使用 python.exe -m pip install --upgrade -r re ...
- Redis大集群扩容性能优化实践
一.背景 在现网环境,一些使用Redis集群的业务随着业务量的上涨,往往需要进行节点扩容操作. 之前有了解到运维同学对一些节点数比较大的Redis集群进行扩容操作后,业务侧反映集群性能下降,具体表现在 ...
- Apache Common-collection 反序列化利用链解析--TransformedMap链
Apache Common-collection 反序列化利用链解析 TransformedMap链 参考Java反序列化漏洞分析 - ssooking - 博客园 (cnblogs.com) poc ...
- WIFI Deauth攻击-爬坑笔记
这里用Aircrack这款工具进行介绍: 准备工作:无线网卡连接电脑或者虚拟机(免驱的最好),如需驱动请自行安装驱动 1.将无线网卡接入测试电脑Linux虚拟机(装有Aircrack-ng) 2.测试 ...
- [Java]Sevlet
0 前言 对于Java程序员而言,Web服务器(如Tomcat)是后端开发绕不过去的坎.简单来看,浏览器发送HTTP请求给服务器,服务器处理后发送HTTP响应给浏览器. Web服务器负责对请求进行处理 ...
- xshell几款绝佳配色方案
NO.1 [mycolor] text(bold)=e9e9e9 magenta(bold)=ff00ff text=00ff80 white(bold)=fdf6e3 green=80ff00 re ...