http://www.ibm.com/developerworks/cn/linux/l-pam/
http://docs.oracle.com/cd/E19253-01/819-7056/ch3pam-01/index.html

http://blog.csdn.net/shenlan211314/article/details/6569592  这篇文章较详细

打开/etc/pam.d/目录下的任何一个配置文件,其中每行的验证规则都使用如下所示的语法格式:
    Type  Control-flag  Module-path  Module-arguments
    其中每行代表一个独立的验证方式,每个配置文件可以由多种验证规则相互叠加而成。验证时PAM-API会按照从上往下的方式一一读取这些验证规则,并根据其中的控制标志做出相应的动作。

required    某个失败,继续往下,直到所有完成后。
requisite    某个失败,所有结束
sufficient    某个成功,所有结束

验证服务模块-用于授予用户访问帐户或服务的权限。提供此服务的模块可以验证用户并设置用户凭证。

帐户管理模块-用于确定当前用户的帐户是否有效。提供此服务的模块可以检查口令或帐户的失效期以及限时访问。

会话管理模块-用于设置和终止登录会话。

口令管理模块-用于强制实施口令强度规则并执行验证令牌更新。

[root@84-monitor pam.d]# cat sshd
#%PAM-1.0
auth       required     pam_sepermit.so
auth       include      password-auth
account    required     pam_nologin.so
account    include      password-auth
password   include      password-auth
# pam_selinux.so close should be the first session rule
session    required     pam_selinux.so close
session    required     pam_loginuid.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session    required     pam_selinux.so open env_params
session    optional     pam_keyinit.so force revoke
session    include      password-auth

[root@84-monitor pam.d]# cat password-auth-ac
#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth        required      pam_env.so
auth        sufficient    pam_unix.so nullok try_first_pass
auth        requisite     pam_succeed_if.so uid >= 500 quiet
auth        required      pam_deny.so

account     required      pam_unix.so
account     sufficient    pam_localuser.so
account     sufficient    pam_succeed_if.so uid < 500 quiet
account     required      pam_permit.so

password    requisite     pam_cracklib.so try_first_pass retry=3 type=
password    sufficient    pam_unix.so sha512 shadow nullok try_first_pass use_authtok
password    required      pam_deny.so

session     optional      pam_keyinit.so revoke
session     required      pam_limits.so
session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session     required      pam_unix.so

[root@84-monitor pam.d]# cat login
#%PAM-1.0
auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so
auth       include      system-auth
account    required     pam_nologin.so
account    include      system-auth
password   include      system-auth
# pam_selinux.so close should be the first session rule
session    required     pam_selinux.so close
session    required     pam_loginuid.so
session    optional     pam_console.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session    required     pam_selinux.so open
session    required     pam_namespace.so
session    optional     pam_keyinit.so force revoke
session    include      system-auth
-session   optional     pam_ck_connector.so

减号的含义是如果因为系统里没有这个模块而不能载入的话,pam库将不记录日志。

linux-PAM (Pluggable Authentication Modules for linux)是一个共享库套件,它能使本地系统管理员选择应用程序如何认证用户,

常见的应用程序有login,sshd,su,sudo,passwd

login的pam日志,操作为在本地控制台登录输入用户名与密码
Dec  9 11:34:31 localhost login: pam_unix(login:session): session opened for user root by LOGIN(uid=0)
Dec  9 11:34:31 localhost login: ROOT LOGIN ON tty1
Dec  9 11:42:06 localhost login: pam_unix(login:session): session closed for user root

sshd的pam日志,操作为ssh连接一个服务器并输入用户名与密码,查看日志,然后退出
Dec  9 11:38:52 localhost sshd[30208]: Accepted password for root from 192.168.1.88 port 50718 ssh2
Dec  9 11:38:52 localhost sshd[30208]: pam_unix(sshd:session): session opened for user root by (uid=0)
Dec  9 11:40:13 localhost sshd[30208]: pam_unix(sshd:session): session closed for user root
 
su的pam日志,操作为用普通用户登录,然后su -输入root密码,然后退出
Dec  9 11:46:02 localhost su: pam_unix(su-l:session): session opened for user root by a1(uid=500)
Dec  9 11:47:27 localhost su: pam_unix(su-l:session): session closed for user root

sudo的pam日志,第一条是输入普通用户密码错误,第二条是此普通用户不在sudoers file里
Dec  9 11:58:47 localhost sudo: pam_unix(sudo:auth): authentication failure; logname=a1 uid=500 euid=0 tty=/dev/pts/0 ruser=a1 rhost=  user=a1
Dec  9 11:59:00 localhost sudo:       a1 : user NOT in sudoers ; TTY=pts/0 ; PWD=/home/a1 ; USER=root ; COMMAND=/bin/df -h
Dec  9 14:16:25 localhost sudo:       a1 : TTY=pts/0 ; PWD=/home/a1 ; USER=root ; COMMAND=/sbin/fdisk -l
Dec  9 14:17:03 localhost sudo:       a1 : user NOT in sudoers ; TTY=pts/0 ; PWD=/home/a1 ; USER=root ; COMMAND=/sbin/fdisk -l
修改下面,将a1前的#号去掉,即时生效,然后执行sudo时会成功。
[root@localhost pam.d]# visudo
## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
#a1 ALL=/bin/df -h,/sbin/fdisk

passwd的pam日志,操作为普通用户登录,然后passwd改自己的密码,第一条日志是当前密码输入错误,第二条是因为太复杂密码不匹配,最后一条是设置成功
Dec  9 11:50:22 localhost passwd: pam_unix(passwd:chauthtok): authentication failure; logname=a1 uid=500 euid=0 tty=pts/0 ruser= rhost=  user=a1
Dec  9 11:55:44 localhost passwd: pam_cracklib(passwd:chauthtok): pam_get_authtok_verify returned error: Failed preliminary check by password service
Dec  9 11:57:30 localhost passwd: pam_unix(passwd:chauthtok): password changed for a1

linux库之pam的更多相关文章

  1. 查看linux库文件32位还是64位

    查看linux库文件32位还是64位 分类: linux2014-09-25 09:46 238人阅读 评论(0) 收藏 举报 objdump -a  *.a objdump -a  *.so

  2. linux库文件编写入门(笔记)

    linux库文件的编写 作者: laomai地址: http://blog.csdn.net/laomai 本文主要参考了如下资料⑴hcj写的"Linux静态/动态链接库的创建和使用&quo ...

  3. Linux库的创建和使用

    Linux库的概念 库是一种软件组建技术,里面封装了数据和函数,提供给用户程序调用.使用库能够使程序模块化,提高编译速度,实现代码重用,易于升级. Windows系统提供了大量静态链接库(.lib)和 ...

  4. VisualGDB系列11:Linux C++项目中使用外部Linux库

    根据VisualGDB官网(https://visualgdb.com)的帮助文档大致翻译而成.主要是作为个人学习记录.有错误的地方,Robin欢迎大家指正. 在<使用VS创建Linux静态库和 ...

  5. Linux库文件路径的添加

    库文件在连接(静态库和共享库)和运行(仅限于使用共享库的程序)时被使用,其搜索路径是在系统中进行设置的.一般 Linux 系统把 /lib 和 /usr/lib 两个目录作为默认的库搜索路径,所以使用 ...

  6. linux 库文件配置

    linux 库文件配置 /etc/ld.so.conf 或 /etc/ld.so.conf.d/*.conf

  7. Linux下基于PAM机制的USB Key的制作

    摘自:https://server.zzidc.com/fwqpz/157.html USB Key这个概念最早是由加密锁厂家提出来的,加密锁是用来防止软件盗版的硬件产品,加密锁的概念是使安装在计算机 ...

  8. linux库

     将库函数打包成一个单元使之能够在运行时被多个进程共享的技术,这种技术能够节省磁盘空间和RAM. 一. 静态库:1.概念:    静态库就是一些目标文件的集合,以.a结尾.静态库在程序链接的时候使用, ...

  9. Linux 库文件详解

    转自: http://www.cppblog.com/deane/articles/165216.html http://blog.sciencenet.cn/blog-1225851-904348. ...

随机推荐

  1. Java关键字final、static使用总结(转)

    Java关键字final.static使用总结   一.final        根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类.非抽象类成员方 ...

  2. VS2010编译Qt5.4.0静态库

    http://www.kavenblog.com/?p=375 1.Qt的跨平台十分优秀,但是在Windows上是还是会有许多问题,其中之一就是动态链接库的问题,Qt程序的发布必须带一个体积不小的DL ...

  3. PB常用日期

    用一条语句写成的有关日期函数 //1.生肖(年份参数:int ls_year  返回参数:string): mid(fill('鼠牛虎兔龙蛇马羊猴鸡狗猪',48),(mod(ls_year -1900 ...

  4. 【LeetCode OJ】Word Break

    Problem link: http://oj.leetcode.com/problems/word-break/ We solve this problem using Dynamic Progra ...

  5. 【LeetCode OJ】Max Points on a Line

    Problem: Given n points on a 2D plane, find the maximum number of points that lie on the same straig ...

  6. HDU 5823 (状压dp)

    Problem color II 题目大意 定义一个无向图的价值为给每个节点染色使得每条边连接的两个节点颜色不同的最少颜色数. 对于给定的一张由n个点组成的无向图,求该图的2^n-1张非空子图的价值. ...

  7. 四则运算<3>单元测试

    经过分析图一的结果正确,因为输出到文件是为了打印,不要求在线答题功能,因此为实现答题功能. 经过分析,结果正确,满足了选择要求. 选择这六组测试用例的原因是这六组用例将有无乘数法,有无括号,有无负数, ...

  8. document操作

    1.windows对象操作 事件两个参数sender:代表事件源,即谁触发的事件e:代表事件数据load(sender,e)事件是一个特殊的委托(代理)2.document对象操作找元素:1.根据id ...

  9. strlen和mb_strlen的区别

    在php中常见的计算字符串长度的函数有:strlen和mb_strlen.当字符全是英文字符的时候,两者是一样.这里主要比较一下,中英文混排的时候,两个计算结果. 在PHP中,strlen与mb_st ...

  10. 怎么在手机浏览器上访问电脑本地的文件,局域网内,自建WiFi也可以

    首先,电脑要有Mysql+Apache+PHP环境,我直接用Wampsever,开启环境后手机和电脑要再同一个局域网内,然后电脑上打开win+R,输入cmd,再输入ipconfig,就可以看着这台的电 ...