Docker構建的tomcat工程上傳檔案,訪問報403許可權問題

extendsGod發表於2020-12-04

Docker構建的tomcat工程上傳檔案,訪問報403許可權問題

最近一個老工程因為要坐Apache Shiro升級(因為漏洞掃描高危了),結果發現shiro的版本升級到1.6以上需要jre8 以上才可以,不得已需要升級一下工程的jdk版本。以下記錄一下升級過程中遇到的一些坑。
1.因為工程是通過docker進行映象打包以及釋出的。所以基本構建是基於dockerFile來進行,當時為了省事,tomcat映象是採用的官方映象庫中的那種,也就是tomcat+jre一體的。
想升級jdk版本,就只能升級tomcat。既然是升級嘛,就直接拉了映象的最新版,進行釋出,修改後,程式執行一切正常,本以為這就完事了。
2.第二天業務就反饋,上傳的圖片展示不出來了。上去看,發現新上傳的圖片訪問都報403錯誤了,也就是普遍的許可權不足的錯誤,看伺服器檢視,確實新上傳的圖片許可權只有640,沒有讀許可權。當時第一反應就是,誰改了nginx配置,或者伺服器許可權配置?但是檢視一番,發現配置全都沒有更改。最後經過排查,以及查閱官方文件,tomcat8 下面catalina.sh 裡面註釋

#   UMASK           (Optional) Override Tomcat's default UMASK of 0027

然後我在使用的時候也沒有更改tomcat配置所以導致了這個問題。
解決方案有很多:

  1. 更改tomcat版本可以用tomcat7+jre8的,問題自然就解決了。
  2. 修改tomcat配置檔案,也就是修改catalina.sh裡面的配置:改預設許可權為0022
# Set UMASK unless it has been overridden

if [ -z "$UMASK" ]; then

    UMASK="0022"

fi

umask $UMASK

當然,此次為了節省麻煩,還是直接採用了第一種方式來解決。

最後附上我這邊構建使用的DockerFile以供參考

# 這是最新版
FROM tomcat:latest 
MAINTAINER "extendsGod"
ENV TZ=Asia/Shanghai
RUN mkdir -p /usr/local/tomcat/webapps/balaallla/
RUN mkdir -p /opt/aaa/aaa/
RUN ln -snf /usr/share/aaa/$TZ /etc/aaa && echo $TZ > /etc/aaa
ADD target/工程 /usr/local/tomcat/webapps/工程/

相關文章