目录

环境说明
效果说明及截图
①. 安装组件
②. 系统账户建立
③. 编辑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. Go中的Package和Module分析

    Package 所谓package(包)其实就是代码的一种组织管理方式,代码多了就需要放入文件,文件多了就需要归类放入文件夹,就好比我们在给电脑装软件时会进行归类安装,其实也是有意无意对电脑软件安装的 ...

  2. 曹工说Spring Boot源码(9)-- Spring解析xml文件,到底从中得到了什么(context命名空间上)

    写在前面的话 相关背景及资源: 曹工说Spring Boot源码(1)-- Bean Definition到底是什么,附spring思维导图分享 曹工说Spring Boot源码(2)-- Bean ...

  3. STM32串口遇到的一个问题

    做HLW8032电能表项目中关于USART使用DMA接收定长数据的问题 1:由于HLW8032芯片一上电,芯片就会通过串口每隔50ms向STM32发送24字节的数据,且我不能通过STM32控制HLW8 ...

  4. Nest.js你学不会系列-初识Nest

    前言 最近在学习研究 Nest 框架,但是在学习过程中除了参考翻阅官方文档外国内几乎没有多少资料能系统的讲解 Nest 的相关内容,所以打算想通过我自己学习的角度讲解下 Nest 框架,不知道能坚持多 ...

  5. ORM基础1

    1.增删改查 .models.类.object.all() 获取所有对象->select * from 表 2.models.类.object.get(id=1) 获取id为1的对象->s ...

  6. 1.用户交互Scanner

    Java流程控制 一:用户交互Scanner Scanner对象: 之前我们学的基本语法中我们并没有实现程序和人的交互,但是Java给我们提供了这样一个工具类,我们可以获取用户的输入.java.uti ...

  7. es8对object快速遍历的方法

    let grade = { 'lilei' : 96, 'han' : 99 } //遍历keys console.log(Object.keys(grade)) console.log(Object ...

  8. [bzoj4567] [loj#2012] [SCOI2016] 背单词

    Description \(Lweb\) 面对如山的英语单词,陷入了深深的沉思,「我怎么样才能快点学完,然后去玩三国杀呢?」.这时候睿智的凤老师从远处飘来,他送给了 \(Lweb\) 一本计划册和一大 ...

  9. [bzoj4444] [loj#2007] [洛谷P4155] [Scoi2015] 国旗计划

    Description \(A\) 国正在开展一项伟大的计划--国旗计划.这项计划的内容是边防战士手举国旗环绕边境线奔袭一圈.这项计划需要多名边防战士以接力的形式共同完成,为此,国土安全局已经挑选了 ...

  10. 百度搜索关键词联想API JSONP使用实例

    许多搜索引擎都提供了关键词联想api,且大多数都是jsonp. Jsonp(JSON with Padding) 是 json 的一种"使用模式",可以让网页从别的域名(网站)那获 ...