為什麼要刪除 Apache/Nginx 使用者的 Shell 訪問權限?
授予注定要執行 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 使用者帳戶執行。您可能希望在配置中進行更多探勘,並查看伺服器的執行方式。