iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >vsftpd基于pam_mysql的虚拟用户机制
  • 864
分享到

vsftpd基于pam_mysql的虚拟用户机制

2024-04-02 19:04:59 864人浏览 薄情痞子
摘要

一、虚拟用户概述vsftpd使用虚拟用户时,需要为所有的虚拟用户创建一个系统用户,因为无论vsftpd使用的是哪一种用户类型(匿名用户、系统用户、虚拟用户),最终都是要映射为操作系统上的一个用户,而每一个文

一、虚拟用户概述


vsftpd使用虚拟用户时,需要为所有的虚拟用户创建一个系统用户,因为无论vsftpd使用的是哪一种用户类型(匿名用户、系统用户、虚拟用户),最终都是要映射为操作系统上的一个用户,而每一个文件资源都有各自的权限,只有操作系统上的用户才能根据权限模型判断是否能够访问该文件资源。这里仅介绍vsftpd基于pam_Mysql的虚拟用户机制的使用。


二、vsftpd基于pam_mysql的虚拟用户机制


1、编译安装pam_mysql


(1) 编译pam_mysql前要提供开发环境,并安装其依赖的程序包的开发包

[root@ftp ~]# yum -y groupinstall "Development Tools" "Server PlatfORM Development"
[root@ftp ~]# yum -y install pam-devel openssl-devel mariadb-devel


(2) 下载pam_mysql源码压缩包


#在pam_mysql官网上下载其压缩包

vsftpd基于pam_mysql的虚拟用户机制


(3) 解压缩后进行编译安装

[root@ftp ~]# tar xf pam_mysql-0.7RC1.tar.gz
[root@ftp ~]# cd pam_mysql-0.7RC1/
[root@ftp pam_mysql-0.7RC1]# 
[root@ftp pam_mysql-0.7RC1]# ./configure --with-mysql=/usr --with-openssl=/usr --with-pam=/usr --with-pam-mods-dir=/lib64/security
[root@ftp pam_mysql-0.7RC1]# make && make install



2、使用mysql创建用于存放用户账号密码的表


(1)启动mysql服务,并设置为开机自动启动

[root@ftp ~]# systemctl start mariadb.service
[root@ftp ~]# systemctl enable mariadb.service


(2)创建数据库vsftpd和表users

[root@ftp ~]# mysql
mysql> CREATE DATABASE vsftpd;
mysql> use vsftpd;
mysql> CREATE TABLE users (
	id INT AUTO_INCREMENT NOT NULL PIRMARY KEY,
	name CHAR(30) NOT NULL,
	passWord CHAR(48) BINARY NOT NULL );
	# mysql使用password()函数加密后的结果有48个字符
mysql> DESC users;
+----------+------------+------+-----+---------+----------------+
| Field    | Type       | Null | Key | Default | Extra          |
+----------+------------+------+-----+---------+----------------+
| id       | int(11)    | NO   | PRI | NULL    | auto_increment |
| name     | char(30)   | NO   |     | NULL    |                |
| password | binary(48) | NO   |     | NULL    |                |
+----------+------------+------+-----+---------+----------------+


(3)为表插入数据

mysql> INSERT INTO usrs(name,password) VALUES ('tom',password('mageedu')),('jerry',password('mageedu.com'));

(4)授权

mysql> GRANT SELECT ON vsftpd.* TO vsftpd@localhost IDENTIFIED BY 'mageedu';
mysql> GRANT SELECT ON vsftpd.* TO vsftpd@'127.0.0.1' IDENTIFIED BY 'mageedu';
mysql> FLUSH PRIVILEGES;


3、创建一个pam配置文件

[root@ftp ~]# vim /etc/pam.d/vsftpd.mysql

auth required pam_mysql.so user=vsftpd passwd=mageedu host=localhost db=vsftpd table=users
usercolumn=name passwdcolumn=password crypt=2

account required pam_mysql.so user=vsftpd passwd=mageedu host=localhost db=vsftpd table=users
usercolumn=name passwdcolumn=password crypt=2



4、创建系统用户,作为所有虚拟用户的映射用户


[root@ftp ~]#  useradd -s /sbin/nologin -d /ftproot vuser
[root@ftp ~]# ll -d /ftproot/
drwx------. 4 vuser vuser 87 Jun  9 21:48 /ftproot/    # 组用户和其它用户是没有任何权限的
[root@ftp ~]# chmod Go+rx /ftproot/    # 为组用户和其他用户添加读和执行权限
[root@ftp ~]# chmod -w /ftproot        # 映射用户vuser的家目录不能有写权限
[root@ftp ~]# mkdir /ftproot/{pub,upload}    # 如果要想有写权限,可在家目录下创建具有写权限的子目录

5、编辑vsftpd配置文件,修改相关配置


[root@ftp ~]# vim /etc/vsftpd/vsftpd.conf
guest_enable=YES	         # 是否允许来宾账号访问
guest_username=vuser	         # 把所有来宾账号都映射为系统用户vuser
pam_service_name=vsftpd.mysql    # 修改对应的pam配置文件



6、启动服务


[root@ftp ~]# systemctl start vsftpd.service
[root@ftp ~]# ss -tnl | grep :21
LISTEN     0      32          :::21                      :::*


7、测试


(1)测试虚拟用户tom

[root@ftp ~]# ftp 192.168.10.99
Connected to 192.168.10.99 (192.168.10.99).
220 (vsFTPd 3.0.2)
Name (192.168.10.99:root): tom    # 输入虚拟用户tom
331 Please specify the password.
Password:                           # 输入虚拟用户tom的密码
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> 
ftp> ls
227 Entering Passive Mode (192,168,10,99,223,134).
150 Here comes the directory listing.
drwxr-xr-x    2 0        0               6 Jun 09 13:35 pub
drwxr-xr-x    2 1000     0              64 Jun 09 14:25 upload
226 Directory send OK.


(2)测试虚拟用户jerry

[root@ftp ~]# ftp 192.168.10.99
Connected to 192.168.10.99 (192.168.10.99).
220 (vsFTPd 3.0.2)
Name (192.168.10.99:root): jerry    # 输入虚拟用户jerry
331 Please specify the password.
Password:                             # 输入虚拟用户jerry的密码
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (192,168,10,99,251,69).
150 Here comes the directory listing.
drwxr-xr-x    2 0        0               6 Jun 09 13:35 pub
drwxr-xr-x    2 1000     0              64 Jun 09 14:25 upload
226 Directory send OK.

测试成功。


三、其它需求


1、如何让虚拟用户具有上传文件的权限?


(1)确保vsftpd配置中匿名用户具有写权限

[root@ftp ~]# vim /etc/vsftpd/vsftpd.conf
anon_upload_enable=YES        # 这一项需要启用,因为虚拟用户也是匿名用户


(2)确保虚拟用户的系统映射用户Vuer对文件系统具有写权限

[root@ftp ~]# chown vuser /ftproot/upload


(3)测试

#测试虚拟用户tom

[root@ftp ~]# ftp 192.168.10.99
Connected to 192.168.10.99 (192.168.10.99).
220 (vsFTPd 3.0.2)
Name (192.168.10.99:root): tom     # 输入虚拟用户tom
331 Please specify the password.
Password:                            # 输入虚拟用户tom的密码
ftp> 
ftp> cd upload    # 切换至有用户具有写权限的目录
ftp> lcd /etc     # 外部shell切换至/etc目录
ftp> put fstab    # 上传文件fstab
local: fstab remote: fstab
227 Entering Passive Mode (192,168,10,99,213,217).
150 Ok to send data.
226 Transfer complete.    # 传输完成
541 bytes sent in 0.000189 secs (2862.43 Kbytes/sec)
ftp> ls
-rw-------    1 1000     1000          541 Jun 09 15:08 fstab
226 Directory send OK.


#测试虚拟用户jerry

[root@ftp ~]# ftp 192.168.10.99
Connected to 192.168.10.99 (192.168.10.99).
220 (vsFTPd 3.0.2)
Name (192.168.10.99:root): jerry     # 输入虚拟用户jerry
331 Please specify the password.
Password:                            # 输入虚拟用户jerry的密码
ftp> 
ftp> cd upload    # 切换至有用户具有写权限的目录
ftp> lcd /etc     # 外部shell切换至/etc目录
ftp> put issue    # 上传文件issue
local: issue remote: issue
227 Entering Passive Mode (192,168,10,99,169,197).
150 Ok to send data.
226 Transfer complete.    # 传输完成
23 bytes sent in 5.8e-05 secs (396.55 Kbytes/sec)
ftp> ls
227 Entering Passive Mode (192,168,10,99,144,240).
150 Here comes the directory listing.
-rw-------    1 1000     1000          541 Jun 09 15:08 fstab
-rw-------    1 1000     1000           23 Jun 09 15:14 issue
226 Directory send OK.

测试成功。


2、虚拟用户tom和jerry都映射为系统上的一个用户vuser,能够设置tom和jerry的权限不一致,例如设置为tom能够上传文件,而jerry不能上传文件?



1、分别为每个虚拟用户添加单独一个配置文件

#vsftpd支持每个虚拟用户单独使用一个配置文件,并且配置文件必须和用户名相同

[root@ftp ~]# mkdir /etc/vsftpd/vuser.conf.d
[root@ftp ~]# cd /etc/vsftpd/vuser.conf.d/
[root@ftp vuser.conf.d]# vim tom
anon_upload_enable=YES    # 允许tom上传文件
[root@ftp vuser.conf.d]# vim jerry
anon_upload_enable=NO    # 不允许jerry上传文件


2、编辑主配置文件/etc/vsftpd/vsftpd.conf

(1)设置不允许匿名用户上传

[root@ftp ~]# vim /etc/vsftpd/vsftpd.conf
#anon_upload_enable=YES    # 注释掉主配置文件中的该行配置


(2)明确设置加载vusers.conf.d目录中的配置文件

[root@ftp ~]# vim /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/vusers.conf.d



3、重启vsftpd服务

[root@ftp ~]# systemctl restart vsftpd.service


4、测试


#预期虚拟用户tom能够上传文件,而jerry则不能上传文件

#测试虚拟用户tom

[root@ftp ~]# ftp 192.168.10.99
Connected to 192.168.10.99 (192.168.10.99).
220 (vsFTPd 3.0.2)
Name (192.168.10.99:root): tom    # 输入虚拟用户tom
331 Please specify the password.
Password:                         # 输入虚拟用户tom的密码
ftp> 
ftp> cd upload
ftp> lcd /etc/
ftp> put grub2.cfg    # 上传文件grub2.cfg
local: grub2.cfg remote: grub2.cfg
227 Entering Passive Mode (192,168,10,99,220,164).
150 Ok to send data.
226 Transfer complete.    # 传输成功
4209 bytes sent in 0.000162 secs (25981.48 Kbytes/sec)


#测试虚拟用户jerry

[root@ftp ~]# ftp 192.168.10.99
Connected to 192.168.10.99 (192.168.10.99).
220 (vsFTPd 3.0.2)
Name (192.168.10.99:root): jerry    # 输入虚拟用户jerry
331 Please specify the password.
Password:                           # 输入虚拟用户jerry的密码
ftp> 
ftp> cd upload
ftp> lcd /etc/
ftp> put motd    # 上传文件motd
local: motd remote: motd
227 Entering Passive Mode (192,168,10,99,188,33).
550 Permission denied.    # 权限被拒绝!

测试成功。



您可能感兴趣的文档:

--结束END--

本文标题: vsftpd基于pam_mysql的虚拟用户机制

本文链接: https://www.lsjlt.com/news/37753.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • vsftpd基于pam_mysql如何做虚拟用户认证
    这篇文章给大家介绍vsftpd基于pam_mysql如何做虚拟用户认证,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。(1)下载epel源[root@CentOS7-175 ~...
    99+
    2024-04-02
  • 基于MySql验证的vsftpd虚拟用户
    目录1. Mysql安装1.2 建表建库建用户1.3 创建远程连接账户2. 安装FTP服务器2.1 安装vsftpd2.2 安装pam_mysql2.2 建立pam认证所需文件2.3...
    99+
    2024-04-02
  • MySQL中怎么利用pam_mysql模块实现vsftpd虚拟用户
    MySQL中怎么利用pam_mysql模块实现vsftpd虚拟用户,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。一、实验环境的...
    99+
    2024-04-02
  • 怎么建立基于虚拟用户的VSftpd服务
    这篇文章主要介绍“怎么建立基于虚拟用户的VSftpd服务”,在日常操作中,相信很多人在怎么建立基于虚拟用户的VSftpd服务问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么建立基于虚拟用户的VSftpd服务...
    99+
    2023-06-09
  • vsftpd怎么配置虚拟用户
    小编给大家分享一下vsftpd怎么配置虚拟用户,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! vsftpd的虚拟用户配置:PAM + PgSQL + F...
    99+
    2023-06-13
  • CentOS vsftpd怎么制作虚拟用户数据库文件
    本篇内容介绍了“CentOS vsftpd怎么制作虚拟用户数据库文件”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!制作虚拟用户数据库文件先建...
    99+
    2023-06-16
  • Vsftpd+Mysql+Pam如何配置虚拟用户
    这篇文章主要介绍Vsftpd+Mysql+Pam如何配置虚拟用户,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!  一、VSFTPD的安装  目前,VSFTPD的最新版本是1.2.0版...
    99+
    2024-04-02
  • Linux下vsftpd+mysql虚拟用户有什么用
    这篇文章将为大家详细讲解有关Linux下vsftpd+mysql虚拟用户有什么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。第一步:安装vsftpd apt-get i...
    99+
    2024-04-02
  • CentOS 6.2中怎么配置vsftpd虚拟用户
    本篇文章为大家展示了CentOS 6.2中怎么配置vsftpd虚拟用户,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。代码如下:[root@linuxde ~]# mount /dev/cdrom /...
    99+
    2023-06-10
  • 如何编辑CentOS vsftpd虚拟用户文件数据
    如何编辑CentOS vsftpd虚拟用户文件数据,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。先建立CentOS vsftpd虚拟用户名单文件:[root@K...
    99+
    2023-06-16
  • CentOS5.3系统设置vsftpd虚拟用户的详细步骤
    这篇文章主要介绍“CentOS5.3系统设置vsftpd虚拟用户的详细步骤”,在日常操作中,相信很多人在CentOS5.3系统设置vsftpd虚拟用户的详细步骤问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C...
    99+
    2023-06-10
  • CentOS6.4下怎么安装vsftpd并配置虚拟用户
    这篇文章主要介绍“CentOS6.4下怎么安装vsftpd并配置虚拟用户”,在日常操作中,相信很多人在CentOS6.4下怎么安装vsftpd并配置虚拟用户问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Cen...
    99+
    2023-06-10
  • vsftpd操作——配置虚拟用户登录的详细步骤
    笔者重新整理了文章的结构和内容,看这篇会舒服很多Linux笔记之配置vsftpd服务的虚拟用户登录 配置虚拟用户,使用独立的用户帐号进行登录vsftp 1.环境准备 安装vsftpd及相关组件 rpm -qa | grep vsftpd...
    99+
    2023-09-06
    服务器 linux 运维
  • MySql如何实现新建并验证vsftpd虚拟用户
    这篇文章将为大家详细讲解有关MySql如何实现新建并验证vsftpd虚拟用户,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1. Mysql安装yum -y install m...
    99+
    2023-06-25
  • Linux下如何安装vsftpd以及配置FTP虚拟用户
    这篇文章主要为大家展示了“Linux下如何安装vsftpd以及配置FTP虚拟用户”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Linux下如何安装vsftpd以及配置FTP虚拟用户”这篇文章吧。...
    99+
    2023-06-16
  • Vsftpd+tcp_wrappers怎么控制主机和用户访问
    本篇内容主要讲解“Vsftpd+tcp_wrappers怎么控制主机和用户访问”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Vsftpd+tcp_wrappers怎么控制主机和用户访问”吧!RH...
    99+
    2023-06-13
  • 基于域名的虚拟主机如何配置
    基于域名的虚拟主机配置可以通过以下步骤完成:1. 获取一个域名:首先,您需要购买一个域名,例如example.com。您可以通过注册...
    99+
    2023-08-22
    虚拟主机
  • 基于域名的虚拟主机原理是什么
    基于域名的虚拟主机原理是通过将多个域名指向同一个物理服务器的不同目录或虚拟服务器,实现多个网站共享同一个服务器资源的技术。在传统的虚...
    99+
    2023-09-07
    虚拟主机
  • 怎么配置基于ip地址的虚拟主机
    要基于IP地址配置虚拟主机,您可以按照以下步骤进行操作:1. 首先,确保您的服务器上有多个IP地址可供使用。您可以通过运行`ip a...
    99+
    2023-08-26
    虚拟主机
  • 更改虚拟机的系统用户名
    想要更改虚拟机的用户名,注意:这里的用户名不是/etc/hostname下的,而是/home目录下的用户名 更改主机用户名需要在root权限下 vi /etc/passwd 找到目前主机名...
    99+
    2023-10-27
    linux 服务器 centos Powered by 金山文档
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作