码迷,mamicode.com
首页 > 其他好文 > 详细

安装并配置基于虚拟用户的vsftpd

时间:2016-01-07 18:28:44      阅读:157      评论:0      收藏:0      [点我收藏+]

标签:用户

vsftpd用户分为:匿名用户、本地用户、虚拟用户

 

虚拟用户和本地用户没有关系,但是所有虚拟用户会被映射为一个指定的系统帐号,访问共享位置就是这系统帐号的家目录。

各虚拟用户可以被赋予不同的访问权限:

      通过匿名用户权限控制参数进行指定;

虚拟用户帐号的存储方式

      文件,编辑文本文件来存储

              奇数行为用户名,奇数行+1为其对应密码。

              此文件需要被编码为hash格式,这个方式非常费劲,添加一

              次就需要重新hash加密一次

      关系型数据库的表中:

              即时查询数据库完成用户认证:

                 mysql库,pam要依赖于pam-mysql模块

1 安装软件

安装mysql,vsftpd,pam_mysql

技术分享 

pam_mysql属于epel的,得安装epel:yum install epel-release

打开它的readme

里面示例:

技术分享 

认证方式   可选的   模块认证    帐号密码

红色字体是远程主机上执行的,黑色字体是在本地执行的:

2 配置数据库

在远程主机上安装mariadb:

远程主机上执行

create database vsftpd;

use vsftpd;

grant select on vsftpd.* TO vsftpd@‘192.168.%.%‘ identified by ‘vsftpd‘;

flush privileges;

技术分享 

 

远程连接mariadb的主机

mysql -uvsftpd -h192.168.1.108 -p

技术分享

但是centos7里面不是iptables了,所以需要关闭的是firewalld

systemctl stop firewalld

或者

service firewalld stop

技术分享 

 

本地查看下数据库。

技术分享

远程主机建立表

create table user( id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,name VARCHAR(50) BINARY NOT NULL, password CHAR(48) BINARY NOT NULL);

技术分享 

 

在本地端可以查到

desc user;

技术分享

 

数据库内建函数password(‘xxx’)可以将任意数据变成48位的

select password(‘abc’);

技术分享

 

insert into user (name,password) values(‘tom‘,password(‘magedu‘)),(‘gh‘,password(‘magedu‘));

向远程主机的vsftpd表中插入数据

技术分享

 

在本地查询

技术分享

3 配置pam

随便在/etc/pam.d里建立个文件

技术分享

在里面输入内容如下

技术分享 

auth,认证

account,验证用户有效与否

required ,可选方式

pam_mysql.so ,模块认证,相对路径,/lib64

user=vsftpd,mysql连接用户

passwd=vsftpd ,mysql连接密码

host=192.168.1.108 ,mysql连接地址

db=vsftpd ,数据库名字

table=user ,表名字

usercolumn=name ,用户列名

passwdcolumn=password ,密码列名

crypt=0,加密方式

技术分享

4 建立账号

需要在本地主机上建立一个帐号用来登录

useradd –s /sbin/nologin –d /var/ftproot vuser

技术分享 

chmod go+rx /var/ftproot

技术分享

请确保/etc/vsftpd.conf中已经启用了以下选项
anonymous_enable=YES   //匿名用户
local_enable=YES   //本地用户
write_enable=YES   //本地用户写入
anon_upload_enable=NO   //匿名上传
anon_mkdir_write_enable=NO   //匿名建立文件夹
chroot_local_user=YES    //是否将用户限制在主目录,yes是

然后添加以下项
guest_enable=YES
guest_username=vuser

并确保pam_service_name选项的值如下所示
pam_service_name=vsftpd.mysql

技术分享 

用tail /var/log/secure里显示最近登录系统的日志

技术分享 

 

现在几个用户都是相同权限的,下面要赋予不同的权限。

 

5 配置不同用户的访问权限

在/etc/vsftpd/vsftpd.conf

添加user_config_dir=/etc/vsftpd/vuser_config

技术分享

然后在指定位置建立文件夹vuser,并针对每个用户建立一个文件

技术分享

里面的内容如下

anon_upload_enable=YES
anon_mkdir_write_enable=yes
anon_other_write_enable=yes

技术分享

测试连接一下,成功

技术分享

-------------------------------------------------------------------------

除了ftp,下列也可以使用

axel,lftpget,wget,curl

 

ftp协议是明文

ftps:SSL,认证过程是安全的

sftp:SSH,

安装并配置基于虚拟用户的vsftpd

标签:用户

原文地址:http://korekara.blog.51cto.com/8206017/1732612

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!