Linux之nsswitch and pam

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ù)找下一個
示例:
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)用其它配置文件中的同種功能檢測機制
  • 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
  • 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 :所有時間
        ! : 非
        & : 和
        | : 或者
        
    

模塊配置示例三:

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
  • vim /tmp/allowgroup

    • 將允許的組添加到些文件中,以下只是允許s1,s2組的用戶遠程登陸
    s1
    s2
    ```Account
    
    
    

PAM工作原理圖

img
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市荣茫,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌弹谁,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件芝加,死亡現(xiàn)場離奇詭異备畦,居然都是意外死亡,警方通過查閱死者的電腦和手機仁期,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進店門桑驱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人跛蛋,你說我怎么就攤上這事熬的。” “怎么了赊级?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵押框,是天一觀的道長。 經(jīng)常有香客問我理逊,道長橡伞,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任晋被,我火速辦了婚禮兑徘,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘墨微。我一直安慰自己道媚,他們只是感情好,可當我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布翘县。 她就那樣靜靜地躺著最域,像睡著了一般。 火紅的嫁衣襯著肌膚如雪锈麸。 梳的紋絲不亂的頭發(fā)上镀脂,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天,我揣著相機與錄音忘伞,去河邊找鬼薄翅。 笑死,一個胖子當著我的面吹牛氓奈,可吹牛的內(nèi)容都是我干的翘魄。 我是一名探鬼主播,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼舀奶,長吁一口氣:“原來是場噩夢啊……” “哼暑竟!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起育勺,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤但荤,失蹤者是張志新(化名)和其女友劉穎罗岖,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體腹躁,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡桑包,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了纺非。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片哑了。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖铐炫,靈堂內(nèi)的尸體忽然破棺而出垒手,到底是詐尸還是另有隱情,我是刑警寧澤倒信,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站泳梆,受9級特大地震影響鳖悠,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜优妙,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一乘综、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧套硼,春花似錦卡辰、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至雾鬼,卻和暖如春萌朱,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背策菜。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工晶疼, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人又憨。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓翠霍,卻偏偏與公主長得像,于是被迫代替她去往敵國和親蠢莺。 傳聞我的和親對象是個殘疾皇子寒匙,可洞房花燭夜當晚...
    茶點故事閱讀 42,786評論 2 345

推薦閱讀更多精彩內(nèi)容