歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux綜合 >> Linux資訊 >> Linux文化 >> 使用PAM進行統一身份的認證

使用PAM進行統一身份的認證

日期:2017/2/27 12:19:38   编辑:Linux文化

PAM是 PLUGGABLE AUTHENTICATION MODULES 的縮寫.
可插入的認證模塊(並不是Linux指的模塊)用於實現應用程序的認證機制,
是程序員或管理員不需要重新編寫或編譯程序就可以改變認證機制.
在linux它已經被廣泛的應用了, 例如: /etc/securitty /etc/onlogin
/etc/ftpusers 實際上都是給它用的.你在登陸的時候的輸入密碼和你修改密碼
時也都用的是它./etc/pam.conf和/etc/pam/* 都是它的配置文件.

它最大的優點是它的彈性和可擴充性. 你可以隨意修改認證機制, 按你的實
際需要來定制系統.你了解後就會非常清楚了.

DESIGN GOALS(設計目標)

(a) 管理員可以選擇認證方式, 從簡單的密碼到智能卡系統.

(b) 可以為不同的程序配置不同的認證機制.如 使telnet使用 S/Key認證.
而本機的 login 缺使用一般的 UNIX password.

(c) 支持程序的顯示方式的需求. 如login 需要基於終端的顯示, 而dtlogin
需要 X 顯示, 而`ftp' 和 `telnet'需要透過網絡來認證.

(d) 支持為一個程序配置同時使用多種認證機制.

(e) 可是用戶在使用多種認證機制時,不必為同一個密碼敲入多次.

(f) 可是用戶在認真時需要輸入多個密碼.

(g) 當底層的認證機制改變時上層軟件不需要修改.

(h) 結構為system authentication提供一個 _pluggable_ model.

(i) 必須能滿足現有的服務需要.

4. OVERVIEW OF THE PAM FRAMEWORK (縱覽PAM的框架)

其核心實際上是一些庫函數. 你寫的應用程序要調用它們.PAM為你提供
了一套入口(the front end). 而這套函數互調用 特定認證機制所定義的模塊
(the back end).
簡單的說是這樣的: 你調用一個函數僅僅告訴它你要認正,這就足夠了.至於
用那一種機制來認證是由配置文件規定的. 你只需要看一看返回值就知道認證是
否成功了. 對於開發應用程序的人來說只需要記住幾個函數.

ftp telnet login (Applications)
| | |
| | |
+--------+--------+
|
+-----+-----+
| PAM API | 2) {
fprintf(stderr, "Usage: check_user [username]\n");
exit(1);
}

retval = pam_start("check_user", user, &conv, &pamh);
/* 開始 */
if (retval == PAM_SUCCESS)
retval = pam_authenticate(pamh, 0);
/* 認證是不是該用戶? 提示你輸入一個密碼 */

if (retval == PAM_SUCCESS)
retval = pam_acct_mgmt(pamh, 0);
/* 賬號是否有效? */

if (retval == PAM_SUCCESS) {
fprintf(stdout, "Authenticated\n");
} else {
fprintf(stdout, "Not Authenticated\n");
}

if (pam_end(pamh,retval) != PAM_SUCCESS) {
/* 結束 */
pamh = NULL;
fprintf(stderr, "check_user: failed to release authenticator\n");
exit(1);
}

return ( retval == PAM_SUCCESS ? 0:1 ); /* indicate success */
}

- Bricks Team


Copyright © Linux教程網 All Rights Reserved