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

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

菜鸟学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
相关文章
|
1月前
|
算法 Linux
【Linux笔记】压缩、解压文件的 4 种方式。tar、gzip、gunzip、zip、unzip、7z命令使用方法
【Linux笔记】压缩、解压文件的 4 种方式。tar、gzip、gunzip、zip、unzip、7z命令使用方法
|
14天前
|
Linux API C语言
FFmpeg开发笔记(一)搭建Linux系统的开发环境
本文指导初学者如何在Linux上搭建FFmpeg开发环境。首先,由于FFmpeg依赖第三方库,可以免去编译源码的复杂过程,直接安装预编译的FFmpeg动态库。推荐网站<https://github.com/BtbN/FFmpeg-Builds/releases>提供适用于不同系统的FFmpeg包。但在安装前,需确保系统有不低于2.22版本的glibc库。详细步骤包括下载glibc-2.23源码,配置、编译和安装。接着,下载Linux版FFmpeg安装包,解压至/usr/local/ffmpeg,并设置环境变量。最后编写和编译简单的C或C++测试程序验证FFmpeg环境是否正确配置。
35 8
FFmpeg开发笔记(一)搭建Linux系统的开发环境
|
1月前
|
Linux 网络安全 开发工具
【Linux笔记】常用的Linux的指令
【Linux笔记】常用的Linux的指令
|
2月前
|
Linux 数据安全/隐私保护 Android开发
10 个最佳 Linux 开源笔记软件
10 个最佳 Linux 开源笔记软件
109 1
|
2月前
|
缓存 Shell Linux
《linux鸟哥的私房菜》笔记(下)
《linux鸟哥的私房菜》笔记(下)
24 0
|
2月前
|
存储 Unix Linux
《LINUX鸟哥的私房菜》笔记(上)
《LINUX鸟哥的私房菜》笔记(上)
49 0
|
4月前
|
架构师 Linux 网络性能优化
linux内核升级笔记
linux内核升级笔记
28 0
|
4月前
|
存储 SQL 开发框架
国产化之路 Linux Mono下的asp.net 开发笔记(三)
国产化之路 Linux Mono下的asp.net 开发笔记(三)
|
4月前
|
存储 SQL 开发框架
国产化之路 Linux Mono下的asp.net 开发笔记(二)
国产化之路 Linux Mono下的asp.net 开发笔记(二)
|
4月前
|
存储 开发框架 .NET
国产化之路 Linux Mono下的asp.net 开发笔记(一)
国产化之路 Linux Mono下的asp.net 开发笔记(一)