
我希望能夠讓本機 Linux 使用者在造訪網站時使用其憑證進行身份驗證。我正在使用 ngx_http_auth_pam_module。在 nginx.conf 檔案中,我對 location 指令進行了以下設定:
location / {
proxy_pass http://somewebsite:5000;
root html;
index index.html index.htm;
auth_pam "Secure area";
auth_pam_service_name "nginx";
}
使用 nginx.conf 檔案中的「auth_pam」和「auth_pam_service_name」語法,我在造訪網站時會收到輸入憑證的提示。在 /etc/pam.d 目錄中,我建立了一個「nginx」服務文件,其中包含以下內容:
auth required pam_unix.so
account required pam_unix.so
我在 CentOS 7 伺服器上運行它。我知道我必須創建一個本地 Linux 用戶和/或群組,並可能提供對 /etc/shadow 檔案的存取權限,但使用我在網路上找到的教程,我仍然無法使用本地用戶登入。有人可以向我提供如何讓它工作的步驟,以便我在訪問該網站時可以使用本地 Linux 用戶登入嗎?
謝謝,非常感謝您的幫助,如果需要,我可以提供更多資訊。
答案1
這自述文件對於這個第三方 nginx 模組說:
請注意,該模組以 Web 伺服器使用者身分執行,因此所使用的 PAM 模組必須能夠在無需 root 的情況下對使用者進行身份驗證;這意味著,如果您想使用該
pam_unix.so
模組來驗證用戶,您需要讓 Web 伺服器用戶讀取該/etc/shadow
檔案(如果這不會嚇到您)(在 Debian 之類的系統上,您可以將www-data
用戶添加到群組中shadow
)。
請注意允許 Web 伺服器和/或 Web 應用程式讀取影子檔案的安全隱患。