• 售前

  • 售后

热门帖子
入门百科

vsftpd如何设置虚拟用户:PAM + PgSQL + FreeBSD-4

[复制链接]
FREEDOM326 显示全部楼层 发表于 2021-10-25 18:48:16 |阅读模式 打印 上一主题 下一主题
vsftpd的虚拟用户设置:PAM + PgSQL + FreeBSD-4
(1.0beta,欢迎debug,本人也会随时更新)
vsftpd大概是天下上最好的ftpd。它在linux天下非常盛行,安全,性能高。
本文的目的是让PgSQL存储你的vsftp的虚拟用户和暗码,通过一个叫做pam的东东来认证。
零、简述PAM原理。
假如你已经对pam有所相识,请跳过,我知道的大概还不如你多。你不感爱好也请跳过,由于不看这个也可设置。
代码:
用户 <-> vsftpd <-> PAM模块 <-> 用户和暗码数据库
vsftpd用了一种很聪明同时也是unix/linux规范的方法来认证用户,就是PAM。各人对于PAM,大概有些陌生,但是一直在用。所谓PAM,英文是:Pluggable Authentication Modules,可拔插认证模块(不知道如许翻译对不对)。望见plug这个关键字,就知道是很机动的。
现在险些所有daemon步伐一样平常都是用PAM来举行认证的,包罗telnet/sshd/imapd,乃至你的login,都是用PAM。在 fbsd 4上的朋侪,你可以打ps -ax|grep pam,你会发现login了多少个控制台,就会有多少个写着pam的历程。
PAM的最大好处是机动。它不管你的用户和暗码用什么数据格式存储(数据库也好,通常用的暗码文件也好),只要有相应的PAM模块就可以存储。比如说,各人不仅可以用vsftpd + PgSQL做用户登陆验证,只要你喜欢你还可以用MySQL,Oracle,LDAP数据库存储用户数据,只要有相应的PAM就可以。所有的daemon 都可以用一个后台数据库来做用户验证登陆,包罗telnet/sshd等等。
pam的设置机制在差异版本的freebsd上有差异。
freebsd-4放在/etc/pam.conf,一个文件记载所有pam服务。
freebsd-5放在/etc/pam.d,/usr/local/etc/pam.d。每个pam服务由一个独立的文件记载。
本文不筹划详细叙述PAM的设置。PAM的设置不是很难,毕竟,只是要你设置一些参数,不是叫你开发一个pam模块出来。而且本文的篇幅所限,偶刚刚知道的一点东西盼望能够起到抛砖引玉的作用。等偶对pam再玩得深入和熟一点的时间,再写一篇关于深入一点关于pam的东东?
准备开始:提要
简朴讲讲要用到的设置文件的作用。
引用:
/etc/pam.conf #pam服务的设置
/etc/pam_pgsql.conf #pam_pgsql.so的设置
/usr/local/etc/vsftpd.conf #vsftpd的设置
一、安装vsftpd,PostgreSQL,pam_pgsql。
我都是利用port来安装的,请各人用port/package来安装,不要自己下载源码来编译,否则大概根据本文的方法大概无法正常利用。此中vsftpd和pam-pgsql肯定要用port/package来安装。
以下是他们的port目次:
引用:
/usr/ports/ftp/vsftpd
/usr/ports/databases/postgresql7
/usr/ports/security/pam-pgsql
安装:只要cd进去,然后make install就OK了。
二、PostgreSQL安装(假如你已经有了PostgreSQL,不需要看这一节)
简朴提提用port来装PostgreSQL的过程,由于BSD版上的装PgSQL的方法都是自己下载源码编译的。我是用port来编译安装,由于这是fbsd保举的安装方法,而且安装的软件会根据bsd的hier(目次结构)来安装,比较便于管理。
当用port来安装好PostgreSQL,默认的数据库管理用户是pgsql(port里头的安装步伐主动添加的),其他体系默认的是postgres。初始化PostgreSQL的步伐如下:
1、初始数据库。请先用root登陆大概su到root。然后,打下令:
代码:
# su pgsql
# initdb
正常初始化的应该有以下提示:
引用:
This database system will be initialized with username "pgsql".
This user will own all the data files and must also own the server process.
Creating directory /usr/local/pgsql/data
Creating directory /usr/local/pgsql/data/base
Creating directory /usr/local/pgsql/data/global
Creating directory /usr/local/pgsql/data/pg_xlog
Creating template1 database in /usr/local/pgsql/data/base/1
[snip]
Success. You can now start the database server using:
/usr/local/bin/postmaster -D /usr/local/pgsql/data
or
/usr/local/bin/pg_ctl -D /usr/local/pgsql/data -l logfile start
2、启动PostgreSQL
代码:
# /usr/local/etc/rc.d/010.pgsql.sh start
更多详细的资助,请看freebsddiary上面的一篇用port来安装PostgreSQL的文章,全英文。
http://www.freebsddiary.org/postgresql.php
三、设定用户数据库。
我是PgSQL的初学者,下令行用得不熟,因而要借助phpPgAdmin来管理数据库。
1、先创建一个数据库,叫做mydb。
2、创建一个数据表叫做ftp,用来存储用户名和帐号。这个数据表的结构是pam_pgsql模块规定的最简朴的表了,每一个字段都是必须的,你可以扩展这个表的结构,但是不要删除这些字段。我导出了一个SQL脚本,方便各人创建。
代码:
CREATE TABLE "ftp" (
"ID"                int4 DEFAULT nextval('public."ftp_ID_seq"')  NOT NULL ,
"usr"               varchar(32) NOT NULL ,
"pass"              varchar(32) NOT NULL ,
"expired"           bool DEFAULT false  NOT NULL ,
"newtok"            bool DEFAULT false  NOT NULL
);
请创建一些用户,方便调试:
这是我的ftp表,这些记载名字都是恣意起的。但请注意只有expired为f(假)的可以成功登陆。
代码:
ID |   usr   |  pass   | expired | newtok                                                 上一页12 下一页 阅读全文

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作