跟老男孩学Linux运维-核心系统命令实战-第2章-文件和目录操作命令-umask显示或设置权限掩码
2.25.umask显示或设置权限掩码(*****)
2.25.1.命令详解
umask是通过八进制的数值来定义用户创建文件或目录的默认权限
#-p 输出的权限掩码可直接作为命令来执行 #-S 以字符方式输出权限掩码
2.25.2.通过umask计算文件目录权限
1.文件权限计算
创建文件默认最大的权限为 666(-rw-rw-rw-),默认创建的文件没有可执行权限 x 位。
对于文件来说,umask 的设置是在假定文件拥有八进制 666 的权限上进行的,文件的权限就是 666 减 umask(umask 的各个位数字也不能大于 6,比如 077 就不符合条件)的掩码数值,如果得到的 3 位数字其每一位都是偶数,那么这就是最终结果;如果有若干位的数字是奇数,那么这个奇数需要加 1 变成偶数,最后得到全是偶数的结果。
示例如下:
1)假设 umask 值为:022(所有位为偶数)
6 6 6 #<== 文件的起始权限值 0 2 2 - #<== umask 的值 -------- 6 4 4
2)假设 umask 值为:045(其他用户组位为奇数)
6 6 6 #<== 文件的起始权限值 0 4 5 - #<== umask的值 ————— 6 2 1 #<== 计算出来的权限。由于 umask 的最后一位数字是奇数5,所以,在其它用户组位再加1 0 0 1 + #<== umask 对应的奇数位加 1 ————— 6 2 2 #<== 真实文件权限
2.目录权限计算
创建目录默认最大权限 777(-rwx-rwx-rwx),默认创建的目录属主是有 x 权限的,允许用户进入。
对于目录来说,umask 的设置是在假定文件拥有八进制 777 权限上进行,目录八进制权限 777 减去 umask 的掩码数值。
7 7 7 #<== 目录的起始权限值 0 2 2 - #<== umask的值 ————— 7 5 5
2.25.3.使用范例
#系统默认的umask值 #超级用户 umask #普通用户 umask #上面的结果是由下面的配置文件决定的 sed -n '61, 64p' /etc/profile #使用id查看用户组 id -gn #使用id查看用户名 id -un #显示当前登录用户的UID值 echo $UID
注意:普通用户的 umask 未必是 002
#-p 和 -S 参数的使用 umask -p umask -S #验证修改 umask 值对文件权限的影响 umask touch file1;ll -h file1 umask 044 touch file2;ll -h file2 umask 034 touch file3;ll -h file3 #验证修改 umask 值对目录权限的影响 umask mkdir dir1;ll -d dir1 umask 044 mdkir dir2;ll -d dir2 umask 055 mkdir dir3;ll -d dir3
上面的修改都是临时生效的,想要永久生效就需要修改配置文件
#修改配置文件使得 umask 永久生效 #通过命令查看 umask 的永久配置情况,配置文件可以是 /etc/bashrc 或 /etc/profile sed -n '61,69p' /etc/bashrc sed -n '57,64p' /etc/profile
以上是系统默认的 umask 配置情况,我们在工作中可以修改 /etc/bashrc 和 /etc/profile 实现对 umask 的永久修改,但是几乎没有什么需求必须要修改 umask,默认的 umask 是系统安全的临界点,是最适合的,这点请大家注意。
下面直接将修改 umask 的命令放在 /etc/profile 文件的最后一行,配置完成后,查看代码如下:
tail -1 /etc/profile #结果 umask 033
上面的方法是一刀切的方法,所有用户的 umask 值统一设置为 033
posted on 2019-12-05 08:10 herisson_pan 阅读(12) 评论(0) 收藏 举报
浙公网安备 33010602011771号