在一些情况下,想要访问ftp的时候,不用系统账号,希望针对ftp服务,创建相对应的虚拟账号来访问ftp响应的资源
虽然都是虚拟账户,就是ftp虚拟用户,去访问ftp文件的时候,对应的权限,于其他 的虚拟用户访问的权限各不相同,如果都一样,就用不着使用虚拟用户了,就拿匿名账号或者拿单一账号,大家都用一个账号链接
希望不同的人用不同的账号登录,而且访问的ftp资源也不一样,或者权限也不一样,可以通过虚拟账号的方式来实现
存放用户数据可以存放在文件里
第一行用户,下一行对应自己的口令,基数行是用户名,偶数行是对应的口令,但是是个文本文件,是直接存放虚拟用户,
需要用一个专门的数据库来存放信息,将来ftp服务器可以从这个特定格式的文件去读取用户信息
还有一种方式是基于数据库,把用户名和口令放到数据库的表里去
来结合我们系统,要配置一个专门的系统用户,这个系统用户是(当一个服务要去访问具体资源,如httpd,mysql),通常都是有一个身份来运行的,比如httpd服务是以appache来运行的,apache身份来运行的时候,要想访问具体目录下的资源,需要给apache账号权限,不给权限就访问不了
ftp服务进行访问的时候,这些虚拟账号,最终都要访问磁盘上的文件,因此就需要把这些虚拟账号映射成一个专门的系统账号,将来这些ftp的虚拟账号访问的时候就是用映射成这个系统账号
默认你系统账号设置的家目录就是将作为这个虚拟用户访问的默认路径
需要调用pam模块,还要设置调用的pam模块信息,指定虚拟用户数据文件路径,但是这个文件名不需要跟db后缀
此模块是验证一个用户名和口令对,来存放一个叫伯克利的db数据库里
还需要在vsftpd加下配置,告诉要使用pam模块
想要wang和mage用户各自访问的权限不一样
各自创建对应的配置文件
local_root,虚拟账户登录进来访问的家目录
换家目录的语法就是local_root
先看基于文件的,恢复
建立一个用户列表
转换成专门的数据库文件
修改权限,安全一点
**因为是伯克利数据库文件,想要往里面加东西不太好加,就需要把原来文件删除了,所以用数据库还是方便一点
针对三个虚拟用户,创建一个操作系统账号,让三个账号映射成一个系统账号,才能访问文件系统
-r代表系统账号,-d指定家目录,-s shell类型 **
默认不创建家目录,需要-m
有写权限会导致用户登录不进去,需要去掉
可以把三个账号映射成一个操作系统的vuser账号
如果希望用户想往里面写东西的话,可以创建一个子文件夹
这个文件表示通过pam模块,数据库。db这个格式来建立验证的
虽然文件在这,但是vsftp服务器并不知道自己配置了pam模块配置文件
就需要在服务配置里加上
pam模块修改名字
还要增加一个选项需要把虚拟用户映射出系统账号
还需要建立每个虚拟用户要加你不同的权限配置文件
还需要主配置文件加一个记录
表示三个不同的虚拟用户各自的访问权限设置是放在这个目录下的
接下来针对三个用户创建不同权限,需要和你的虚拟用户同名
1允许上传
2允许建文件夹
3允许删除
就算加上权限也不能对跟目录写,因为没有权限
先试用ftpuser1来访问,因为整个文件夹没有写权限,即使刚才配置里给 了可写,也写不了
设置acl权限
就是上传成功了
其他用户由于没有设置,看看是否能上传东西
也需要创建下面的文件夹
但是希望不同的虚拟用户访问不同的文件夹
ftpuser2访问下面的文件夹
再试试登录ftpuser2
还没有加写权限,还不能上传数据
但是由于这个跟目录没有写权限,还需要设置权限
现在就可以上传数据了
下面针对mysql数据库,把虚拟账号放到数据库里,但是希望ftp去访问数据库信息,就需要专门的模块
这个模块是个epel源
在7上取消了这个yum源,只能自己编译 了
readme告诉你这个模块怎么使用
类似格式
用户名哪个表放哪个字段
mysql的password函数可以对字符串进行加密处理
编译安装需要安装包组
先编译pam模块
一般pam模块放在lib64/security
有了pam-mysql
接下来只要配置相关数据库对应的一些信息
创建一个数据库,创建一个表,表里需要放用户名密码之类的
有两个用户,这样的话数据库就创建好了
现在就可以指定系统用户
ftp服务连接数据库还需要一个mysql的用户
测试一下是否能链接
需要pam配置文件写清楚,到底以什么身份链接
pam模块配置文件搞定
现在修改ftp配置文件去
修改下文件用户名名字
试试ftp1用户能否上传
试试ftp2
这就是虚拟用户实现
这个工具可以发起并发链接
可以发起并发同时下载