Linux vsftpd创建基于pam_mysql的虚拟用户机制

转至:https://blog.51cto.com/linsj/1768047

在centos6系统上实现搭建vsftp服务,基于pam_mysql的虚拟用户机制:

编译安装pam_mysql

一、准备环境:

# yum -y groupinstall "Development Tools" "server Platform Development"
# yum -y install pam-devel openssl-devel mariadb-devel mariadb-server
# yum -y install vsftpd

二、解压pam_mysql-0.7RC1.tar.gz源码包

# cd pam_mysql-0.7RC1/
# ./configure --with-mysql=/usr --with-openssl=/usr --with-pam=/usr --with-pam-mods-dir=/lib64/security
# make && make install

三、启动服务

service mysqld start
# mv vsftpd.conf{,.test}
# cp vsftpd.conf.bak vsftpd.conf 在复制的配置文件中修改,把原配置文件保留;

四、登录mysql数据库,创建库、表、用户并授权

# mysql
> CREATE DATABASE vsftpd;
> use vsftpd;
> CREATE TABLE users (
id int AUTO_INCREMENT NOT NULL PRIMARY KEY,
name char(30) NOT NULL,
password char(48) binary NOT NULL  );
> INSERT INTO users(name,password) VALUES ('tom',password('mageedu'));
> INSERT INTO users(name,password) VALUES ('jerry',password('mageedu'));
> GRANT ALL ON vsftpd.* TO vsftpd@localhost IDENTIFIED BY 'mageedu';
> GRANT ALL ON vsftpd.* TO vsftpd@'127.0.0.1' IDENTIFIED BY 'mageedu';
> FLUSH PRIVILEGES;

测试用户是否能登录mysql

# mysql -uvsftpd -pmageeud
> exit

数据库配置完毕。

配置vsftpd,通过pam-mysql模块链接mysql服务器,来检索出用户和密码:

# less /pam_mysql-0.7RC1/README 查看源码包中的配置文件说明
# man vsftpd.conf 查看配置文件说明
# vim /etc/pam.d/vsftpd.mysql
auth required /lib/security/pam_mysql.so user=vsftpd passwd=mageedu host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
account required /lib/security/pam_mysql.so user=vsftpd passwd=mageedu host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2

创建一个系统用户,为虚拟用户映射使用的用户及授权

# useradd -s /sbin/nologin -d /ftproot vusre

配置vsftpd,确保匿名用户有哪些权限,可根据需要开启或禁用相关权限

anonymous_enable=YES                #启用匿名用户访问
local_enable=YES                #允许本地用户登录
write_enable=YES                #允许可写

guest_enable=YES                #允许来宾账户访问
guest_username=vuser                #映射的来宾用户

pam_service_name=vsftpd.mysql            #指定访问用户、密码的配置文件

user_config_dir=/etc/vsftpd/vsftpd_config    #指定可访问用户的配置文件目录

确保用户的家目录,让其它远程访问的用户能读、执行权限,这样才能cd进此目录;但不能有写权限,否则远程ftp登录失败;

# mkdir -pv /ftproot/{pub,upload}
# chmod go+rx /ftproot/ # chmod u-w /ftproot/

创建用户配置文件

# mkdir -pv /etc/vsftpd/vsftpd_config
# touch /etc/vsftpd/vsftpd_config/{tom,jerry}
# vi /etc/vsftpd/vsftpd_config/tom
anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES

验证

# ftp 192.168.10.10
Connected to 192.168.10.10 (192.168.10.10).
220 (vsFTPd 2.2.2)
Name (192.168.10.10:root): tom
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (192,168,10,10,131,80).
150 Here comes the directory listing.
226 Directory send OK.
ftp> pwd
257 "/"
posted @ 2023-05-16 14:38  study_goup  阅读(49)  评论(0编辑  收藏  举报