如何授予Web伺服器使用者對/etc/shadow檔案的讀取權限?

如何授予Web伺服器使用者對/etc/shadow檔案的讀取權限?

我希望本機 Linux 使用者能夠使用 Nginx PAM 模組進行身份驗證(登入)。我使用的是 CentOS 7 伺服器。具體來說,以下是我正在嘗試做的事情...

自述文件對於 ngx http auth pam 模組說:

請注意,該模組以 Web 伺服器使用者身分執行,因此所使用的 PAM 模組必須能夠在無需 root 的情況下對使用者進行身份驗證;這意味著,如果你想使用pam_unix.so 模組來驗證用戶身份,你需要讓Web 伺服器使用者讀取/etc/shadow 檔案(如果這不會嚇到你)(在Debian 之類的系統上,你可以新增www-data用戶到影子群組)。

我的第一個問題是,在這種情況下,「nginx」是 Web 伺服器使用者嗎?我的第二個問題是如何設定Web伺服器使用者讀取/etc/shadow檔案的權限?有人可以提供我對他們有用的步驟嗎?我按照網路上找到的許多教程進行操作,但沒有成功。目前,當訪問我希望本地 Linux 用戶能夠登入的網站時,我確實收到身份驗證提示(輸入使用者名稱和密碼),但是當輸入本地 Linux 用戶的憑證時,卻沒有成功,並且只是提示我再次輸入。

謝謝,非常感謝您的幫助,如果需要,我可以提供更多資訊。

編輯:

我已經在 nginx 中配置了 PAM,首先使用以下步驟從原始碼建立 nginx這裡。在我的 nginx.conf 檔案中,我在頂部添加了以下行以包含 PAM 模組...

load_module /etc/nginx/modules/ngx_http_auth_pam_module.so;

我還在 nginx.conf 的位置指令中包含了以下兩行...

auth_pam "Secure area";
auth_pam_service_name "nginx";

在 nginx 服務文件的目錄「/etc/pam.d」中,我有以下兩行...

auth required /usr/lib/security/pam_unix.so
account required /usr/lib/security/pam_unix.so

看著自述文件對於 ngx http auth pam 模組,我發現我必須授予 Web 伺服器使用者對 /etc/shadow 檔案的讀取權限。為此,我首先建立了一個名為「shadow」的新群組。然後,我將 Web 伺服器使用者(我假設是 nginx)指派給「shadow」群組。然後我更改了 /etc/shadow 檔案的權限。我為此運行的命令如下......

groupadd shadow
usermod -a -G shadow nginx
chown root:shadow /etc/shadow
chmod g+r /etc/shadow

執行此操作後,我使用命令檢查了 /etc/shadow 檔案的權限

ls -l /etc/shadow

這就是輸出的結果......

----r-----. 1 root shadow 1390 Aug 30 12:51 /etc/shadow

我還為 nginx 用戶設定了密碼。重申一下,在造訪我想要進行身份驗證的網站時,當我輸入 nginx 使用者名稱和密碼時,它只會提示我再次輸入。

答案1

我猜您已經安裝了 nginx-module-auth-pam 並配置了/etc/pam.d/nginx.

如果沒有:安裝 rpm 文件,因為一切都會為您配置。換句話說:您不必手動調整/etc/shadow存取設定。事實上你一定不/etc/shadow如果您使用 pam,請進行調整。此檔案包含您的使用者的(雜湊)密碼,因此此外,出於安全原因,您不希望授予任何進程或程式(除了 pam)或使用者(除了 root)存取此檔案的權限。

如果您有訂閱:

yum -y install https://extras.getpagespeed.com/release-latest.rpm
yum -y install nginx-module-auth-pam

如果沒有:抓取或構建https://github.com/jfut/nginx-module-auth-pam-rpm

為什麼不只回答你的問題?由於您帶來的範例適用於類別 Debian 系統,但設定方式與類別 Redhat 系統略有不同,例如 CentOS 7。

您可以在以下位置找到此模組的其他配置範例GitHub

另請檢查https://nginx-extras.getpagespeed.com/有關其他設定範例。

相關內容