centos7 系统

安装包

yum -y install mariadb vsftpd openssl-devel  mysql-devel  pam-devel

yum -y groupinstall  "Development Tools"  "Server PlatformDevelopment"

启动mariadb 和设置root密码(略)

创建vsftp数据库和用户

CREATE DATABASE vsftpd;

grant select on vsftpd.* to vsftpd@'%' identified by '123456';

use vsftpd;

创建一个auth表

CREATE TABLE auth  (id  INT  NOT NULL AUTO_INCREMENT  PRIMARY KEY ,name  VARCHAR(30) NOT NULL , password  CHAR(48) NOT NULL);

插入2个测试的用户名和密码
INSERT INTO auth (name,password) VALUES ("test1","123456"),("test2","123456");

编译安装pam_mysql

下载源码包安装,地址http://pam-mysql.sourceforge.net/

tar -xf pam_mysql-0.7RC1.tar.gz
cd pam_mysql-0.7RC1
./configure –with-openssl -with-pam-mods-dir=/usr/lib64/security
make && make install

编辑pam验证,将下面的信息改成自己的

cp /usr/lib64/securi/pam_mysql.so  /usr/lib64/security/pam_mysql.so

[root@controller03 ]# cat /etc/pam.d/vsftpd.mariadb
auth required /usr/lib64/security/pam_mysql.so user=vsftp passwd=123456 host=172.16.20.3 db=vsftpd table=auth usercolumn=name passwdcolumn=password crypt=0
account required /usr/lib64/security/pam_mysql.so user=vsftp passwd=123456 host=172.16.20.3 db=vsftpd table=auth usercolumn=name passwdcolumn=password crypt=0

指定pam_mysql.so的路径,user、passwd为授权的用户,host为连接的数据库主机,usercolumn/passwdcolumn为定义的字段名,crypt=N,(N=0:密码明文发送;N=1:使用crypt函数加密;N=2:使用mysql的password()函数;N=3:使用md5加密;N=4:使用sha1加密)。

配置vsftpd文件,提示最好在文本文件中复制在粘贴,否则可能vsftpd无法启动,就是编码问题

[root@controller03 test2]# cat /etc/vsftpd/vsftpd.conf  
anonymous_enable=NO  #禁止匿名登录
local_enable=YES
write_enable=YES
local_umask=022
anon_upload_enable=NO
anon_mkdir_write_enable=NO
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
chroot_local_user=YES
listen=YES
pam_service_name=vsftpd.mariadb  #改成上面定义的pam文件
userlist_enable=YES
tcp_wrappers=YES
guest_enable=YES           #启用虚拟用户
guest_username=vftpuser  #真实用户
virtual_use_local_privs=YES   #NO时,虚拟用户和匿名用户有相同的权限,默认是NO,YES就是具有guest_username的用户权限
user_config_dir=/etc/vsftpd/vuser_conf

定义用户文件,每一个用户一个文件

cat /etc/vsftpd/vuser_conf/test2
local_root=/home/test2  #定义自己家目录
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

创建系统用户vftpuser

groupadd -g 1501 vftpuser && useradd -g vftpuser -u 1501 -s /sbin/nologin -d /home/vftpuser vftpuser

创建用户目录

mkdir /home/test2

mkdir /home/test3

chown -R root:root *

[root@controller03 home]# ll
total 0
drwxr-xr-x 3 root root 18 Dec 4 14:35 test2
drwxr-xr-x 2 root root 6 Dec 4 14:31 test3
drwxr-xr-x 3 root root 88 Dec 4 14:21 vftpuser

启动vsftp服务systemctl  restart  vsftpd.service

cd到test2目录,现在还是无法针对这个test2的目录进行操作,在建立一个文件夹soft,赋予chown vftpuser:vftpuser既可,然后登陆ftp就可以在这个目录下进行操作了

遇到的问题:

登陆ftp用户名和密码没有错误就是登陆不上去。

[root@controller01 home]# ll
total 0
drwxr-xr-x 2 vftpuser vftpuser 6 Dec 5 16:02 test1
drwx------ 2 root     root     76 Dec  5 10:08 vftpuser

原因就上面的家目录属组有问题不是root而是vftpuser用户,这个用户是system用户,用来映射虚拟用户的

问题1

tail -f /var/log/secure

Dec 5 16:39:25 controller01 vsftpd[9484]: pam_mysql - SELECT returned no result.
Dec 5 16:39:25 controller01 vsftpd[9484]: pam_mysql - SELECT returned no result.

登陆ftp页面后就会提示这个,用户名密码没有验证成功。

vsftp 虚拟用户+MySQL认证独立家目录的更多相关文章

  1. vsftp虚拟用户配置

    找了很久,终于找到像样一点的文章,很详细,参数方面懂英文基本能看懂,一个教程是否有用,关键在于细节.错了一点点就不能配下去了. ------------------------------------ ...

  2. vsftp 虚拟用户测试

    1.创建用于进行FTP验证的帐号密码数据库文件,单数行为账户名,偶数行为密码.[root@rhel1 vsftpd]# vi /etc/vsftpd/vuser.listuser1123456user ...

  3. vsftp 虚拟用户高级设置(转载)

    发布:xiaokk   来源:net     [大 中 小] vsftp 虚拟用户高级设置  本文转自:http://www.jbxue.com/article/1724.html 1.安装所需软件包 ...

  4. vsftp虚拟用户方式访问

    需求:外部人员需要对公司服务器上某个文件夹内容进行读写操作 文件目录信息:/opt/abc drwxr-xr-x 9 www  www       4096 12月  4 13:02 abc   #注 ...

  5. vsftp虚拟用户登录配置详解

    一.安装:1.安装Vsftpd服务:# yum install vsftpd 2.安装DB4部件包:这里要特别安装一个db4的包,用来支持文件数据库.# yum install db4-utils 二 ...

  6. CentOS 7搭建vsftp(虚拟用户方式登录)

    说明: vsftpd的版本:vsftpd-3.0.2-22.el7.x86_64 ftp 根目录 : /data/ftp ftp 配置文件目录:/etc/vsftpd ftp 虚拟用户权限配置文件目录 ...

  7. FTP(虚拟用户,并且每个虚拟用户可以具有独立的属性配置)

               VSFTP是一个基于GPL发布的类Unix系统上使用的FTP服务器软件,它的全称是Very Secure FTP 首先安装   主配置文件:/etc/vsftpd/vsftpd. ...

  8. vsftp 虚拟用户

    首先安装vsftp db-4wiki mkdir -p /opt/ftp 创建用户 sudo useradd virtual -d /opt/ftp -s /bin/false sudo chown ...

  9. 《自动共享LDAP用户并且访问其家目录》RHEL6

    实验的目的: 实现ldap服务器上的ldap用户被客户端访问,自动挂载到客户端,并且可以访问ldap用户的家目录. 服务端: 1.只需要配置文件: Iptables –F       关闭selinu ...

随机推荐

  1. 【译】第四篇 Integration Services:增量加载-Updating Rows

    本篇文章是Integration Services系列的第四篇,详细内容请参考原文. 回顾增量加载记住,在SSIS增量加载有三个使用案例:1.New rows-add rows to the dest ...

  2. Treats for the Cows 区间DP POJ 3186

    题目来源:http://poj.org/problem?id=3186 (http://www.fjutacm.com/Problem.jsp?pid=1389) /** 题目意思: 约翰经常给产奶量 ...

  3. 【FCS NOI2018】福建省冬摸鱼笔记 day5

    第五天,也是讲课的最后一天. 数据结构专题,讲师:杨志灿 他的blog我似乎找不到了……以前肯定是在百度博客里面.但是现在百度博客消失了. PPT做的很有感觉,说了很多实用的技巧. 我觉得其实是收获最 ...

  4. 2 - django-urls路由系统基本使用

    目录 1 路由系统(urls控制) 1.1 正则字符串参数 1.2 url的分组 1.2.1 无名分组 1.2.2 有名分组 1.3 URLconf 在什么上查找 1.4 include(路由分发) ...

  5. MongoDB安全:创建角色(User-Defined Roles)

    MongoDB已经定义了一些内建角色,同时还提供了用户自定义角色的功能,以满足用户千差万别的需求. 官文User-Defined Roles中对其有简略介绍,但要熟悉怎么创建角色,还需要了解下面的这些 ...

  6. python网络编程-socket“粘包”(小数据发送问题)

    一:什么是粘包 “粘包”, 即服务器端你调用时send 2次,但你send调用时,数据其实并没有立刻被发送给客户端,而是放到了系统的socket发送缓冲区里,等缓冲区满了.或者数据等待超时了,数据才会 ...

  7. java基础66 JavaScript中的事件、localtion对象、screen对象(网页知识)

    1.JavaScript中的事件注册 1.1.事件的注册方式 方式1:直接在html元素上注册 <body onLoad="ready()"></body > ...

  8. Oracle 函数 “申请通过后,将该表中循环遍历到的所有内容插到另一个表中”

    create or replace function mcode_apply_insert_material(p_mca_no VARCHAR2, p_action VARCHAR2, p_wf_no ...

  9. Effective API Design

    Effective API Design */--> div.org-src-container { font-size: 85%; font-family: monospace; } Tabl ...

  10. ***四种参数传递的形式——URL,超链接,js,form表单

    什么时候用GET,  查,删 什么时候用POST,增,改  (特列:登陆用Post,因为不能让用户名和密码显示在URL上) 4种get传参方式 <html xmlns="http:// ...