菜鸟学Linux 第069篇笔记 nsswitch, PAM

本文涉及的产品
RDS AI 助手,专业版
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
简介:

菜鸟学Linux 第069篇笔记 nsswitch, PAM



管理资源授权服务

Authentication (认证)

Authorization (授权)

Audition (审计)




FQDN --> IP   (名称解析库)

dns

/etc/hosts

mysql

nis (Network Information System)

ldap (LlightWeight Directory Access Protocol)  查询数据比mysql要快一个数据级

对查询数据量比较大的时候比较适用,写速度相对慢一些




nsswitch (Network Service Switch)

位于程序和名称解析方式中间位置,实现为程序提供多种解析方式的一个中转站,比如说

当一个程序当前使用/etc/asswd来查询用户的ID,但现在程序又想使用基于mysql来查询用户ID

,这样就需要重新编写代码让该程序支持基于mysql来进行查询用户的ID,而nsswitch则是用来简化程序在设计名称解析时所使用的代码,当程序需要使用名称解析时,直接向该nsswitch程序发送使用何种解析方式(如mysql),该程序则将其指向对应的解析方式(mysql)

这便为nsswitch的作用(个人见解)




配置文件(定义某种名称解析服务通过哪种手段实现)

/etc/nsswitch.conf

passwd: file

hostname: file dns


而上面所定义的库如file dns,在执行时其实是在调用相应的库文件实现名称解析的

/usr/lib

libnss_compat.so

libnss_db.so

libnss_dns.so

libnss_files.so

libnss_hesiod.so

libnss_ldap.so

libnss_nisplus.so

libnss_nis.so

libnssutil3.so

libnss_winbind.so

libnss_wins.so



查找对应服务返回结果

SUCCESS

NOTFOUND

UNAVAIL

TRYAGAIN




命令

getent  (get entries from administrative database)

e.g. # getent hosts 

 # getent passwd

 # getent passwd root 




认证

和名称解析是两套独立运行的机制,此是用来比对用户输入的字符和某种认证机制所提供的是否一致,nsswitch只提供去哪里去找,而比对与用户所输入的用户名密码则是用认证来实现的, 认证本身也可以不用借助名称解析服务去查找用户存放的密码位置


验证密码

123456 --> md5,salt

passwd


用户认证过程

解析:root-->nsswitch.conf-->passwd:files

解析:'12345(password)' --> nsswitch.conf --> shadow:files

auth: 123456 --> md5(salt) --> compare




Authentication机制

md5:/etc/shadow

mysql

ldap

nis

Kerberos



PAM (类似nsswitch,只不过此程序是用来指定用户程序用哪里程序认证机制)

(Pluggable Authentication Modules)


库文件/lib/security

pam_*

pam_unix.so

[options: nullok shadow md5]

pam_unix.so use_authok

pam_sells.so

pam_securetty.so

pam_listfile

pam_rootok.so

pam_limits.so




配置文件

/etc/security/

/etc/pam.d/

type control module-path [module-arguments]


type

account

auth

password

session


control

required (不过,但继续向下检查)

requisite  (不过,不需要向下检查,过还需向下检查)

sufficient (过,则直接通过。 没通过不影响最终结果)

optional (可选)

include (权利移交给其它文件) [value=action]


action

ok

done

bad

die

ignore

reset


required [success=ok new_authok_reqd=ok ignore=ignore default=bad]

requisite [success=ok new_authtok_reqd=ok ignore=ignore default=die]

sufficient [success=done new_authtok_reqd=done default=ignore]

optional [success=ok new_authtok_reqd=ok default=ignore]




PAM 里边的每一个模块的详细配置说明,请参照 linux-PAM_SAG.pdf文档

SAG (System Administrators' Guide)  此文档可以直接百度到有官方网站

本文转自Winthcloud博客51CTO博客,原文链接http://blog.51cto.com/winthcloud/1888372如需转载请自行联系原作者

Winthcloud
相关文章
|
Ubuntu Linux Python
Tkinter错误笔记(一):tkinter.Button在linux下出现乱码
在Linux系统中,使用Tkinter库时可能会遇到中文显示乱码的问题,这通常是由于字体支持问题导致的,可以通过更换支持中文的字体来解决。
947 0
Tkinter错误笔记(一):tkinter.Button在linux下出现乱码
|
10月前
|
运维 监控 中间件
Linux运维笔记 - 如何使用WGCLOUD监控交换机的流量
WGCLOUD是一款开源免费的通用主机监控工具,安装使用都非常简单,它可以监控主机、服务器的cpu、内存、磁盘、流量等数据,也可以监控数据库、中间件、网络设备
|
Unix Linux 开发工具
linux笔记 diff及patch的制作与使用
这篇文章是关于Linux系统中使用`diff`命令生成补丁文件以及使用`patch`命令应用这些补丁的详细教程和实战案例。
915 2
linux笔记 diff及patch的制作与使用
|
Linux API 开发工具
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
ijkplayer是由B站研发的移动端播放器,基于FFmpeg 3.4,支持Android和iOS。其源码托管于GitHub,截至2024年9月15日,获得了3.24万星标和0.81万分支,尽管已停止更新6年。本文档介绍了如何在Linux环境下编译ijkplayer的so库,以便在较新的开发环境中使用。首先需安装编译工具并调整/tmp分区大小,接着下载并安装Android SDK和NDK,最后下载ijkplayer源码并编译。详细步骤包括环境准备、工具安装及库编译等。更多FFmpeg开发知识可参考相关书籍。
693 0
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
Linux源码阅读笔记13-进程通信组件中
Linux源码阅读笔记13-进程通信组件中
|
Linux 开发者
Linux源码阅读笔记18-插入模型及删除模块操作
Linux源码阅读笔记18-插入模型及删除模块操作
|
数据采集 Linux
Linux源码阅读笔记20-PCI设备驱动详解
Linux源码阅读笔记20-PCI设备驱动详解
Linux源码阅读笔记19-插入删除模块实战
Linux源码阅读笔记19-插入删除模块实战
Linux源码阅读笔记17-资源分配及总线系统
Linux源码阅读笔记17-资源分配及总线系统
|
Ubuntu Linux Shell
【linux】PetaLinux 2024.1安装笔记
【linux】PetaLinux 2024.1安装笔记
2162 0