linux创建文件默认权限umask
linux文件初始权限前言linux权限介绍创建文件与目录初始权限应用写文件权限总结前言linux系统是绝大部分后端服务器运行的系统,但是笔者一直没有关注过,linux下用户创建目录的权限。一般都是root操作,然后没有权限就授予权限chmod +或者chown -R。今天遇到一个奇怪的问题咨询,说tomcat运行写的文件,其他用户不能读取。linux权限介绍linux的权限分为r(4) 读w(2
linux文件初始权限
前言
linux系统是绝大部分后端服务器运行的系统,但是笔者一直没有关注过,linux下用户创建目录的权限。一般都是root操作,然后没有权限就授予权限chmod +或者chown -R。今天遇到一个奇怪的问题咨询,说tomcat运行写的文件,其他用户不能读取。
linux权限介绍
linux的权限分为
- r(4) 读
- w(2) 写
- x(1) 执行
linux权限表示有2种方式,一种字母一种数字。所以授权可以是chmod +w 或者chmod 755
linux的常用文件一般为目录,文件,软硬链接,使用ls -l命令
第一位是
- d代表目录
- -代表文件
- l代表链接
后面是3位一组,表示当前用户、当前用户组、其他用户权限,使用rwx表示,-表示没有此权限
创建文件与目录初始权限
创建文件的初始权限与linux系统的umask有关,而且不同的用户umask可以不一样。
umask使用数字表示,表示掩码
第一位的0 代表特殊权限位,注意看后3位002;这里的002并不是权限位而是需要异或运算的掩码。
文件的默认运算权限是没有执行权限的666,666的2进制异或002的2进制为664
110 110 110
000 000 010
110 110 100
这里需要注意:如果掩码配置了执行权限,此时也要把掩码的执行权限去除
比如掩码0027,理论上文件默认权限是640,027的2进制000 010 111,就要将末尾的7减去执行权限1,即运算的2进制000 010 110
110 110 110
000 010 110
110 100 000 == (640)
文件夹的默认运算权限是777,777的2进制异或002的2进制为775
111 111 111
000 000 010
111 111 101
软链接是默认就有所有权限777,无需运算
应用写文件权限
某些应用在运行过程中也会写文件,比如日志文件,pid文件。这个时候,应用程序可能会修改用户下的umask,比如tomcat8.5.55,默认会设置为0027
截取umask设置片段
# Set UMASK unless it has been overridden
if [ -z "$UMASK" ]; then
UMASK="0027"
fi
umask $UMASK
这就很坑了,产生的文件权限是640,其他用户就不能读取tomcat产生的文件,比如日志收集
解决方法在bin目录创建setenv.sh,并授权755.
设置UMASK=0022即可,当然也可以按需设置成别的,比如0002.
总结
linux的创建文件与目录的默认权限为umask决定,每个用户的umask可以不一样。应用在运行过程中也可能修改用户的umask的值。
更多推荐
所有评论(0)