Apache 透過 ITK Multi-Processing Module 讓虛擬主機以不同使用者執行

 

一般來說 Linux Apache 服務啟動時,預設都是限定一組使用者與群組來執行程序(CentOS 是 apache ,Ubuntu 是 www-data)。但有時我們常透過VirtualHost在同一個 Apache 上存放著許多網站。這樣子有些網站的權限可能就有問題,可能會導致網頁無法下載或上傳檔案等等,對於主機上的網站也有安全性的問題,所以這裡使用 MPM 來指定 Apache VirtualHost 程序的使用者與群組。

以下操作皆為CentOS 6.8

1.安裝mpm-itk 套件

  • yum install httpd-itk -y

2.編輯 /etc/sysconfig/httpd 指定用 httpd.itk 來執行

  • vi /etc/sysconfig/httpd

並加入以下設定(後方為httpd.itk的絕對路徑,可以使用find去完整蒐尋位置)

  • HTTPD=/usr/sbin/httpd.itk

 

3.編輯 /etc/httpd/conf.d/php.conf 載入 PHP Module

  • vi /etc/httpd/conf.d/php.conf

並加入以下設定

  • <IfModule itk.c>
  • LoadModule php5_module modules/libphp5.so
  • </IfModule>

4.編輯 Virtual Host 設定檔,透過 AssignUserID 參數設定 Apache 程序的使用者與群組,範例如下:

<VirtualHost *:80>
DocumentRoot (網頁根目錄)
ServerName (VirtualHost 名稱)
ErrorLog logs (ErrorLog 存放檔案路徑)
CustomLog logs (CustomLog 存放檔案路徑)
AssignUserId (使用者名稱) (群組)
</VirtualHost>

最重要的就是 AssignUserId (使用者名稱) (群組)

名稱及群組中間有一個空格,設定完後重新啟動Apache

  • service httpd restart

如果不知道有沒有正確的套用執行請在網頁根目錄中放一個php網頁,內容為:

<?php
echo shell_exec(“whoami”);
?>

這會顯示執行php的使用者名稱,看是不是你設定 AssignUserId 的使用者名稱。

發表迴響