天天看點

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 #:所能夠同時運作的最大程序數量

本文轉自 忘情OK  51CTO部落格,原文連結:http://blog.51cto.com/itchentao/1924393,如需轉載請自行聯系原作者