nsswitch簡介
nsswitch全稱為: network service switch,其是一個通用框架,與各種類型存儲交互的公共實現(xiàn),實現(xiàn)名稱解析服務(wù). 例如: 用戶名到ID,或者ID到用戶名,再或者IP到域名的查找方式. nsswitch加載了各存儲的api接口,并以模塊方式裝載進nsswitch中,當程序發(fā)起nsswitch的api調(diào)用時,ns會自動完成到各存儲中查找內(nèi)容.
nsswitch的各種與存儲連接的模塊
- /usr/lib64/libnss*
- /lib64/libnss*
libnss_files-2.17.so庫文件就是實現(xiàn)查找文件時, 其應(yīng)該調(diào)用的庫文件
nsswitch的配置文件
- /etc/nsswitch.conf
- 定義格式為:
passwd: files sss
解析庫的類型:
- 文件
- 關(guān)系型數(shù)據(jù)庫管理系統(tǒng)
- NIS
- LDAP
- DNS
查找結(jié)果的狀態(tài)
- Success : 成功
- Notfound : 文件存在,但沒有找到記錄
- anavail : 服務(wù)不可用
- tryagain : 重試
- 每個狀態(tài)結(jié)果的行為(action)
- return : 返回
- continue : 繼續(xù)找下一個
- 每個狀態(tài)結(jié)果的行為(action)
示例:
hosts: files nis[notfound=return] dns
只要nis服務(wù)存在,就會執(zhí)行return,只有nis服務(wù)不可用的時候, 才會再找dns服務(wù)
getent命令
從nisswitch庫中查找記錄
- 使用格式:
getent database [key]
示例:
getent passwd root : 到/etc/passwd文件中查找root用戶,并返回文件中的記錄
getent passwd 0 : 到/etc/passwd文件中查找ID為0的用戶,并返回文件中的記錄
========
pam簡介
pam,全稱為:pluggable authentication module,其提供了完成認證功能,并提供認證庫. 支持各種類型存儲,如文件,關(guān)系型數(shù)據(jù)庫管理系統(tǒng),LDAP,NIS等. pam也是一個通用框架,提供了各種類型存儲進行交互的公共實現(xiàn),以及多種輔助類功能.pam以應(yīng)用程序為中心, 并為應(yīng)用程序提供認證服務(wù).
pam的相關(guān)文件
-
/lib64/security/pam*.so
: 與各種類型存儲進行交互的庫文件 -
/etc/pam.conf
: 可為每一種調(diào)用pam完成認證功能的應(yīng)用程序提供配置 -
/etc/pam.d/*
: 通常專用于某特定的應(yīng)用程序提供配置,通常每個應(yīng)用會使用一個單獨的配置文件, 也不使用pam.conf公共的配置文件 -
/etc/security/*.conf
: 每個模塊的配置文件 -
/etc/security/*.d/*.conf
: 每個模塊的多個配置文件存放位置
pam模塊通用配置文件的格式
application type control module_path module_argument
pam模塊專用配置文件的格式
type control module_path module_argument
-
type
: 檢查功能類別-
auth
: 帳號的認證和授權(quán) -
account
: 與帳號管理相關(guān)的非認證類的功能(審計) -
password
: 用戶修改密碼時密碼復(fù)雜度檢查機制 -
session
: 用戶獲取到服務(wù)之前或使用服務(wù)完成之后,需要進行一些附加操作
-
-
Control
:同一種功能的多個檢查之間如何進行組合- 1
簡單實現(xiàn)
: 使用一個關(guān)鍵詞來定義-
required
: 必須要通過檢查,否則即為失敗,無論成功還是失敗,都需要繼續(xù)由后續(xù)的同種模塊進行檢查 -
requisite
: 一票否決,檢查失敗就直接返回失敗,檢查成功,則由后續(xù)同種功能的其它模塊進行檢查 -
suffcient
: 一票通過,檢查成功就直接返回成功,檢測失敗,則由后續(xù)同種功能的其它模塊進行檢查 -
optional
: 可選的,參考性控制機制 -
include
: 調(diào)用其它配置文件中的同種功能檢測機制
-
- 1
-
module_path
: 模塊文件路徑- 相對路徑: 相對于/lib64/security目錄
- 絕對路徑: 可位于任何可訪問的路徑
module_arguments
: 模塊的專用參數(shù)
模塊配置示例一:
pam_limits.so(資源限制)
在用戶級別實現(xiàn)對其使用的資源的限制,例如:可打開的文件數(shù)量,可運行的進程數(shù)量,可用內(nèi)存空間,修改限制的實現(xiàn)方法:
-
修改配置文件
:/etc/security/limits.conf , /etc/security/limits.d/*.conf
-
/etc/security/limits.conf
的定義格式
<domain> <type> <item> <value>
-
<domain>
: 應(yīng)用于那個對象- username
- @group
- * :所有用戶
-
<type>
: 限制類型- soft : 軟限制, 普通用戶可以修改
- hard : 硬限制,由root用戶設(shè)定,且通過kernel強制生效
- - : 軟件使用相同限制
-
<item>
: 限制的資源類型- nofile : 所能夠同時打開的最大文件數(shù)量,默認為1024
- nproc : 所能夠同時運行的進程最大數(shù)量,默認為1024
-
-
ulimit 命令
-
-u
: 最大用戶進程數(shù) -
-n
: 最大打開的文件描述符個數(shù) -
-S
: 使用軟限制調(diào)整 -
-H
: 使用硬限制調(diào)整
ulimit -SHn 200000 # 同時設(shè)置軟硬限制
-
模塊配置示例二:
pam_time.so(實現(xiàn)用戶登陸時間限制)
-
vim /etc/pam.d/sshd
- 在auth動作下,添加:
account required pam_time.so
- 在auth動作下,添加:
-
vim /etc/security/time.conf
- 在文本結(jié)束添加:
sshd;*;s1;!Al0000-2400
(對sshd服務(wù)限制s1用戶在所有終端上登陸)
service;tty;user;time service : 服務(wù)名稱 tty: 登陸tty類型 user: 用戶名稱 time : 時間 time的表示方法: Mo :星期一 Tu :星期二 We :星期三 Th :星期四 Fr :星期五 Sa :星期六 Su :星期天 Wk :周工作日 Wd :周休息日 Al :所有時間 ! : 非 & : 和 | : 或者
- 在文本結(jié)束添加:
模塊配置示例三:
pam_listfile.so(實現(xiàn)組中的用戶進行時間登陸限制)
-
vim /etc/pam.d/sshd
- 在auth動作下,添加
account required pam_listfile.so item=group sense=allow file=/tmp/allowgroup onerr=succeed
- 在auth動作下,添加
-
vim /tmp/allowgroup
- 將允許的組添加到些文件中,以下只是允許s1,s2組的用戶遠程登陸
s1 s2 ```Account