web服務器專題:tomcat(三)tomcat-user.xml 配置文件

回顧:web服務器專題:tomcat(二)模塊組件與server.xml 配置文件

Tomcat管理模塊

安裝Tomcat後,訪問127.0.0.1/8080可以看到這個首頁,上圖中的三個按鈕即為Tomcat的管理功能,該模塊是為了方便用戶管理Tomcat的web應用,以及查看tomcat的狀態而設。該模塊的相關控制文件主要為  /conf/tomcat-users.xml

 Server Status

該部分為整個tomcat服務的狀態監聽,頁面內提供基本的tomcat運行狀態及內存運行情況,便於運維人員查看。

Manager App 

  當前tomcat部署的web應用管理平台,提供對web應用的部署及卸載功能,可以在線部署應用,以及控制應用的啟停、會話。

 

Host Manager

查看 Tomcat 虛擬機管理器,本質即是對<host>標籤的管理

 

Tomcat-user內置角色及權限

Tomcat的角色管理通過tomcat-users.xml文件控制,一下為一個tomcat-users.xml實例

    <tomcat-users>

     <role rolename="manager-gui"/>

     <role rolename="manager-script"/>

     <user username="tomcat" password="tomcat" roles="manager-gui"/>

     <user username="admin" password="admin" roles="manager-script"/>

  </tomcat-users>

  <role>標籤為角色,rolename屬性為角色名稱,這裡的rolename不是自定義的,而是tomcat內置的。配置好角色後,<user>標籤則為我們自定義的標籤,即我們定義一個用戶,username為賬號名稱,password為密碼,roles屬性則為以上定義好的<role>標籤的rolename,可以通過 「,」 隔開配置一個用戶擁有多個角色權限。  

Tomcat針對manager內置了6個角色,分別為 admin-gui , admin-script , manager-gui , manager-script , manager-status , manager-jmx

  • 負責Server StatusManager App 功能的角色

manager-gui:訪問 HTML 頁面

manager-status:僅訪問 「服務器狀態」 頁面

manager-script:訪問腳本頁面,以及 「服務器狀態」 頁面

manager-jmx:訪問 JMX 代理接口和 「服務器狀態」 頁面

  • 負責 Host Manager 功能的角色

admin-gui:訪問HTML頁面

admin-script 訪問腳本頁面

一個栗子

這裡基於新部署安裝的tomcat(實際tomcat 9)進行一次全部權限的放開,作為一個實際操作的例子流程。(聲明:實際生產不建議以下操作,會造成極高的安全問題

對 管理功能 的全部放開,即tomat首頁中的 Server Status,Manager App,Host Manager 功能全部開放,首先進入tomcat的/conf目錄下,打開tomcat-users.xml文件,複製以下內容到配置文件中。

<role rolename="admin-gui"/>

<role rolename="admin-script"/>

<role rolename="manager-gui"/>

<role rolename="manager-script"/>

<role rolename="manager-jmx"/>

<role rolename="manager-status"/>

<user username="admin" password="admin" roles="admin-gui,admin-script,manager-gui,manager-script,manager-jmx,manager-status"/>

  這裡將所有的角色role進行了聲明,然後定義了一個admin的賬戶,將所有的角色都賦予它,使他用於全部權限。

然後將/webapps/manager/META-INF/和webapps/host-manager/META-INF/下的context.xml進行修改(manager和host-manager目錄下的context.xml兩個都要改)

將context.xml的只針對本地請求放行這一設置注釋掉即可,如下:

<Context antiResourceLocking="false" privileged="true" >
<!--  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" /> -->
  <Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/>
</Context>

至此,tomcat首頁即可使用設置的admin賬號訪問管理頁面了(tomcat配置修改後無需重新啟動也可加載)。