umask值与文件和目录的权限
1.1 -R参数设置目录权限(chmod)
1.2 权限字母说明
1.3umask说明
1、umask的值决定着文件和目录的权限,创建文件默认最大权限为666(-rw-rw-rw-),默认创建的文件没有可执行权限x位。
2、对于文件来说,umask的设置是在假定文件拥有八进制666的权限上进行的,文件的权限就是666减去umask(umask的各个位数字也不能大于6,如,077就不符合条件)的掩码数值;重点在接下来的内容,如果umask的部分位或全部位为奇数,那么,在对应为奇数的文件权限位计算结果分别再加1就是最终文件权限值。
创建目录默认最大权限777(-rwx-rwx-rwx),默认创建的目录属主是有x权限,允许用户进入。
对于目录来说,umask的设置是在假定文件拥有八进制777权限上进行,目录八进制权限777减去umask的掩码数;
3、umask越小,文件和目录的权限越大,默认的umask值为022,即在主和组都是root时,文件和目录的权限为644(-rw-r--r--)和755(drwxr-xr-x);
4、先设置umask的值,如umask 222 然后再mkdir d222,touch f222,然后再ll=ls -l,这样umask值才会生效;
5、umask值的控制脚本
6、umask博文网址
http://oldboy.blog.51cto.com/2561410/1060032
1.4通过umask值读取文件和目录权限的三种方法
1.4.1加减法推算(简单好用,推荐)
文件权限的一般计算方法: 默认文件权限计算方法 1)假设umask值为:022(所有位为偶数) 6 66 ==>文件的起始权限值 0 2 2- ==>umask的值 --------- 6 4 4 2)假设umask值为:045(其他用户组位为奇数) 6 66 ==>文件的起始权限值 0 4 5- ==>umask的值 --------- 6 21 ==>计算出来的权限。由于umask的最后一位数字是5,所以,在其他用户组位再加1。 0 0 1 + --------- 622 ==>真实文件权限 默认目录权限计算方法 7 77 ==>目录的起始权限值 0 22 - ==>umask的值 --------- 7 55
如图
实例1-1:umask所有位全为偶数时
[[email protected] oldboy]# umask 0022 #→umask当前数值 [[email protected] oldboy]# umask 044 #→更改为044 [[email protected] oldboy]# umask 0044 [[email protected] oldboy]# mkdir umask_test #→建目录测试 [[email protected] oldboy]# ls -ld umask_test drwx-wx-wx 2 root root 4096 Nov 12 19:21 umask_test#→对应数字权限为733,是不是符合上面的计算方法? [[email protected] oldboy]# touch umask_test.txt [[email protected] oldboy]# ls -l umask_test.txt -rw--w--w- 1 root root 0 Nov 12 19:21umask_test.txt #→对应数字权限为622,是不是符合上面的计算方法
实例1-2umask值的部分或全部位为奇数时
[[email protected] oldboy]# umask 0023 [[email protected] oldboy]# mkdir dir [[email protected] oldboy]# touch file [[email protected] oldboy]# ls -l 总计 4 drwxr-xr-- 2 root root 4096 11-15 01:04 dir #→对应数字权限为754 -rw-r--r-- 1 root root 0 11-15 01:04 file #→对应数字权限为644 提示:根据前面的计算方法,当umask为0023时,dir的权限应该是754,而file的权限应该为643,但是由于umask的其他组位为奇数,因此最终权限为其他组位加1,即643加001(对应实践结果644)。注意:umask为偶数的位不要加1
实例1-3umask值的所有位为奇数时
[[email protected] oldboy]# umask 0551 [[email protected] oldboy]# umask 0551 umask 为0551 根据掩码方法计算:目录权限为226,文件权限115,而实际文件权限为226(umask的三个权限位都是奇数,所以,每个位分别加1就是正确的权限) [[email protected] oldboy]# mkdir dir5 [[email protected] oldboy]# touch file5 [[email protected] oldboy]# ls -l 总计 4 d-w--w-rw- 2 root root 4096 11-15 01:27 dir5 #→目录对应数字权限为226 --w--w-rw- 1 root root 0 11-15 01:27 file5 #→目录对应数字权限为226 再来一例验证下: [[email protected] oldboy]# umask 0333 [[email protected] oldboy]# umask 0333 umask 为0333 根据掩码方法计算:目录权限为444,文件权限333,而实际文件权限为444(umask的三个位都是奇数,所以,每个位分别加1就是正确的权限) [[email protected] oldboy]# mkdir dir3 [[email protected] oldboy]# touch file3 [[email protected] oldboy]# ls -l|grep 3 dr--r--r-- 2 root root 4096 11-15 01:30 dir3 #→目录对应数字权限为444 -r--r--r-- 1 root root 0 11-15 01:30 file3 #→目录对应数字权限为444
1.4.2 通过8进制字母符号计算
[[email protected]]# umask 551 umask值为551,对应的权限为-r-xr-x--x,即所有的文件和目录都取消权限中的-r-xr-x--x权限。 文件权限:【-rw-rw-rw-】-【-r-xr-x--x】=【--w--w--rw-】=226(文件的x位上没有x,就不用取消了) 目录权限:【-rwxrwxrwx】-【-r-xr-x--x】=【--w--w--rw-】=226(目录的x位上有x,直接取消即可) 继续拿前面的例子验证: [[email protected]]# umask 333 umask值为333,对应的权限为-wx-wx-wx,即所有的文件和目录都取消权限中的-wx-wx-wx权限。 文件权限:【-rw-rw-rw-】-【-wx-wx-wx】=【-r--r--r--】=444(文件的x位上没有x,就不用取消了) 目录权限:【-rwxrwxrwx】-【-wx-wx-wx】=【-r--r--r--】=444(目录的x位上有x,直接取消即可)
1.4.3 通过二进制方法计算(二进制转换软件)
0022 0 2 2 ---------- #→八进制转换二进制 0 10 10 说明:把umask值八进制转换成二进制 6 6 6 ------------ #→八进制转换二进制 110 110 110 说明:把文件默认最大权限值八进制转换成二进制 0 10 10 #→umask二进制 ------------- #→与运算 110 110 110 #→文件最大权限二进制 ------------- 000 010 010 ------------- #→转换八进制 0 2 2 说明:最后得到的值是022,然后使用666减去022,那么文件的创建权限就是644 [[email protected]]# umask 551 [[email protected]]# umask 0551 5 5 1 ------------- #→转换二进制 101 101 001 #→umask二进制 ------------- #→与运算 110 110 110 #→文件最大权限二进制 ------------- 100 100 000 ------------- #→转换八进制 4 4 0 说明:最后得到的值是440,然后使用666减去440,那么文件的创建权限就是226。
1.5 企业各服务器之间的权限说明