Linux

為什麼要刪除 Apache/Nginx 使用者的 Shell 訪問權限?

  • October 4, 2011

授予注定要執行 Apache/Nginx 的使用者帳戶的 shell 訪問權限是一個壞主意嗎?

我問是因為,Guvnr 在他的 VPS 聖經系列中,使用 visudo’d 設置了一個新使用者

guvnr  ALL=(ALL) ALL

權限,然後使用該使用者設置 Nginx 伺服器。

而 Nginx HTTP Server 的作者建議您不要向執行 Nginx 的使用者授予 shell 訪問權限。

您總是可以刪除 guvnr 的 shell 訪問權限,但是,您將如何管理您的網站?

編輯:@Bart Silverstrim - 以下是 guvnr 安裝 Nginx 的方式:

  • (以使用者 guvnr 登錄)
  • sudo 安裝 nginx 依賴項
  • 使用者 wget nginx 源文件
  • 使用者 ./configure –sbin-path=/usr/local/sbin –with-http_ssl_module
  • 使用者製作
  • 須藤使安裝

所以也許 Nginx 正在被安裝到根目錄?

如果在 /etc/ssh/sshd_config 中禁用了 root 登錄,這是一個好的做法嗎?

通常,將 shell 訪問權限授予僅為守護程序/服務創建的任何帳戶以訪問不需要 shell 訪問的特定係統功能是一個壞主意。這樣,它將防止某人破壞(面向網際網路的)服務並獲得不必要的特權。

基本上,如果不需要,為什麼要增加攻擊面?

另一方面,在重新閱讀問題時,不清楚 nginx 是否有一個 shell 帳戶。nginx 是由 guvnr 帳戶設置的,還是授予了它自己的實際帳戶?每個應用程序都由使用者設置,通常具有一些管理訪問權限。這並不意味著它總是以該使用者的身份執行(即,僅僅因為 cat 是由 root 安裝的,並不意味著執行 cat 的 jdoe 正在以 root 身份執行 cat。)只有當 nginx 以 guvnr 的帳戶權限執行或作為 guvnr 執行時它可以訪問外殼;它很可能會在分叉後立即放棄特權,或者它可以擁有自己的 nginx 帳戶或作為具有很少或沒有特權的 Web 使用者帳戶執行。您可能希望在配置中進行更多探勘,並查看伺服器的執行方式。

引用自:https://serverfault.com/questions/318307