传统的UNIX身份鉴别机制原理

传统的UNIX身份鉴别即口令认证方式,它主要通过识别用户的用户名或者UID号获取在/etc/shadow中存放的对应用户密码密文等信息,然后获取用户输入密码并采用crypt()函数对获得的输入密码进行加密,当然加密方式是与原用户密码的加密方式是一致的,然后将这两个密文进行比较,如果一致则通过验证,如果不一致则拒绝赋予权限。接下来以登录Linux系统为例,说明登录过程中传统UNIX认证方式对用户帐号的鉴别过程。Linux用户在登录主机时会出现一个输入账号及密码的界面,Linux会先找寻 /etc/passwd 里面是否有这个账号,如果拒绝用户登录请求,如果有的话则将该账号对应的 UID 、GID、该账号的主目录与shell设定 一并读出,接着就是将用户输入密码进行加密,然后读取/etc/shadow 中存放的密码,将这个密码与用户输入并加密的密码进行核对,如果核对成功,则进入系统。

Linux 提供getpwnam()来获取用户登录的相关信息,返回的是一个passwd型的结构体,该结构体就包含了用户帐号的各种信息,该结构体如下所示。

PAM框架

PAM 为了实现其插件功能和易用性,采取了分层设计思想。就是让各鉴别模块从应用程序中独立出来,然后通过 PAM的API、 SPI作为两者联系的纽带,这样应用程序就可以根据需要灵活地在其中“插入”所需要的鉴别功能模块,从而真正实现了在认证和鉴别基础上的随需应变。PAM框架如下图所示:

最新文章

  1. CrashMonkey4IOS App测试
  2. Python:如何删除文件中的空白行?
  3. Lock读写锁技术的妙用
  4. Java中的IO流系统详解(转载)
  5. 文件流StreamReader和StreamWriter的使用
  6. HTML+CSS学习笔记 (13) - CSS代码缩写,占用更少的带宽
  7. linux源代码阅读笔记 linux文件系统(二)
  8. Enterprise Suse运维
  9. SHELL学习笔记----IF条件判断,判断条件
  10. JQuery设置input属性(disabled、enabled)
  11. Maven deploy
  12. Github Blog 搭建手册
  13. C#中另辟蹊径解决JSON / XML互转的问题
  14. [Jenkins]怎么删除jenkins里项目配置的svn记录
  15. 在cmd中设置字体
  16. CodeForces 700B Connecting Universities
  17. c#中常用集合类和集合接口之集合类系列【转】
  18. C++进程间通信的十一种方法
  19. 转:IIS 应用程序池 内存 自动回收
  20. yml实例

热门文章

  1. 【九度OJ】题目1080:进制转换 解题报告
  2. 【机器学*】k-*邻算法(kNN) 学*笔记
  3. 【LeetCode】789. Escape The Ghosts 解题报告(Python & C++)
  4. codeforces626D . Jerry's Protest
  5. 51Nod 1279:扔盘子(二分||单调栈)
  6. Spring Boot实战二:集成Mybatis
  7. 初识JavaScript变量
  8. Capstone CS5266替代AG9311 Type-C转HDMI带PD3.0+USB3.0拓展坞方案
  9. 基于Spring MVC + Spring + MyBatis的【医院就诊挂号系统】
  10. k8s污点