博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ftp 主目录 mysql_vsftp 虚拟用户+MySQL认证独立家目录
阅读量:6655 次
发布时间:2019-06-25

本文共 3131 字,大约阅读时间需要 10 分钟。

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页面后就会提示这个,用户名密码没有验证成功。

来源:https://www.cnblogs.com/menkeyi/p/7977244.html

你可能感兴趣的文章
好桌道
查看>>
pcAnywhere远程控制
查看>>
codeforce 285 div2 d 题解
查看>>
多线程之ExecutorService
查看>>
SDL2 自己画按钮
查看>>
jQuery国际化插件 实例用法解析
查看>>
使用nexus搭建maven私服
查看>>
itoa atoi
查看>>
JavaScript自适应调整文字大小
查看>>
SugarCRM服务概要
查看>>
class中指向Data Members的指针
查看>>
交叉连接,内连接,左连接,右连接的快速理解
查看>>
在mac下设置环境变量
查看>>
机顶盒有关获取焦点触发点击事件
查看>>
DevExpress VCL v16.1.3发布
查看>>
linux配置java环境变量
查看>>
2012年度FusionCharts图表控件最受欢迎文章精选(上)
查看>>
jquery-mobile 页面的两种写法
查看>>
第一章、主线程与子线程
查看>>
Jenkins入门系列之——01第一章 Jenkins是什么?
查看>>