概述

vsftpd 支持三种账户类型登录 ftp,分别是:匿名用户、系统账户、虚拟账户

匿名用户

默认 vsftpd 是支持匿名用户的,该用户登录 ftp 服务使用 anonymous 用户直接登录,不需要输入密码。

系统账户

可以使用 Linux 系统本身存在的用户,作为 ftp 用户,具体哪些用户可以登录 ftp,可以通过配置文件指定。

虚拟账户

虚拟用户的特点是只能访问服务器为其提供的FTP服务,而不能访问系统的其它资源。所以,如果想让用户对FTP服务器站内具有写权限,但又不允许访问系统其它资源,可以使用虚拟用户来提高系统的安全性。

说明:所有虚拟用户在登录过程中会被隐射成同一个系统账户,所以所有的虚拟账户拥有相同的系统权限,如果想区分匿名用户的权限,默认情况是无法实现的。

环境及目标

VMWare 虚拟机,Ubuntu20.04 64位,vsftpd-3.0.3

目标是搭建一个ftp,可以使用虚拟用户 vuser1 登录 ftp。

搭建过程

# 安装 vsftpd
apt install -y vsftpd
# 找到 pam_userdb.so 位置,后续配置会用到
find / -name pam_userdb.so

建立虚拟宿主用户。

虚拟用户并不是系统用户,也就是说这些 ftp 的用户在系统中是不存在的。他们的总体权限其实是集中映射在一个系统用户身上,所谓 vsftpd 的虚拟宿主用户,就是这样一个支持着所有虚拟用户的宿主用户。执行以下命令将虚拟用户映射在 virtusers 这个用户上。

# -d 指定账户的 home 目录
# -s 指定系统用户登录的 shell,nologin 即不允许系统 login 登录。
# 使用 nologin 可以增强安全性
useradd -d /data/ftproot virtusers -s /sbin/nologin

建立 ftp 相关工作目录,以及权限管理。

最新版 vsftpd 不允许用户主目录有 w 权限,因此在主目录下新建一个子目录。所有上传、下载、删除、重命名等操作只能在子目录中进行,虚拟用户 vuser1 的 ftp 目录是 /data/ftproot/vuser1/,没有 w 权限,设置权限为 500,以下是相关目录权限设置参考。

# 此处采用目录结构树的形式展现个子目录权限/data                                       #数据目录,便于后期数据备份
└── [drwxr-xr-x]  ftproot                   #FTP服务目录└── [dr-x------]  vuser1                #虚拟用户主目录,后期可以增加vuser2、vuser3...└── [drwxr-xr-x]  rootdir           #虚拟用户FTP工作目录,可以在此目录读写操作
# 创建相关目录。
mkdir -p /data/ftproot/vuser1/rootdir# 进行权限设置。
chown -R virtusers.virtusers /data/ftproot
chmod 500 /data/ftproot/vuser1

配置虚拟用户

# 创建文件,用于存储虚拟账户名称及对应密码
vi /etc/vsftpd/vuserlist# 虚拟用户列表的内容
# 奇数行为用户名,偶数行为用户密码
vuser1
123456

用系统的 db_load 工具来生成 db 文件,出于安全角度修改 vuserlist.db 为 600 权限。
如果没有这个工具可以通过以下命令安装。

apt install -y db-utildb_load -T -t hash -f /etc/vsftpd/vuserlist /etc/vsftpd/vuserlist.db
chmod 600 /etc/vsftpd/vuserlist.db

修改 PAM 验证。

修改 */etc/pam.d/vsftpd,这个文件名与 /etc/vsftpd.conf 中的 pam_service_name=vsftpd 相对应。注释掉所有参数,在最后面加入以下两行内容。

# 注意:需要清除除注释外的所有内容,包括默认生成的以 @ 等开头的内容auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuserlist
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuserlist

创建及配置虚拟用户的配置文件。

# 创建虚拟用户的配置文件
mkdir /etc/vsftpd/vuser_conf/# 配置虚拟用户的配置文件
vi /etc/vsftpd/vuser_conf/vuser1# 添加以下配置信息
local_root=/data/ftproot/vuser1
anon_upload_enable=YES
anon_world_readable_only=NO
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

配置 vsftpd 的 vsftpd.conf 主配置文件。

listen=YES                                     #开启IPv4监听
listen_ipv6=NO                                 #关闭IPV6监听
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
pam_service_name=vsftpd                        #如果前面/etc/pam.d/vsftpd没有改文件名,就不修改
virtual_use_local_privs=YES                    #虚拟用户使用本地用户的权限
guest_enable=YES                               #开启虚拟用户
guest_username=virtusers                       #指定虚拟用户的宿主用户user_config_dir=/etc/vsftpd/vuser_conf         #指定虚拟用户配置文件

记得创建 /etc/vsftpd/chroot_list,否则会报错。

touch /etc/vsftpd/chroot_list

解释说明

chroot_local_user 和 chroot_list_file 两个配置项是配合使用的。

chroot_local_user=YES 时,只有 chroot_list_file 中指定的用户才能够 chroot,其他用户禁止 chroot

chroot_local_user=NO 时, chroot_list_file 中指定的用户禁止 chroot,其他用户可以 chroot

vsftpd 配置-使用虚拟账户登录相关推荐

  1. vsftp安装与配置(通过虚拟用户登录)

    在网上多方查找,并成功运行,归纳以下文档 操作环境: 虚拟机:virtualbox4.3.14 系统:centos6.4 i386 登录用户:root 创建文件夹 mkdir /data 增加ftp虚 ...

  2. Debian搭建ftp服务并使用虚拟账户登录

    在Debian Buster中配置vsFtpd并使用虚拟用户 (ineko.cc) 首先贴上原贴,本文的内容都是受到这篇文章的启发,感谢这篇文章的作者,我找了两三个小时的资料,最后还是这篇文章完美的解 ...

  3. CentOS6.5_64位系统下安装配置postfix邮件系统 启用并配置SMTP虚拟账户

    一.前言 继写下<PHP下利用PHPMailer配合QQ邮箱下的域名邮箱发送邮件>一文已有一年之久,随着时间的流逝,此文中的一些解决方案逐渐暴露出了一个限制性问题,也就是通过smtp连接Q ...

  4. VSFTPD设置-允许root账户登录ftp

    在centos中,vsftpd默认设置为禁止root账户登录ftp,在filezilla celient中,显示如下错误信息: 状态:    正在连接 [ip] 状态:    连接建立,等待欢迎消息. ...

  5. 配置vsftpd的遇到的坑及搭建虚拟账户

    配置vsftpd的遇到的坑及搭建虚拟账户 vsftpd是Very secure FTP 的简写,是一款非常安全的FTP软件.支持IPV6及SSL加密. vsftpd特性: 安全,高速,稳定 基于IP的 ...

  6. oracle虚拟用户和密码,vsftpd配置虚拟用户为登录用户

    1.安装vsftpd 安装依赖包: yum -y install pam pam-devel db4 de4-devel db4-uitls db4-tcl 新建vsftpd系统用户: #建立Vsft ...

  7. vsftpd的虚拟账户配置

    1). yum -y install vsftpd db4-utils 2). 建立系统账号      useradd virftp -s /sbin/nologin 3). 建立虚拟账户       ...

  8. c#与access建立连接用作登录_Linux网络配置 | FTP 实战-虚拟用户登录

    第四章 Linux网络配置 在前期的文章,我们用两篇文章介绍了FTP服务的原理<网络配置文件>< FTP 服务原理>,FTP服务包括三种认证模式,分别是匿名用户登录.本地用户和 ...

  9. 配置FTP服务2(vsftpd 配置虚拟账号)

    1. 安装软件 yum -y install vsftpd*   yum -y install pam*   yum -y install db4* 2. 建立虚拟账号相关联的系统账号 useradd ...

  10. ftp服务器 vsftpd搭建和配置以及虚拟用户的设置

    tp: File Transfer Protocol应用层协议:tcp, 21/tcpC/S:Client: 程序Server: 程序数据:命令连接:文件管理类命令,始终在线的连接数据连接:数据传输, ...

最新文章

  1. android视频聊天桌面小窗口怎么实现,android视频通话悬浮窗的适配
  2. Linux虚拟机 百度云 监控,使用Shell脚本监控KVM虚拟机
  3. 权限管理系统之模块管理
  4. 推荐系统实践整体化总结
  5. 解决不了“不可能三角”,火山抖音化只是个昏招
  6. oracle导出导入emp,oracle导入导出操作
  7. 轴固定位置_3轴、3+2轴、5轴加工都有哪些区别?这篇文章给你整明白
  8. C++ Opengl 显示TGA文件和扩展名源码
  9. android 在自定义的listview(有刷新加载项)列表中,数据过少时不能铺满整个屏幕时,header和footer同时显示问题...
  10. WinMerge只显示差异部分的设置方法
  11. 基于javaweb的教师信息管理系统
  12. 计算机磁盘修复工具,CHKDSK磁盘修复工具使用教程
  13. C盘压缩,电脑无法正常启动的解决方法?
  14. 计算机绘画小房子教案,中班绘画《房子》教案
  15. 全球排名前10位的广告公司
  16. 走着走着,就剩下了沉默
  17. Android神笔之Paint
  18. 只需98RMB Win7升级为专业版Win8
  19. 阅读书籍:Monte Carlo Methods(第一章 Introduction to Monte CarloMethods)
  20. 从业20年的“老司机”跟你聊聊:超融合技术哪家强?!

热门文章

  1. 计算机 映射网络驱动器,win7电脑映射网络驱动器的方法?
  2. 偏光太阳镜测试图片软件,[专题]真假偏光太阳镜简单、实用辨别方法!
  3. python植物大战僵尸脚本_用 Python 实现植物大战僵尸代码!
  4. 码出高效,码出质量:阿里Java开发手册正式发布!
  5. 浅析麒麟信安云几大优势之“安全性”篇
  6. JAVA实现Html转Pdf(wkhtmltopdf)
  7. aws s3 上传文件 html,javascript 上传文件到 aws s3存储桶
  8. 4.1 NI-USRP简介
  9. Json转换成excel 离线版
  10. 如何在30天内拿下软考初级程序员?