嵌入式linux pam,Linux PAM 之cracklib模块
pam的重要文件如下:
/usr/lib/libpam.so.* ## PAM核心库
/etc/pam.conf ## PAM配置文件
/etc/pam.d/* ## PAM各个模块的配置文件
/lib/security/pam_*.so ## 可动态加载的PAM模块
PAM配置文件的每一行的格式:Module-type Control-flag Module-path Arguments
模块类型 控制字符 模块路径 模块参数
Module-type:
auth:确定有关用户认证的两方面。第一,他确认用户就是他们自己,这通过应用程序提示用户输入密码 或者其他正式身份的办法。第二,这类模块会赋予成员资格。
account:处理非认证级的账号管理。典型的用法是基于一天的不同时间来限制、允许访问某服务。限制 当前可用的系统资源(最大用户数)或者限制特定用户—root只能从控制台登陆。
session:一系列有关动作,只在用户得到/失去服务时要做的事。这包括记录用户的登录/退出、挂载必要 的目录等。
password:设置密码。
Control-flag:
required:表示本模块必须返回成功才能通过认证,但是如果该模块返回失败的话,失败结果也不会立即 通知用户,而是要等到同一stack中的所有模块全部执行完毕再将失败结果返回给应用程序。可以认为是一个必 要条件。
requisite:与required类似,该模块必须返回成功才能通过认证,但是一旦该模块返回失败,将不再执行 同一stack内的任何模块,而是直接将控制权返回给应用程序。是一个必要条件。注:Solaris不支持。
sufficient:表明本模块返回成功已经足以通过身份认证的要求,不必再执行同一stack内的其它模块,但是 如果本模块返回失败的话可以忽略。可以认为是一个充分条件。
optional:表明本模块是可选的,它的成功与否一般不会对身份认证起关键作用,其返回值一般被忽略。
include,从字面就知道什么意思了。包含另外一个配置文件。
Module-path:
Debian的PAM module存放目录默认是在/lib/security。在各个模块的配置文件里,不用写绝对路径,直接 写这个默认目录下面的模块名就可以了。当然,也可以写绝对路径。
Arguments:
各个模块的参数都不一样,具体的要开发者的man手册。无效参数不会对结果有影响,但是会被日志记录 下来。首先,看看/lib/security有没有这个模块,再:man 模块名
下面开始介绍cracklib模块
pam_cracklib是一个PAM模块,用来检查密码是否违反密码字典,这个验证模块可以通过插入password堆 栈,为特殊的应用提供可插入式密码强度性检测。它的工作方式就是先提示用户输入密码,然后使用一个系统 字典和一套规则来检测输入的密码是否不能满足强壮性要求。密码的强度检测分二次进行,第一次只是检测密 码是否是提供的对比字典中的一部分,如果检测结果是否定的,那么就会提供一些附加的检测来进一步检测其 强度,例如检测新密码中的字符占旧密码字符的比例,密码的长度,所用字符大小写状况,以及是否使用了特 殊字符等等。(libpam-cracklib)
下面是cracklib模块的一些参数:
debug:将debug信息写入syslog
type=XXX:提示输入密码的文本内容。默认是"New UNIX password: " and "Retype UNIX password: ",可自定
retry=N:用户最多可以几次输入密码后报错。默认是1次。
difok=N:新密码有几个字符不能和旧密码相同,默认是5个。另外如果新密码有1/2的字符于旧不同,也会被接受。
diginore=N:默认当新密码有23个字符时,difok选项会被忽略。
minlen=N:最小密码长度。
dcredit=N:当N>=0时,N代表新密码最多可以有多少个阿拉伯数字。当N<0时,N代表新密码最少要有多少个阿拉伯数字。
ucredit=N:和dcredit差不多,但是这里说的是大写字母。
lcredit=N:和dcredit差不多,但是这里说的是小写字母。
ocredit=N:和dcredit差不多,但是这里说的是特殊字符。
use_authtok:在某个与密码相关的验证模块后使用此选项,例如pam_unix.so验证模块
pam_cracklib 模块式PAM配置接口的基本模块,在Debian系统中配置文件是 /etc/pam.d/common-password 但是在Redhat系统中配置文件是 /etc/pam.d/system-auth 他的配置看起来像以下这样:
password required pam_cracklib.so retry=3 minlen=6 difok=3
password required pam_unix.so md5 use_authtok
第一行是 pam_cracklib模块和设置的几个模块参数
第二行是 pam_unix模块,MD5表示采用MD5加密
pam_cracklib可以记录用户使用的历史密码,并且不允许用户重复使用旧的密码,实际上存储用户旧密码的是通过pam_unix模块实现的。
第一步是建立一个空文件用来存储旧密码/etc/security/opasswd,如果你没有建立文件却使用了历史密码记录功能的话,所有的密码更新都会失败,因为pam_unix模块会报错。
opasswd就像/etc/shadow文件,因为他记录用户密码的哈希
touch /etc/security/opasswd
chown root:root /etc/security/opasswd
chmod 600 /etc/security/opasswd
一旦建立了opasswd文件,就可以在pam_unix模块后面加上参数remember=N来开始记录旧密码,remember参数记录你想记录多少旧密码,他的最大值是400,如果你设置的值超过400会当做400来对待,例如:
password required pam_cracklib.so retry=3 minlen=12 difok=4
password required pam_unix.so md5 remember=12 use_authtok
opasswd文件内容格式如下:
hal:1000::,,...,
以‘:’分割,第一列是用户名,第二列是用户ID,第三列是目前记录了该用户多少个旧密码,hashN是每次密码的MD5值,opasswd在某些系统安装PAM模块时会自动建立。
密码字典检查
pam_cracklib 也可以检查用户设置的密码是不是违反系统内部的密码字典,在Debian系统中pam_cracklib的 密码字典在/var/cache/cracklib目录下,而且每天晚上update-cracklib脚本会自动的rebuild密码字典。
/etc/login.defs 文件设置密码过期时间等一系列参数,注意login.defs中设置的参数只有是用系统的useradd程序新建的一个用户时才会有login.defs中设置的属性,如果是用其他机器新建的用户,则没有以上属性,不过可以试用chage命令手动添加相关属性。
chage参数如下:
-m 密码可更改的最小天数。 为零时代表任何时候都可以更改密码。
-M 密码保持有效的最大天数。
-W 用户密码到期前,提前收到警告信息的天数。
-E 帐号到期的日期。过了这天,此帐号将不可用。
-d 上一次更改的日期
-i 停滞时期。如果一个密码已过期这些天,那么此帐号将不可用。
-l 例出当前的设置。由非特权用户来确定他们的密码或帐号何时过期。
嵌入式linux pam,Linux PAM 之cracklib模块相关推荐
- Linux系统的PAM模块认证文件含义说明总结
在Linux中执行有些程序时,这些程序在执行前首先要对启动它的用户进行认证,符合一定的要求之后才允许执行,例如login, su等.在Linux中进行身份或是状态的验证程序是由PAM来进行的,PAM( ...
- OpenWrt项目:针对嵌入式设备的Linux操作系统
欢迎来到OpenWrt项目 OpenWrt项目是针对嵌入式设备的Linux操作系统.OpenWrt不会尝试创建单个静态固件,而是提供具有包管理功能的完全可写文件系统.这使您从供应商提供的应用程序选择和 ...
- 杭州嵌入式linux培训机构,杭州嵌入式培训|嵌入式软件培训|嵌入式编程|杭州linux培训-和盈...
技术名称 知识要点 学习目的 Linux操作系统 Linux介绍与安装 Linux基本命令操作 文件系统管理 用户管理 权限管理 网络配置 常用文本处理工具 搭建Samba服务器 搭建FTP服务器 搭 ...
- linux添加hello驱动,Linux驱动之建立一个hello模块
目标:在开发板上执行insmod hello.ko能在控制台打印出hello init:接着执行rmmod会在控制台打印出hello exit 建立一个hello模块的步骤如下: 1.建立一个hell ...
- 初探linux内核编程,参数传递以及模块间函数调用
一.前言 我们一起从3个小例子来体验一下linux内核编程.如下: 1. 内核编程之hello world 2. 模块参数传递 3. 模块间函数调用 二.准备工作 首先,在你的linux系统上面安装l ...
- 嵌入式学习在linux下使用c语言对文件进行打开、读写操作。_2000字干货!单片机进阶嵌入式Linux要怎么学习……...
文章字数:2000 干货指数:⭐⭐⭐⭐⭐ 导读:这篇文章我们来一起简单梳理嵌入式Linux的一些知识,方便一些想跟我一样想要由单片机进阶到嵌入式Linux的朋友做一些参考学习. 现在随着嵌入式Linu ...
- linux python 永久添加自己的模块路径
Linux 环境变量配置 : https://blog.csdn.net/freeking101/article/details/81013045 linux python 永久添加自己的模块路径 添 ...
- 嵌入式linux基本指令,成都嵌入式开发之Linux常用命令大全
原标题:成都嵌入式开发之Linux常用命令大全 Linux系统中有很多命令,使用Linux系统最常用的就是命令操作,而不是像Windows一样,使用鼠标操作.Linux中许多常用命令是必须掌握的,也有 ...
- linux设置板卡时间,嵌入式VS-RK3288板卡 Linux 修改BOOTDELAY介绍
嵌入式VS-RK3288板卡 Linux 修改BOOTDELAY介绍 uboot进入kernel中间的延时时间可以通过BOOTDELAY这个宏来控制.修改uboot/common/Kconfig文件 ...
最新文章
- 2019年9月2日开学!寒假时间也定了……
- 个人计算机技术分享,一个计算机类本科毕业设计分享
- mac book file management system
- anaconda安装后只有几个文件,大量文件缺失,开始栏里没有图标的解决方法
- linux gnome3安装_Windows 10安装与管理WSL体验原生Linux系统
- jvm内存配置参数_性能测试连载 (23)jvm内存参数设置
- nginx启动期做了哪些事
- APP 文档服务器,app服务器
- 如何使create-react-app与Node Back-end API一起使用
- AGC008D K-th K
- Spring_day4
- fdisk添加分区引起的Linux Error: 22: Invalid argument
- DelphiXE环境认知(第一章 Project Options)
- 微软逆转互联网战局,错过了智能手机却君临游戏帝国
- 采用ATSC标准、欧洲DVB-T和日本ISDB-T标准的国家
- PHP反序列化-__wakeup()方法漏洞(CVE-2016-7124)
- 基于特征全埋点的精排ODL实践总结
- 字符串函数strtolower解析
- Dango Web 开发指南 学习笔记 1
- 日常生活中常用的五星级句子
热门文章
- 9.10 安卓常用工具类之一 权限 ---- PermissionUtil
- 收楼了心情忐忑不安,该花钱请验房师来验房吗?找一个验房师需要多少钱,验房标准价格是多少,验房师现场验收出二百多个问题值不值
- IDEA 打包 spark 程序 并在远程 hadoop HA 上运行测试
- 华为nova7se和华为nova7的区别 哪个好
- java中ws程序是什么意思_Java Web服务对象(JAX-WS)生命周期
- android 4.4 x86 iso,安卓x86 4.4 iso下载
- 培养意志力的黄金法则
- 【学习笔记】联邦计算
- python输出为什么会有b_【已解决】为什么Python打印数据显示为b‘XXX’格式
- 完全k叉树(CCPC-Wannafly Comet OJ 夏季欢乐赛(2019) A)