nsswitch與pam

nsswitch:

  Network Service Switch,網絡服務轉換,讓多種應用程序能夠靈活實現名稱解析的通用框架

  解析庫:

    文件、MySQL、NIS、LDAP、DNS


    通用框架,與各存儲交互的實現:

      /usr/lib64/libnss*,/lib64/libnss*


    配置文件:/etc/nsswitch.conf

      db: store1,store2,...

    每種存儲中查找的結果狀態:STATUS => success | not found | unavail | tryagain

    對應於每種狀態參數的行爲:ACTION => return | continue


pam:Pluggable Authentication Module,插入式認證模塊

  關於pam的更詳細的知識請參考《Linux-pam sag.pdf》,百度網盤中有

  認證庫:

    文件、MySQL、NIS、LDAP


    通用框架,與各存儲交互的實現,以及多種輔助性功能:

      /usr/lib64/security/,/lib64/security/


    配置文件:/etc/pam.conf

      /etc/pam.d/*.conf

      通常每個應用使用一個單獨的配置文件:

      配置文件中每行定義一種檢查規則,其格式如下:

        type control module-path module-arguments

    type:檢查功能類別,主要有以下幾種

      auth:與帳號認證相關的認證和授權檢查

      account:與帳號管理相關的非認證功能

      password:用戶修改密碼時密碼檢查規則

      session:用戶獲取到服務之前或使用服務完成之後(還未退出時)要進行的一些附加性操作


    control:同一種功能的多個檢查之間如何進行組合。第一個失敗了第二個怎麼辦

      有兩種實現機制:

        a) 使用一個關鍵詞來定義。例如sufficient,required,requisite

        b) 使用一或多個"status=action"形式的組合表示


      簡單機制:

        required:若第一個規則檢查通過,後面的同類規則依然要檢查;若第一個規則檢查未通過,後面的同類規則依然要檢查,但是最終其無法通過檢查規則的限制

        requisite:若第一個規則檢查通過,後面的同類規則依然要檢查;若第一個規則檢查未通過,後面的同類規則無須再檢查,其擁有一票否決權

        sufficient:若第一個規則檢查通過,後面的同類規則無須再檢查,其擁有一票通過權;若第一個規則檢查未通過,而後面的某個同類規則檢查通過,那麼其後面的同類規則無須再檢查

        optional:可選,其規則僅供參考,通過也可以,不通過也可以,不影響最終結果

        include:包含指定文件中的相同類別的所有規則


      複雜機制:[status1=action1,status2=action2,.....]

        status:返回狀態

        action:

          ok:一票通過權

          done

          die:一票否決權

          ignore:可選,其規則僅供參考,通過也可以,不通過也可以,不影響最終結

          bad:我說不過就不過,但是沒有一票否決權,後面依然要檢查

          reset

    module-path:模塊路徑

      /lib64/security:此目錄下的模塊引用時可使用相對路徑,否則必須使用絕對路徑

    module-arguments:模塊參數


模塊:

  pam_shells.so

  pam_limits.so

    該模塊通過讀取配置文件完成用戶對系統資源的使用控制

      /etc/security/limits.conf

      /etc/security/limits.d/*

    語法:

      <domain> <type> <item> <value>

    <domain>:

      username

      @group

      *:所有用戶

    <type>:

      hard:由root設定,通過kernel強制生效

      soft:由用戶自行修改,但不能超過hard的限制

      -:hard和soft同時限定

    <item>:

      nofile:所能夠同時打開的最大文件數量

      nproc:所能夠同時運行的最大進程數量

      msqqueue:使用的POSIX消息隊列能夠佔用的最大內存空間

      sigpending:所能夠使用的最大信號數量

    <value>


ulimit命令:

  ulimit -n #:所能夠同時打開的最大文件數量

  ulimit -u #:所能夠同時運行的最大進程數量

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章