題 Linux中的PAM(可插入驗證模塊)是什麼?


Linux中的PAM(可插入驗證模塊)是什麼?我知道它用於身份驗證,但這有什麼用呢?它是如何工作的?

我正在使用CentOS 6.2。


4
2017-07-20 06:36


起源




答案:


簡而言之, PAM 該 可插拔驗證模塊

顧名思義它使用插件式架構。 PAM使得每個程序都不必實現自己的身份驗證機制。相反,它只是檢查PAM堆棧。

由於PAM是可插拔的,因此您可以根據需要配置身份驗證堆棧。針對LDAP,NIS,RADIUS,MySQL,Oracle,BerkelyDB,SQLite,RSA令牌,x509證書,平面文件,一次性密碼,Google雙因素,月亮階段等進行身份驗證都可以任意組合進行配置。

當堆棧被激活,失敗或成功時,PAM還可以觸發諸如掛載文件系統,創建目錄,記錄或任何其他操作之類的操作。

PAM是瑞士軍刀的認證,為任何應用程序提供無限的靈活性,以任何必要的方式定制身份驗證。

沒有它,每個程序都必須獨立支持所有這些功能,這確實是一個悲傷的世界。


8
2017-07-24 21:06





也許這個概述可以為您提供您想要了解的所有內容或更好的開端: http://www.linux-pam.org/Linux-PAM-html/sag-overview.html

一些引用:

Linux-PAM處理四種不同類型的(管理)任務。這些   是:認證管理;帳戶管理;會議   管理;和密碼管理。

    Here is a figure that describes the overall organization of Linux-PAM:

  +----------------+
  | application: X |
  +----------------+       /  +----------+     +================+
  | authentication-[---->--\--] Linux-   |--<--| PAM config file|
  |       +        [----<--/--]   PAM    |     |================|
  |[conversation()][--+    \  |          |     | X auth .. a.so |
  +----------------+  |    /  +-n--n-----+     | X auth .. b.so |
  |                |  |       __|  |           |           _____/
  |  service user  |  A      |     |           |____,-----'
  |                |  |      V     A
  +----------------+  +------|-----|---------+ -----+------+
                         +---u-----u----+    |      |      |
                         |   auth....   |--[ a ]--[ b ]--[ c ]
                         +--------------+
                         |   acct....   |--[ b ]--[ d ]
                         +--------------+
                         |   password   |--[ b ]--[ c ]
                         +--------------+
                         |   session    |--[ e ]--[ c ]
                         +--------------+

7
2017-07-20 06:43



完美地解釋它。你可以重新發布重要的部分。
好的,從鏈接中添加了一些文字
我在使用CentOS 6.2,在/etc/pam.d/目錄下有很多文件,如login,sshd,passwd,reboot,vsftpd等等,我的問題是如何配置這些文件,對於我配置的sshd 這個 和它的工作正常,對於其他文件我該怎麼辦...我google了很多,但無處不確答答... - max
也許您可以在初始問題中添加更多具體問題。如果它不明確,@ bahamat的答案應該沒問題?
PAM不是正在運行的守護程序,而是任何守護程序在想要驗證連接時可以進行的一系列庫調用。 - Don Simon


PAM是一個框架,可以幫助應用程序執行我稱之為“與身份驗證相關的活動”。 PAM的核心部分是一個庫(libpam)和一個PAM模塊集合,它們是文件夾/ lib / security中動態鏈接的庫(.so)文件。

注意

1.在修改之前備份所有數據和PAM配置文件。

2.請小心執行配置選項。錯誤的配置可以鎖定所有登錄訪問,包括root訪問。

3.正確閱讀PAM語法。

以下是一些例子,嘗試時要小心。

允許任何用戶在沒有密碼的情況下su到root。

為此,編輯文件/etc/pam.d/su並註釋掉與auth堆棧相關的任何行,用單行替換它們:

auth足夠pam_permit.so

測試此操作以普通用戶身份登錄並驗證您現在可以使用su - 在不提供密碼的情況下成為root用戶。

[raj @ avi~] $ su  - 
[root @ avi~]#

禁用直接root登錄

注意: 在此之前,請確保您至少有一個可以使用su成為root的帳戶,或者您將自己鎖定在計算機之外。

要禁用虛擬終端上的root登錄,請編輯文件/ etc / pam / d / login並添加該條目。

auth需要pam_securetty.so

此模塊將阻止在/ etc / securetty中未列出的終端設備上進行root登錄。

在tty1
#TTY2
#tty3上
tty4
tty5

如果您對#tty2和#tty3發表評論,那麼從虛擬終端tty2和tty3開始無法以root身份直接登錄。

防止非root用戶關閉系統

以halt命令的PAM配置為例,編輯文件/etc/pam.d/halt。像這樣

auth足夠pam_rootok.so

auth需要pam_deny.so

要以普通用戶身份測試此登錄並嘗試暫停命令,您將收到以下錯誤。

[test2 @ avi~] $停止
停止:需要是root
[test2 @ avi~] $

這些只是一些例子。

原版的 資源


5
2017-07-26 08:21



看起來你複製粘貼了這個答案的全部內容 這個網站。除非您有權複製網站所有者提供給您的內容,否則這基本上是抄襲。你能用自己的話來改寫你的答案,或者至少恰當地引用你自己寫的一切嗎?謝謝。 - slhck
不,你不必刪除它;將鏈接添加到源並嘗試不進行1:1複製會很不錯 一切。也許你可以用你自己的話來改寫一些段落。你自己做了截圖,對吧?他們當然很高興! - slhck