最近在Linux系统中通过tomcat部署项目后,由于程序有上传文件功能。而上传后的却无法查看文件(通过createNewFile创建)。后来发现文件的权限为-rw-r-----,而文件的拥有者是root,这样就只有拥有者有root用户组的拥有读取权限。
通过研究发现,Linux通过umask变量来控制创建文件的默认权限问题。我们知道在Linux系统规定,创建文件的最高权限为666,而创建文件夹的最高权限为777,系统通过变量umask来控制创建文件的权限问题。如果当umask的值为022时,则创建的文件权限为644,即权限是通过最高权限减去umask的值来控制的。
但Linux系统umask的默认值是0022,也就是说创建的文件应该是644的权限,而上传的文件却是640的权限。后来通过对查询Tomcat发现从tomcat8开始,catalina.sh文件中有下面几行代码
# Set UMASK unless it has been overridden
if [ -z "$UMASK" ]; then
UMASK="0027"
fi
umask $UMASK
也就是说tomcat8将umask的值进行了修改,也就造成了上传文件权限的问题(这个问题从tomcat8才有,tomcat8以下版本是没有这个问题)。
因此将代码修改为
# Set UMASK unless it has been overridden
if [ -z "$UMASK" ]; then
UMASK="0000"
fi
umask $UMASK
来源:CSDN
作者:张大仙是个妖怪
链接:https://blog.csdn.net/NDKHBWH/article/details/103460285