vsftp 虚拟用户+MySQL认证独立家目录

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值