目录

环境说明
效果说明及截图
①. 安装组件
②. 系统账户建立
③. 编辑vsftpd的配置文件
④. 生成虚拟用户的数据库文件
⑤. 生成一个使用vsftpd_login.db数据文件的PAM认证文件
⑥. 创建共享目录
⑦. 创建虚拟用户的配置文件
⑧. 开启服务测试用户权限

环境说明

  系统: CentOS 6.6 64位

  版本: vsftpd 2.2.2

效果说明及截图

  匿名用户登录仅有下载的权限

  虚拟用户登录有上传下载, 创建删除文件夹, 删除文件, 更改名字等权限

①. 安装组件

#安装vsftpd服务相关组件
a. yum install vsftpd -y
#安装pam认证相关组件
b. yum install pam -y
#安装db4来支持文件数据库
c. yum install db4 -y

②. 系统账户建立

1. 建立vsftpd服务的宿主用户

useradd vsftpd -s /sbin/nologin
#默认的Vsftpd的服务宿主用户是root,但是这不符合安全性的需要。这里建立名字为vsftpd的用户,用他来作为支持vsftpd的服务宿主用户。由于该用户仅用来支持vsftpd服务用,因此没有许可他登陆系统的必要,并设定他为不能登陆系统的用户。

2. 建立virtualuser虚拟宿主用户

useradd virtualuser -s /sbin/nologin
#虚拟用户并不是系统用户,也就是说这些FTP的用户在系统中是不存在的。他们的总体权限其实是集中寄托在一个在系统中的某一个用户身上的,所谓virtualuser的虚拟宿主用户,就是这样一个支持着所有虚拟用户的宿主用户。由于他支撑了ftp的所有虚拟的用户,那么他本身的权限将会影响着这些虚拟的用户,因此,处于安全性的考虑,也要非分注意对该用户的权限的控制,该用户也绝对没有登陆系统的必要,这里也设定他为不能登陆系统的用户。使用-d参数指定用户的主目录,用户主目录并不是必须存在的。如果没有存在指定的目录的话,那么它将不会被建立

③. 编辑vsftpd的配置文件

1. 备份配置文件

cp vsftpd.conf vsftpd.conf.bak

2. vim /etc/vsftpd/vsftpd.conf

 否启用匿名用户
anonymous_enable=YES
#匿名用户根目录, 默认是/var/ftp
#anon_root=/ftp
local_enable=YES
#本地用户根目录
#local_root=/ftp
#匿名用户的权限
write_enable=NO
#上传权限
anon_upload_enable=NO
#创建文件夹
anon_mkdir_write_enable=NO
#如果设为YES,则允许匿名登入者有新增目录的权限,只有在write_enable=YES时,此项才有效当然,匿名用户必须要有对上层目录的写入权
anon_other_write_enable=YES
#表示用户可以浏览FTP目录和下载文件
anon_world_readable_only=NO
#设定禁止上传文件更改宿主
chown_uploads=NO
#设定上传后文件的权限
local_umask=
anon_umask=
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
#设定日志使用标准的记录格式
xferlog_std_format=YES
#设定支撑Vsftpd服务的宿主用户为手动建立的Vsftpd用户
nopriv_user=vsftpd
#主动模式
#connect_from_port_20=YES
#广告信息
dirmessage_enable=YES
ftpd_banner=Welcome to blah FTP service.
#禁止用户登出自己的FTP主目录
chroot_list_enable=NO
chroot_local_user=YES
#禁止用户登录ftp后使用ls -R命令递归查询
ls_recurse_enable=NO
#设定启用虚拟用户功能
guest_enable=YES
#指定虚拟用户的宿主用户
guest_username=virtualuser
#设定虚拟用户的权限符合他们的宿主用户
virtual_use_local_privs=YES
#设定PAM服务下Vsftpd的验证配置文件名。因此,PAM验证将参考/etc/pam.d/下的vsftpd文件配置
pam_service_name=vsftpd
#设定虚拟用户个人Vsftp的配置文件存放路径。也就是说,这个被指定的目录里,将存放每个Vsftp虚拟用户个性的配置文件,一个需要注意的地方就是这些配置文件名必须和虚拟
用户名相同。
user_config_dir=/etc/vsftpd/user_conf
## 这两行很重要!指定PAM配置文件为ftp.vu,并指定不同虚拟用户配置文件的存放路径
listen=YES
#pasv_min_port= #pasv_max_port=

vsftpd.conf

3.建立vsftpd的日志文件,并更该属主为vsftpd的服务宿主用户:

touch /var/log/vsftpd.log
chown vsftpd.vsftpd /var/log/vsftpd.log

4.建立虚拟用户配置文件存放路径:

mkdir /etc/vsftpd/user_conf/

④. 生成虚拟用户的数据库文件:

1. 先创建一个logins.txt,并在里面写入用户名及密码,注意,单数行为用户名,双数行为对应的密码:

vim /root/logins.txt
william
123456

2. 将logins.txt转换成db文件:

db_load -T -t hash -f /root/logins.txt /etc/vsftpd/vsftpd_login.db
chmod 600 /etc/vsftpd/vsftpd_login.db

⑤. 生成一个使用vsftpd_login.db数据文件的PAM认证文件。

vim /etc/pam.d/vsfptd
  auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login crypt=hash
  account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login crypt=hash
注意: 把原有各行均注释掉,然后加入上面两行:
注意: crypt=hash必须加上,否则依然会出priv_sock_get_result问题!
注意: 你的系统如果是64位, 为/lib64, 32位为/lib:

⑥. 创建共享目录

mkdir /var/ftp/sharepoint
给匿名用户sharepoint文件夹授权
setfacl -m u:ftp:rx /var/ftp/sharepoint
getfacl /var/ftp/upload/: 验证
说明: 匿名用户使用ftp系统用户权限, 此处控制了匿名用户对目录的权限

⑦. 创建虚拟用户的配置文件

cd /etc/vsftpd/user_conf

  • vim william

    local_root=/var/ftp
    write_enable=YES
    anon_world_readable_only=NO
    anon_upload_enable=YES
    anon_mkdir_write_enable=YES
    anon_other_write_enable=YES

  注意: 配置文件以虚拟用户的名字命名

⑧. 开启服务测试用户权限

service vsftpd restart

Vsftpd: 基于PAM认证的虚拟用户和匿名用户的更多相关文章

  1. centos6.5下vsftpd服务的安装及配置并通过pam认证实现虚拟用户文件共享

    FTP的全称是File Transfer Protocol(文件传输协议),就是专门用来传输文件的协议.它工作在OSI模型的第七层,即是应用层,使用TCP传输而不是UDP.这样FTP客户端和服务器建立 ...

  2. 实现基于pam认证的vsftpd

    1 需求 使用指定虚拟用户Allen与Barry登录ftp,认证的源是mysql服务器: Allen可以上传文件,Barry不可以上传文件: 2 环境 [root@centos7 ~]# cat /e ...

  3. Linux:FTP服务匿名用户,本地用户,虚拟用户配置

    匿名用户  FTP协议占用两个端口号: 21端口:命令控制,用于接收客户端执行的FTP命令. 20端口:数据传输,用于上传.下载文件数据. 实验:匿名访问,服务器192.168.10.10    客户 ...

  4. ftp的匿名用户的搭建

    在搭建之前需要server端安装vsftpd用yum装就好,客户端直接装ftp就ok yum装的vsftpd直接就有共享目录,在/var/ftp/pub 目录,看下目录,给他降权,将属主,属组改为ft ...

  5. 9、FTP封杀用户、限制传输速率、限制访问目录、为匿名用户提供下载资源

    一.封杀某些用户访问FTP服务器 例如  封杀 yanji [root@localhost root]#   vi   /etc/vsftpd.ftpusers     (用户控制配置文件,主要用于限 ...

  6. centos7下安装vsftpd与PAM虚拟用户

    Vsftp与PAM虚拟用户 使用yum 安装vsftp yum install vsftpd pam pam-* db4 db4-* 设置开机启动 chkconfig vsftpd on 创建一个保存 ...

  7. vsftpd基于pam_mysql的虚拟用户机制

    何为vsftpd? vsftpd:very secure ftp daemon 程序:/usr/sbin/vsftpd 配置文件:/etc/vsftpd/vsftpd.conf 其用户分为:匿名用户( ...

  8. Linux基础入门之vsFTP+MySQL/MariaDB认证实现虚拟用户配置详解

    https://www.dwhd.org/20150603_144841.html 摘要 VSFTP可以使用系统账户或者匿名账户登录,但是出于安全的考虑,通常建议使用vsftp虚拟账户来登录ftp服务 ...

  9. CentOS6.5下搭建ftp服务器(三种认证模式:匿名用户、本地用户、虚拟用户)

    CentOS 6.5下搭建ftp服务器 vsftpd(very secure ftp daemon,非常安全的FTP守护进程)是一款运行在Linux操作系统上的FTP服务程序,不仅完全开源而且免费,此 ...

随机推荐

  1. 8.在python中用data_only=True设置显示excel表格中公式的结果为None的解决方法

    在用python调用excel文件显示带公式的表格内容,有两种显示结果:第一种是直接显示表格中公式人内容:另一种是显示其表格中公式的结果. 显示第一种,可以这样输入代码: 显示第二种,可以这样输入代码 ...

  2. 《图解机器学习-杉山将著》读书笔记---CH1

    CH1 什么是机器学习 重点提炼 机器学习的种类: 常分为:监督学习.无监督学习.强化学习等 监督学习是学生从老师那获得知识,老师提供对错指示 无监督学习是在没有老师的情况下,学生自习 强化学习是在没 ...

  3. 【记】本地远程连接VM VirtualBox中虚拟机Centos6的数据库MySQL

    目标:远程连接虚拟机中的MySQL 效果图如下 1. VBox设置好端口转发 具体步骤请看 VM VirtualBox 网络地址转换(NAT)使用详解 2. MySQL授权 如果这时我们就去远程连接M ...

  4. 搞定SpringBoot多数据源(1):多套源策略

    目录 1. 引言 2. 运行环境 3. 多套数据源 3.1 搭建 Spring Boot 工程 3.1.1 初始化 Spring Boot 工程 3.1.2 添加 MyBatis Plus 依赖 3. ...

  5. SpringBoot2 整合Nacos组件,环境搭建和入门案例详解

    本文源码:GitHub·点这里 || GitEE·点这里 一.Nacos基础简介 1.概念简介 Nacos 是构建以"服务"为中心的现代应用架构,如微服务范式.云原生范式等服务基础 ...

  6. Mybatis Plugin 以及Druid Filer 改写SQL

    背景 工作中偶尔会碰到需要统一修改SQL的情况,例如有以下表结构: CREATE TABLE `test_user` ( `id` int(11) NOT NULL AUTO_INCREMENT, ` ...

  7. javaweb-codereview 学习记录-3

    Class类加载流程 实际上就是ClassLoader将会调用loadclass来尝试加载类,首先将会在jvm中尝试加载我们想要加载的类,如果jvm中没有的话,将调用自身的findclass,此时要是 ...

  8. Browser Security-基本概念

    URL格式: scheme://[login[:password]@](host_name|host_address)[:port][/hierarchical/path/to/resource[?s ...

  9. airtest启用本地python环境的方法

    实现目标,air如果想引用第三方python库,则需要在本地python欢迎执行运行 1.打开设置,红色箭头处,选择本地python路径 2.安装air的两个核心库airtest和pocoui 安装方 ...

  10. 光流法draw_flow()函数报错

    光流法draw_flow()函数报错 import cv2 from scipy import * def draw_flow(im, flow, step=16): ""&quo ...