前几篇介绍了基础,这篇将具体实现几个案例

实现基于文件验证的vsftpd虚拟用户,每个用户独立一个文件夹

1、创建用户数据库文件

vim /etc/vsftpd/vusers.txt
qq
centos
momo
centos

备注:文件内容格式为奇数行为用户名,偶数行为密码

2、设置权限与编译此文件

cd /etc/vsftpd/
db_load -T -t hash -f vusers.txt vusers.db ##编译文件
chmod 600 vusers.db

备注:修改权限是为了安全

3、创建linux用户和ftp目录(这个账号将来虚拟账号映射成它)

useradd -s /sbin/nologin vftpuser
chmod 555 /home/vftpuser/ ###把用户家目录的写权限去掉

备注:映射账号对根要没有写权限

mkdir upload  ##创建上传用的文件夹
chown vftpuser upload/

备注:把这个文件夹的所属人改为vftpuser用户,次用户虽然对 /home/vftpuser/ 就也是根,没有写权限,但是对根下的目录有写权限。

把匿名写权限打开

4、修改pam配置文件

vim /etc/pam.d/vusers.db  #这个名字叫什么都可

auth required pam_userdb.so db=/etc/vsftpd/vusers  

注意:这个vusers名字一定要和第二步中创建的xxxx.db名字一样

account required pam_userdb.so db=/etc/vsftpd/vusers

5、让主配置文件知道你要用自己修改的pam模块

备注:放在vusers.txt里面的就是合法用户,可以登陆

6、把所有系统账号映射成我们创建的vftpuser账号,并关闭linux系统账号登陆

vim /etc/vsftpd/vsftpd.conf

guest_enable=YES
guest_username=vftpuser

7、虚拟用户建立独立的配置文件

vim /etc/vsftpd/vsftpd.conf

user_config_dir=/etc/vsftpd/vftpuser.d/

创建上面这个文件夹创建出来

mkdir /etc/vsftpd/vftpuser.d/

在这个文件夹目录下创建针对虚拟用户的配置

[root@centos7_77 vftpuser.d]# cat > qq
anon_upload_enable=YES
anon_mkdir_write_enable=YES
备注:意思是说虚拟用户qq有匿名写权限

8、让两个虚拟用户进来时看到的文件夹不一样

vim /etc/vsftpd/vftpuser.d/qq

local_root=/data/qq

备注:要是这个文件夹不存在就创建

mkdir /data/qq

备注:在qq目录下创建个文件用于测试

touch /data/qq/qq.txt

重启,测试

备注:想要增加用户,在vusers.txt文件中写入,再生成db文件

实现:基于MYSQL验证的vsftpd虚拟用户

说明:本实验在两台CentOS主机上实现,一台做为FTP服务器,一台做数据库服务器

一、安装所需要包和包组

在数据库服务器上安装包:

Centos7:在数据库服务器上安装

yum –y install mariadb-server
systemctl start mariadb.service
systemctl enable mariadb

Centos6:在数据库服务器上安装

yum –y install mysql-server

在FTP服务器上安装vsftpd和pam_mysql包

centos6:pam_mysql由epel6的源中提供

yum install vsftpd pam_mysql

centos7:无对应rpm包,需手动编译安装

yum -y groupinstall "Development Tools"

yum -y install mariadb-devel pam-devel vsftpd

下载pam_mysql-0.7RC1.tar.gz

https://sourceforge.net/projects/pam-mysql/

1、解压缩pam模块

[root@centos7_77 ~]# tar xvf pam_mysql-0.7RC1.tar.gz

cd pam_mysql-0.7RC1/

2、编译

[root@centos7_77 pam_mysql-0.7RC1]# ./configure --with-pam-mods-dir=/lib64/security --with-mysql=/usr --with-pam=/usr

备注:这样需要注意指定的位置,mysql

现在还没有pam_mysql.so

开始make

[root@centos7_77 pam_mysql-0.7RC1]# make && make install

3、创建数据库和表

1)创建ftpdb数据库

MariaDB [(none)]> create database ftpdb;

2)授权一个用户可以连这个数据库(有读权限就行)

MariaDB [(none)]> grant select on ftpdb.* to vsftpd@'localhost' identified by 'centos';

3)创建一个表

MariaDB [ftpdb]> create table users (id INT AUTO_INCREMENT NOT NULL PRIMARY KEY, name CHAR(50) BINARY NOT NULL, password CHAR(48) BINARY NOT NULL );

4)往表里增加虚拟用户

MariaDB [ftpdb]> INSERT INTO users(name,password) values('gg',password('centos'));

MariaDB [ftpdb]> INSERT INTO users(name,password) values('mm',password('centos'));

3、准备一个pam配置文件(在FTP服务器上建立pam认证所需文件)

cd /etc/pam.d/
vim vsftpd.mysql auth required pam_mysql.so user=vsftpd passwd=centos host=localhost db=ftpdb table=users usercolumn=name passwdcolumn=password
crypt=2
account required pam_mysql.so user=vsftpd passwd=centos host=localhost db=ftpdb table=users usercolumn=name passwdcolumn=passw
ord crypt=2

备注:

配置字段说明

• auth 表示认证

• account 验证账号密码正常使用

• required 表示认证要通过

• pam_mysql.so模块是默认的相对路径,是相对/lib64/security/路径而言,也可以写绝

对路径;后面为给此模块传递的参数

• user=vsftpd为登录mysql的用户

• passwd=magedu 登录mysql的的密码

• host=mysqlserver mysql服务器的主机名或ip地址

• db=vsftpd 指定连接msyql的数据库名称

• table=users 指定连接数据库中的表名

• usercolumn=name 当做用户名的字段

• passwdcolumn=password 当做用户名字段的密码

• crypt=2 密码的加密方式为mysql password()函数加密

4、让ftp服务器知道调用我们配置的pam模块配置文件

vim /etc/vsftpd/vsftpd.conf

5、映射为系统账号vftpuser

vim /etc/vsftpd/vsftpd.conf

guest_enable=YES
guest_username=vftpuser

备注:意思说,启动guest用户,系统用户映射为guest用户,而guest用户是vftpuser,

别忘了去掉此用户的家目录的读W权限

6、让登陆的账号权限不一样(针对每个用户都有自己的配置文件)

指定用户存放配置的文件夹

vim /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/vftpuser.d
cd /etc/vsftpd/vftpuser.d
[root@centos7_77 vftpuser.d]# cat > mm
local_root=/data/mm
cat > gg
local_root=/data/gg

备注:要想gg mm 充当虚拟用户的根必须没有写权限

[root@centos7_77 data]# chmod a=rx mm
[root@centos7_77 data]# chmod a=rx gg
再gg、mm目录下创建个文件好测试
[root@centos7_77 gg]# touch gg.txt
[root@centos7_77 mm]# touch mm.txt

重启

测试

备注:要想让gg用户有写权限,在/etc/vsftpd/vftpuser.d/gg文件中加入

anon_upload_enable=YES

anon_mkdir_write_enable=YES

还要对/data/gg这个目录要有写权限

setfacl -m u:vftpuser:rwx /data/gg

FTP服务-实现vsftpd虚拟用户的更多相关文章

  1. CentOS7 FTP服务搭建(虚拟用户访问FTP服务)

    概述 最近在搞Oracle在Linux系统下集群,针对Linux系统,笔人也是一片空白.Liunx外部文件的传输,避免不了使用FTP服务,所以现在就整理下,CentOS7环境下,FTP服务的搭建.FT ...

  2. vsftpd虚拟用户【公司系统部分享】

    一,安装相关工具包 #yum -y install pam vsftpd db4 db4-utils -- pam 是用来提供身份验证的 -- vsftpd 是ftp服务的主程序 -- db4支持文件 ...

  3. 烂泥:ubuntu下vsftpd虚拟用户配置

    本文由ilanniweb提供友情赞助,首发于烂泥行天下 想要获得更多的文章,可以关注我微信ilanniweb. 以前搭建vsftpd都是在centos下,本以为在ubuntu按照以前的步骤搭建即可.可 ...

  4. ubuntu server vsftpd 虚拟用户及目录

    ubuntu server vsftpd 虚拟用户及目录 一:需求场景: 在ubuntu server上开设一个虚拟网站,在网站目录建立一个ftp目录,允许用户通过ftp上传网站文件到网站目录: 同时 ...

  5. Ubuntu 12.04 LTS为例演示vsftpd虚拟用户 的配置

    vsftpd虚拟用户   2012-05-19 15:46:59|  分类: GNU/Linux |  标签:ubuntu  vsftpd  ftp  虚拟用户  |举报|字号 订阅 我们登录FTP有 ...

  6. vsftpd 虚拟用户限定在虚拟用户目录

    1.安装vsftpd yum -y install pam pam-devel db4 db4-tcl vsftpd 2.更名默认配置文件,以便恢复 cp /etc/vsftpd/vsftpd.con ...

  7. 实现验证的vsftpd虚拟用户

    实现基于文件验证的vsftpd虚拟用户--(一台) 一.创建用户数据库文件 vim /etc/vsftpd/vuser cd /etc/vsftpd/ db_load -T -t hash -f vu ...

  8. Vsftpd虚拟用户登陆配置(Centos7)

    1 安装Vsftpd服务 # yum install vsftpd -y vsftp虚拟用户是为了保证FTP服务器的安全性,由vsftpd服务器提供的非系统用户账号, 相对于FTP的本地用户来说,虚拟 ...

  9. vsftpd虚拟用户创建实例(转载)

    vsftpd虚拟用户创建实例 发布:theboy   来源:net     [大 中 小] vsftpd虚拟用户创建实例,有需要的朋友可以参考下.  vsftpd虚拟用户创建实例,有需要的朋友可以参考 ...

随机推荐

  1. JSONPath中的表达式

    在JsonPath中使用表达式是一个非常好的功能,可以使用简洁和复杂的JsonPath.JsonPath中的表达式基本上是评估为布尔值的代码片段.基于结果,仅选择满足标准的节点.让我们看一下它的更多内 ...

  2. Swing 100行画图示例

    关键内容,可以自行扩展 package main; import java.awt.BasicStroke; import java.awt.BorderLayout; import java.awt ...

  3. Codeforces 183C(有向图上的环长度)

    因为公用一个系统所以大家求gcd:衡量各点之间的拓扑位置,如果到达同一点有不同的长度则取gcd. #include <cstdio> #include <cstring> #i ...

  4. Canada Cup 2016 C. Hidden Word 构造模拟题

    http://codeforces.com/contest/725/problem/C Each English letter occurs at least once in s. 注意到题目有这样一 ...

  5. Kaggle八门神器(一):竞赛神器之XGBoost介绍

    Xgboost为一个十分有效的机器学习模型,在各种竞赛中均可以看到它的身影,同时Xgboost在工业届也有着广泛的应用,本文以Titanic数据集为研究对象,简单地探究Xgboost模型建模过程,同时 ...

  6. abp(net core)+easyui+efcore仓储系统——ABP总体介绍(一)

    在前面我已经介绍了ASP.NET MVC.ASP.NET Razor.WEBAPI等技术.我准备通过一个实践项目来整体应用一下之前介绍的技术.本系列是介绍基于ABP+EasyUI的Web开发框架的形成 ...

  7. 发现了一个entity framework的BUG

    小弟学浅才疏可能是小题大做,但遇上了并且让我麻烦了一阵,就值得记下来 BUG的过程就是我在建立实体模型的时候 命名了一个叫system的实体模型 导致了所有生成类中 引用using system失败

  8. 关于vue-resource 转变成axios的过程

    在做东钿贷后系统的时候,我选择了vue-resource这个插件作为与服务器沟通工具,但是听说前端同行说vuejs2.0已经不在维护vue-resource了,vuejs2.0 已经使用了axios了 ...

  9. [拾零]C语言的数组指针

    为了强化记忆,从而写笔记保留. 数组指针,顾名思义,是在说一个指针,这个指针是指向数组的. 区别于指针数组 int* p[5] = NULL; //指针数组 基类型 int* int (*p)[5] ...

  10. jQuery toggle 使用

    jQuery 中 toggle 作用 切换元素的显示与隐藏状态 如果被选元素可见,则隐藏这些元素,如果被选元素隐藏,则显示这些元素. <body> <div class=" ...