如何建立使用者並授予其讀取/etc/shadow檔案的權限?

如何建立使用者並授予其讀取/etc/shadow檔案的權限?

我想授予我的網頁伺服器使用者 (nginx) 對 /etc/shadow 檔案的讀取權限,並且我想確認我為此所採取的步驟。我使用的系統是CentOS 7。

  1. 首先我創建了一個名為shadow的群組:groupadd shadow
  2. 然後我將Web伺服器使用者(nginx)加入到群組shadow:usermod -aG shadow nginx
  3. 然後我將所有者更改為root,並將文件組所有者更改為group Shadow:chown root:shadow /etc/shadow
  4. 然後我允許shadow群組中的所有使用者讀取/etc/shadow檔案的讀取權限:chmod g+r /etc/shadow

執行這些步驟後,我運行ls -l /etc/shadow並看到以下輸出

----r-----。 1 根影子 1390 八月 30 12:51 /etc/shadow

我遵循的這些步驟正確嗎?請告訴我,如果需要,我可以提供更多資訊。

答案1

更改如此重要文件的所有者群組甚至可能會破壞一些東西,即危險的

實現這一目標的正確安全方法是使用 POSIX ACL:

setfacl -m u:special_user:r /etc/shadow

這裡的另一個問題是你把這個權利給了nginx,一個網頁伺服器。我想,它運行一些網路應用程式。/etc/shadow從 Web 應用程式直接存取是非常糟糕的主意。

這可能看起來適得其反,但這是所有嚴肅的系統做這些事情的方式:它們包括私人安全代理服務它執行所有安全性檢查,且 Web 前端只能與此代理服務通訊以存取敏感資料或執行其他敏感操作。例如,這就是 Proxmox VE 的建構方式:pvedaemon 會執行危險的操作,而 pveproxy(Web 伺服器)僅在需要執行此類操作時與 pvedaemon 進行通訊。

第三個問題是您根本無法存取該檔案。你打算做什麼?該檔案是 PAM 套件的一部分。如果某些系統驗證被修改而不使用影子文件,或被移動怎麼辦?您應該使用 PAM 庫調用,它將為您完成所有這些工作。

答案2

這看起來像是輸出

chmod g=r /etc/shadow

並不是

chmod g+r /etc/shadow

又名。您似乎不小心使用了等號而不是加號。

編輯: 我剛剛仔細檢查了我的系統,我的文件的權限/etc/shadow如下所示:

`----------. 1 root root 1183 20 Aug 11.53 /etc/shadow`

所以看來您的權限是預期的!

相關內容