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 Status、Manager 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配置修改後無需重新啟動也可加載)。