xuke123 发表于 2018-10-6 13:38:48

vsftpd基于mysql实现用户认证

  一、演示环境:
  IP地址
  操作系统
  服务器角色
  192.168.1.144
  CentOS   6.9
  vsftpd服务器
  192.168.1.145
  CentOS   6.9
  mysql服务器
  二、安装前准备:
  1、服务器时间校对
  2、配置epel源
  三、mysql服务器所需执行的操作:
  1、安装软件包:# yum -y install mysql-server mysql-devel ftp
  2、启动mysql,检查3306号端口是否被监听:# service mysqld start# ss -tnlp | grep :3306
  3、初始化mysql:# mysql_secure_installation   //设置root用户密码为123456
  4、创建数据库、表,并授权远程用户登录:
  # mysql -uroot -p
  mysql> create database ftp;

  mysql> grant select on ftp.* to ftpuser@'192.168.1.144'>  mysql> flush privileges;
  mysql> use ftp;
  mysql> create table user(id int unsigned auto_increment not null primary key,name varchar(20) binary not null,password char(48) binary not null);
  mysql> desc user;

  5、添加FTP虚拟用户marion和keyso:
  mysql> insert into user(name,password) values('marion',password('mftpasswd')),('keyso',password('kftpasswd'));
  备注:虚拟用户marion使用密码mftpasswd登录FTP,虚拟用户keyso则使用密码kftpasswd登录FTP
  mysql> select * from user;

  备注:账号密码使用password()函数加密后存储
  四、vsftpd服务器所需执行的操作:
  1、安装软件包:# yum -y install vsftpd pam_mysql mysql
  2、使用账号ftpuser远程登录mysql服务器:

  3、创建认证所需文件vsftpd.mysql:
  # rpm -ql pam_mysql | grep pam_mysql.so-->/lib64/security/pam_mysql.so
  # vim /etc/pam.d/vsftpd.mysql,添加如下两行代码:
  auth required /lib64/security/pam_mysql.so user=ftpuser passwd=123456 host=192.168.1.145 db=ftp table=user usercolumn=name passwdcolumn=password crypt=2
  account required /lib64/security/pam_mysql.so user=ftpuser passwd=123456 host=192.168.1.145 db=ftp table=user usercolumn=name passwdcolumn=password crypt=2
  备注:
  数字
  代表的含义
  0
  不加密,明文
  1
  使用crypt函数加密
  2
  使用mysql password()函数加密
  3
  使用md5加密
  4
  使用sha1加密
  4、创建虚拟用户映射的系统用户:
  # useradd -s /sbin/nologin -d /ftpdocs vuser    //新的家目录ftpdocs必须事先不存在,该命令会自动创建
  # chmod go+rx /ftpdocs
  5、修改主配置文件/etc/vsftpd/vsftpd.conf,确认启用如下选项:
  chroot_local_user=YES
  pam_service_name=vsftpd.mysql
  guest_enable=YES
  guest_username=vuser
  user_config_dir=/etc/vsftpd/vusers
  use_localtime=YES
  6、创建对应的虚拟用户配置文件目录:# mkdir -pv /etc/vsftpd/vusers
  7、配置不同的虚拟用户具有不同的访问权限:
  # cd /etc/vsftpd/vusers
  # vim marion
  anon_upload_enable=YES
  anon_mkdir_write_enable=YES
  anon_other_write_enable=YES
  # cp marion keyso
  # sed -i 's#YES#NO#g' keyso

  备注:每个虚拟用户的配置文件名同虚拟用户的用户名。虚拟用户所能执行的权限都由匿名用户的相关选项定义。所有的虚拟用户都映射到系统用户vuser上。
  8、启动vsftpd,检查21号端口是否被监听:# service vsftpd start# ss -tnlp | grep :21
  五、用户认证测试:
  在mysql服务器上分别使用虚拟用户marion和keyso远程登录FTP:# ftp 192.168.1.144,测试上传文件、删除文件、创建目录和删除目录等权限
  使用虚拟用户marion登录FTP:
  
  使用虚拟用户keyso登录FTP:
  

页: [1]
查看完整版本: vsftpd基于mysql实现用户认证