1、理论知识

1.1、PAM模块

1.1.1、PAM的介绍

Pluggable Authentication Modules简称PAM,是一个微缩的可插入认证模块(PAM is an acronym for Pluggable Authentication Modules)

1.1.2、PAM的结构

1)模块层(PAM服务模块) - PAM结构最底层

作用:为接口层提供用户鉴别等服务

-- 验证用户名、密码、账号是否过期等

-- 完成账户管理、会话管理和口令管理等

2)应用程序接口层(PAM API) - PAM结构中间层

作用:

-- 向上屏蔽用户鉴别等过程的细节

-- 向下调用模块层的具体模块提供特定的服务

接口分类:

接口与模块相对应类型(调用下层特定接口):

-- 鉴别类接口

-- pam_authenticate() 鉴别用户

-- pam_setcred() 修改用户密码信息

-- 账号类接口

-- pam_acct_mgmt() 鉴别用户账号是否有权限登录以及账号是否过期

-- 会话类接口

-- pam_open_session()

-- pam_close_session()

-- 口令类接口

-- pam_chauthok()

接口与模块不相对应(对底层模块提供支持以及实现应用程序与模块的通讯):

-- 管理性接口

-- pam_start() 标记PAM事务开始

-- pam_end() 标记PAM事务结束

-- pam_get_item() 获取PAM事务状态信息

-- pam_set_item() 设置PAM事务状态信息

-- pam_str() 输出PAM事务错误信息

-- 应用程序与模块间通讯接口

-- pam_start() 应用程序初始化可调用此函数存放用户名之类的信息到PAM接口层

-- pam_putenv() 向应用程序传递特定的环境变量

-- pam_getenv() 获取应用程序环境变量

-- pam_getenvlist() 获取应用程序环境变量

-- 用户与模块间的通讯接口

-- pam_start()函数可通过会话式回调函数,让底层模块通过他读写模块相关的鉴别信息

-- 模块间通讯接口

-- 相互独立的模块可通过调用 pam_get_item()与pam_set_item()共享某些与鉴别会话有关的公共信息。

-- 读写模块状态信息接口

-- 接口pam_get_data()和pam_set_data()用于按照PAM句柄要求获取和设置特定的模块信息。

3)应用程序层 - PAM结构最上层

灵活调用中间层的各种鉴别功能接口

1.1.3、PAM验证文件配置目录

ls /etc/pam.d/

显示如下:

chfn                 newrole           runuser            ssh-keycat

chsh                 other             runuser-l          su

config-util          passwd            smartcard-auth     sudo

crond                password-auth     smartcard-auth-ac  sudo-i

fingerprint-auth     password-auth-ac  smtp               su-l

fingerprint-auth-ac  remote            smtp.postfix       system-auth

login                run_init          sshd               system-auth-ac

如上所示,其中sshd是sshd服务的验证文件(定义验证规则,服务找不到相应的验证文件则会与other匹配)

1.1.4、验证文件的语法

1)PAM的格式

vim编辑/etc/pam.d/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

由以上可知PAM验证文件格式分为四列:

module_type   control_flag   module_path   module_optional

2)module-type(模块类型)

-- auth(验证模块) - 用于验证用户或设置/销毁凭证

-- account(账户管理模块) - 执行访问、账户及凭证有效期、密码限制/规则等操作

-- session(会话管理模块) - 初始化或终止会话

-- passwd(密码模块) - 执行密码更改或更新操作

3)control-flag(控制标记)

-- required - 模块须有返值才通过验证,成功继续下一模块;失败需待同一stack中所有模块执行完才返值到应用程序

-- requisite - 模块须有返值才通过验证,成功继续下一模块;失败将不再执行同一stack内任何模块而返值给应用程序

-- sufficient - 模块返成功值则通过验证,成功则停止执行;失败值可忽略,继续执行下一模块

-- optional - 模块可选,模块返值对认证不起关键作用,无论成败都继续执行下一模块,返值一般被忽略

-- include -

4)module-path(模块路径)

模块的位置查找

find / -name pam_sepermit.so

显示如下:

/lib64/security/pam_sepermit.so

如上所示:

模块位于“/lib64/security/”目录下(可只写模块名称,32位系统位置不同)

5)module-optional(模块选项,可选)

常见公用选项如下:

-- debug - 该模块调用syslog()将调试信息写入系统日志

-- no_warn - 该模块不向应用程序发送警告信息

-- use_first_pass - 使用同一stack首次获取的密码(不向用户提示)

-- try_first_pass - 尝试使用同一stack首次获取的密码(不通过则向用户提示)

-- use_mapped_pass - 使用映射过的密码(不向用户提示)

-- expose_account - 允许该模块显示用户账号等信息

1.2、PAM-MySQL的介绍

----------------------------------------------------------------------

参阅资料:

Linux-PAM的简介:

动态链接库的概念:

pam-mysql官网:

yum源:

linux pam mysql,Linux-PAM PAM-MySQL的总结相关推荐

  1. linux pam 解锁_linux中pam模块

    一.pam简介 Linux-PAM(linux可插入认证模块)是一套共享库,使本地系统管理员可以随意选择程序的认证方式. 换句话说,不用(重新编写)重新编译一个包含PAM功能的应用程序,就可以改变它使 ...

  2. linux系统pam配置文件,【PAM】 How to Configure and Use PAM in Linux?

    一.什么是PAM PAM(Pluggable Authentication Modules )是由Sun提出的一种认证机制. 它通过提供一些动态链接库和一套统一的API,将系统提供的服务 和该服务的认 ...

  3. linux pam 版本号,Linux中pam板块详解

    pam简介 Linux-PAM(linux可插入认证板块)是一套共享库,使本地系统管理员可以随便选择程序的认证方式.换句话说,不使用重新编译一个包含PAM功能的应使用程序,即可以改变它用的认证机制.这 ...

  4. linux mysql c语言编程,在Linux下通过C语言操作MySQL数据库

    2010年1月27日 晚 22:10 作者:longyun(http://www.linuxdiyf.com/mailto:mtd527@gmail.com) 续:小弟最近想学习数据库,并想开发一个简 ...

  5. linux 修改mysql root密码_Linux mysql如何更改root密码

    说到root密码,很多人想到的是电脑系统的root账号密码,其实mysql也有root密码,那么在Linux系统中,mysql要如何修改root密码呢?特别是忘记了root密码要怎么办? 通过登录my ...

  6. linux下mysql授权_linux下mysql命令(用户授权、数据导入导出)

    1,linux下启动mysql的命令: 复制代码 代码示例: mysqladmin start /ect/init.d/mysql start (前面为mysql的安装路径) 2,linux下重启my ...

  7. 基于Linux(LAMP)平台搭建MYsql数据库(二)

    接着上一章安装MySQL数据库<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" ...

  8. mysql linux centos 安装_Linux centos 下在线安装mysql

    1,查看是否有安装过mysql: #rpm -qa | grep mysql 如果无结果返回,说明没有安装Mysql,可以全新安装. 2,查看在线服务器提供的Mysql相关的安装包有哪些: #yum ...

  9. Linux+mysql重置_linux环境mysql重置密码

    mysql重置密码 Linux环境下,忘记mysql密码怎么办?这里提供两种解决方案. 第一种方案: 在my.cnf配置文件中添加"跳过登陆密码验证"配置项 sed -i '/\[ ...

  10. Linux下eclipse及mysql安装,c++访问mysql数据库

    这两天在学习linux下用c++访问mysql,碰到一堆问题,记录一下. 1.mysql安装: 公司的电脑是64位的,安装的是64为的RHEL4,安装如下三个包: MySQL-client-5.1.4 ...

最新文章

  1. 推荐并简要分析一个silverlight的相册DEMO--ImageSnipper(V2)
  2. python导入模块快捷键_Python中的模块导入和读取键盘输入的方法
  3. Ubuntu16.04 安装ftp
  4. Python编程语言学习:在根目录的py文件内调用某叶目录文件内的包/库或者函数(常用在GUI编程)之详细攻略
  5. go---字符串截取
  6. restful解决什么问题_当您陷入RESTful,WordPress和一个困难的地方时,如何解决CMS问题...
  7. python怎么画参数函数图像_详解pandas.DataFrame.plot() 画图函数
  8. 面试官十大常问面试问题总结
  9. win10安装kali组双系统
  10. COM技术入门(1)
  11. php 卷积神经网络,PyTorch上实现卷积神经网络CNN的方法
  12. idea java maven 打包,idea maven项目 基于idea自己打包方式 以及使用maven插件打包的三种方式...
  13. android studio 自定义皮肤
  14. 万能查看电脑连接过的WiFi密码
  15. 零中频数字接收机原理
  16. 努比亚手机安装linux,努比亚红魔5G电竞手机将发布;Linux版荣耀MagicBook降价促销...
  17. 将Excel表格中的文本格式存储的数字批量转换为数字
  18. 把图片转成像素点保存到Excel中
  19. midi java_Java程序中添加播放MIDI音乐功能的实现方法详解
  20. 基于nginx搭建在线播放mp4

热门文章

  1. java服务器Nav寻路
  2. luoguP3799 妖梦拼木棒
  3. 【系统分析师之路】2015年系统分析师上午综合知识真题
  4. htc+820+android+5.0,htc 820s和htc one m8哪个好?两者有什么区别?
  5. KISSY基础篇乄KISSY之Node(2)
  6. 【大远科技】美国SEC详细介绍
  7. 【erdas】使用行政界线分割栅格影像
  8. 黑马程序员_Java_反射
  9. openwrt拨号上网设置
  10. Linux - 拨号上网