postgresql 查看用户密码_PostgreSQL中如何实现密码复杂度检查

本文介绍如何使用PostgreSQL自带的passwordcheck插件进行密码复杂度检查,并通过CrackLib实现更严格的密码验证策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

328b3e10aad170850fb4c434e723d106.png

PostgreSQL自带了一个插件passwordcheck可以满足简单的密码复杂度测验, 防止使用过短, 或者与包含用户名的密码,只需要把’$libdir/passwordcheck’加入到postgresql.conf的shared_preload_libraries参数中,然后重启服务器即可,只要通过CREATE ROLE或ALTER ROLE设置用户,passwordcheck模块就会检查用户的口令,如下:

postgres=# create role test password 'Test#2020';
CREATE ROLE
postgres=# alter role test password 'test#2020';
ERROR:  password must not contain user name
postgres=# alter role test password 'tes12020';
ALTER ROLE
postgres=# alter role test password '2020';
ERROR:  password is too short
postgres=# alter role test password '2020abc';
ERROR:  password is too short
postgres=# alter role test password '2020abcd';
ALTER ROLE
postgres=# alter role test password '12345678';
ERROR:  password must contain both letters and nonletters
postgres=# alter role test password '';
ERROR:  password is too short
postgres=# alter role test password 'abcdffgh';
ERROR:  password must contain both letters and nonletters

如果需要实现更复杂的密码检查, 可以让passwordcheck使用CrackLib来检查口令。
安装过程如下:

  1. 安装cracklib以及字典
yum install -y cracklib-devel cracklib-dicts cracklib
  1. 检查安装
# rpm -ql cracklib-dicts
/usr/lib64/cracklib_dict.hwm
/usr/lib64/cracklib_dict.pwd
/usr/lib64/cracklib_dict.pwi
/usr/sbin/mkdict
/usr/sbin/packer
/usr/share/cracklib
/usr/share/cracklib/cracklib-small.hwm
/usr/share/cracklib/cracklib-small.pwd
/usr/share/cracklib/cracklib-small.pwi
/usr/share/cracklib/pw_dict.hwm
/usr/share/cracklib/pw_dict.pwd
/usr/share/cracklib/pw_dict.pwi
  1. 如果需要自己配置生成字典,包括此步骤,否则可跳过
[root@test ~]# mkdir /opt/src
[root@test ~]# cd /opt/src
[root@test src]# wget http://downloads.sourceforge.net/project/cracklib/cracklib-words/2008-05-07/cracklib-words-20080507.gz
[root@test src]# gunzip cracklib-words-20080507.gz
#可以到cracklib-words-20080507添加需要排除的密码,如不允许使用Twsm_20200917密码
[root@test src]# echo 'Twsm_20200917' >> cracklib-words-20080507
[root@test src]# create-cracklib-dict -o ./cracklib-dict ./cracklib-words-20080507
  1. 下载PostgreSQL源码,配置passwordcheck
    如果当前的PG非源码安装,或者以前编译源码已清理,需要重新下载对应的PG源码版本
[root@test src]# wget https://ftp.postgresql.org/pub/source/v10.14/postgresql-10.14.tar.bz2
[root@test src]# tar xjvf postgresql-10.14.tar.bz2
[root@test src]# cd /opt/src/postgresql-10.14/contrib/passwordcheck/
#修改Makefile, 把注释去掉, 并修改字典文件(不要带.pwd后缀).
[root@test passwordcheck]# vi Makefile
#把下面两行注释去掉
#修改字典文件/usr/lib/cracklib_dict为步骤3生产的字典
PG_CPPFLAGS = -DUSE_CRACKLIB '-DCRACKLIB_DICTPATH="/opt/src/cracklib-dict"'
SHLIB_LINK = -lcrack
#修改需要的密码最小长度,修改为13
[root@test passwordcheck]# vi passwordcheck.c
#define MIN_PWD_LENGTH 13
  1. 编译passwordcheck

...

✨ 接下来内容请点击【原文】进行查看~

更多数据库相关内容,可访问【墨天轮】进行浏览。

169d5903438f2cce000dcf0235c74389.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值