一、概述 文件共享协议中,对于客户端共享资源FTP作为非常流行协议,本次我们实现基于文件和数据库,实现FTP虚拟用户存储。 二、安装部署 1、安装VSFTPD软件包 yum install -y vsftpd 2、创
一、概述
文件共享协议中,对于客户端共享资源FTP作为非常流行协议,本次我们实现基于文件和数据库,实现FTP虚拟用户存储。
二、安装部署
1、安装VSFTPD软件包
yum install -y vsftpd2、创建用户数据库文件
创建用户数据文件用用户数据文件生成用户数据库文件
db_load -T -t hash -f /etc/vsftpd/vusers.txt /etc/vsftpd/vusers.db对数据文件做权限安全限制
chmod 600 /etc/vsftpd/vusers.*3、创建PAM配置文件--第一种文件数据库实现
[root@manager ~]# cat /etc/pam.d/vsftpd.db auth required pam_userdb.so db=/etc/vsftpd/vusers account required pam_userdb.so db=/etc/vsftpd/vusers关闭anonymous来宾访问修改/etc/vsftpd/vsftpd.conf开启FTP允许上传创建虚拟用户和家目录
useradd -d /data/ftproot -s /sbin/nologin -r vuser mkdir -pv /data/ftproot/upload配置文件添加虚拟用户的配置
guest_enable=YES guest_username=vuser pam_service_name=vsftpd.db user_config_dir=/etc/vsftpd/conf.d/创建自定义配置目录
mkdir /etc/vsftpd/conf.d配置虚拟用户配置文件
[root@manager ~]# cat /etc/vsftpd/conf.d/ftpuser2 anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES设置虚拟用户写入权限
setfacl -m u:vuser:rwx /data/ftproot2/upload验证上传功能
4、基于mysql的扩展实现
使用mysql的前提是需要编译开源项目https://sourceforge.net/projects/pam-mysql/但是由于该项目上次更新是2006年,已经是非常古老的项目,只能支持到Centos7。
本次是使用github的基于上面的开源项目的改良版https://github.com/NigelCunningham/pam-MySQL安装Centos8 的编译环境
yum install gcc python3 git mariadb-devel pam-devel -y安装meson和ninja
pip3 install meson ninja解压源码包
tar xf pam-MySQL-1.0.0-beta1.tar.gz执行构建
meson ../pam-MySQL-build进入构建后的目录下执行编译
cd ../pam-MySQL-build ninja && ninja install将生成后的pam-mysql.so 从lib/security 下移动到/lib64/security/
mv /lib/security/pam_mysql.so /lib64/security/创建/etc/pam.d/vsftpd.mysql文件 ,其中的密码、数据库服务器连接信息与实际环境有关。
auth required pam_mysql.so user=vsftpd passwd=123456 host=127.0.0.1 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2 account required pam_mysql.so user=vsftpd passwd=123456 host=127.0.0.1 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2创建虚拟用户
useradd -d /var/ftp -s /sbin/nologin -r vuser在vsftpd主配置文件中添加
user_config_dir=/etc/vsftpd/conf.d/ guest_enable=YES guest_username=vuser anon_world_readable_only=NO在vsftpd主配置文件更改pam配置
pam_service_name=vsftpd.mysql创建数据库和表,并插入用户数据
create database vsftpd CREATE TABLE users ( id INT AUTO_INCREMENT NOT NULL PRIMARY KEY, name CHAR(50) BINARY NOT NULL, password CHAR(48) BINARY NOT NULL ); INSERT INTO users(name,password) values('ftpuser1',password('123456')); 授权连接 grant select on vsftpd.* to vsftpd@'127.0.0.1' identified by '123456'创建用户个性化配置文件
[root@localhost conf.d]# cat ftpuser1 anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES local_root=/data/ftproot1创建文件目录
mkdir -pv /data/ftproot1/upload\设置上传权限
setfacl -m u:vuser:rwx /data/ftproot1/upload/启动vsftpd服务
登陆测试上传测试
三、总结
通过以上实践可以使用基本的vsftp虚拟主机功能。