之前在tomcat 7下文件上傳后訪問一直沒問題,現在tomcat版本升到8.5,在測試文件http上傳時,發現所傳文件無法通過nginx訪問了:報錯 403 forbidden
反復確定nginx配置沒有問題,上服務器查看了一下文件,發現上傳目錄下自動創建的目錄權限750,文件權限640,也即:默認賦予的文件權限中其他用戶的權限始終為0。
因此懷疑是默認的環境變量里umask被改了,然而cat /etc/profile
后發現:
if [ $UID -gt 199 ] && [ "
id -gn
" = "id -un
" ]; then
umask 002
else
umask 022
fi
是沒有問題的。那么,就只能說tomcat的默認umask有問題,vim tomcat8.5/bin/catalina.sh
,搜索umask
關鍵字,發現:
if [ -z "$UMASK" ]; then
UMASK="0027"
fi
umask $UMASK
ok,破案了。
經檢查,tomcat7時代是沒有這個設定的,因此應該是tomcat出于安全性考慮增加的,但這個真是造成了困擾。
解決辦法:把umask的0027改為0022即可,即:保證目錄755文件644的權限就可以避免nginx以匿名用戶訪問(use nobody)時發生403 forbidden的問題