(一)vsftpd虚拟用户
1 虚拟用户:
所有虚拟用户会统一映射为一个指定的系统帐号:访问共享位置,即为此系统帐号的家目录
各虚拟用户可被赋予不同的访问权限,通过匿名用户的权限控制参数进行指定
2 虚拟用户帐号的存储方式:
2.1 文件:编辑文本文件,此文件需要被编码为hash格式
奇数行为用户名,偶数行为密码
db_load -T -t hash -f vusers.txtvusers.db
2.2 关系型数据库中的表中:
实时查询数据库完成用户认证
mysql库:pam要依赖于pam-mysql
/lib64/security/pam_mysql.so
/usr/share/doc/pam_mysql-0.7/README
(二)实现基于mysql验证的ftp虚拟用户
环境:两台主机,一台 A:mairadb server 一台 B ftp server
一、安装所需要包和包组:
1、在数据库服务器上安装包:
安装mariadb或者mysql
yum install mariadb-devel 或者yum install mysql-devel
mysql_secure_installation(跑下安全脚本)
mysql -uroot –pip
>create database vsftpd;(创建数据库)
>use vsftpd
>create table ftpusers(name char(30),pass char(50));(创建表)
>insert ftpusers values('ftp1',password('centos')),('ftp2',password('magedu'));(添加表内容)
>grant select on vsftpd.ftpusers to 'ftp'@'172.17.166.166' identified by 'centos';(给ftp@172.17.166.166授权)
2、在FTP服务器上安装vsftpd和pam_mysql包
yum groupinstall "development tools"(安装包组)
yum install mysql-devel pam-devel(安装所需要的包)
编译安装pam_mysql-0.7RC1.tar.gz
tar xvf pam_mysql-0.7RC1.tar.gz
cd pam_mysql-0.7RC1
./configure --with-pam-mods-dir=/lib64/security --with-pam=/usr
make && make install
useradd -d /app/ftpdir -r -m ftpuser (创建系统用户,使所有用户访问都指向ftpuser)
二、在FTP服务器上配置vsftpd服务
3 B.在FTP服务器上建立pam认证所需文件
vim /etc/pam.d/vsftpd.mysql (编写模块配置文件)
auth required pam_mysql.so user=ftp passwd=centos host=172.17.177.177 db=vsftpd table=ftpusers usercolumn=name passwdcolumn=pass crypt=2
account required pam_mysql.so user=ftp passwd=centos host=172.17.177.177 db=vsftpd table=ftpusers usercolumn=name passwdcolumn=pass crypt=2
• auth 表示认证
• account 验证账号密码正常使用
• required 表示认证要通过
• pam_mysql.so模块是默认的相对路径,是相对/lib64/security/路径而言,也可以写绝对路径;后面为给此模块传递的参数
• user=vsftpd为登录mysql的用户
• passwd=magedu 登录mysql的的密码
• host=mysqlserver mysql服务器的主机名或ip地址
• db=vsftpd 指定连接msyql的数据库名称
• table=users 指定连接数据库中的表名
• usercolumn=name 当做用户名的字段
• passwdcolumn=password 当做用户名字段的密码
• crypt=2 密码的加密方式为mysql password()函数加密
4 B 建立相应用户和修改vsftpd配置文件,使其适应mysql认证
建立虚拟用户映射的系统用户及对应的目录
vim /etc/vsftpd/vsftpd.conf(配置FTP)
pam_service_name=vsftpd.mysql 修改
加下面行
guest_enable=yes(开启指定用户选项)
guest_username=ftpuser(指定用户)
user_config_dir=/etc/vsftpd/conf.d/(指定目录,使其每个虚拟用户的权限不同)
mkdir /etc/vsftpd/conf.d/(默认没有这个目录)
cd /etc/vsftpd/conf.d/
vim /etc/vsftpd/conf.d/ftp1
anon_upload_enable=yes(允许ftp1上传文件)
vim /etc/vsftpd/conf.d/ftp2
local_root=/app/ftpdir2(指定ftp2的根文件为/app/ftpdir2)
5、B
cd /app/
chmod 555 /app/ftpdir/(根目录不能有写权限)
mkdir /app/ftpdir/up (可以下载的目录)
chown ftpuser /app/ftpdir/up
mkdir /app/ftp2
chmod 555 /app/ftpdir2
6、拿客户端测试
用ftp1测试
用ftp2登录
测试成功!!!!!