linux中umask值计算与配置

 

计算原理

  1. 将目录或文件的默认最高权限(目录777、文件666)和umask掩码值都转换为二进制。
  2. umask取反
  3. 将两个二进制值做与运算
  4. 将与运算后的二进制值转换为十进制,即为用户的新建目录或文件的默认权限。

  注:此处最高权777、666仅在运算过程中定义,非实际文件权限

目录场景

  • 掩码值:0022
  • 目录默认最高权限:777

计算默认权限:

  1. 转为二进制:
    777 = 111 111 111
    022 = 000 010 010
  2. umask取反
    NOT运算:111 101 101
  3. 与运算
    111 111 111 总权限777
    111 101 101 umask取反
    ====================
    111 101 101 新建目录默认权限
  4. 转为十进制
    111 101 101=755
    即该用户新建目录的默认权限为755,即为rwxr-xr-x

文件场景

  • 掩码值:0022
  • 目录默认最高权限:666

计算默认权限:

  1. 转为二进制:
    666 = 110 110 110
    022 = 000 010 010
  2. umask取反
    NOT运算:111 101 101
  3. 与运算
    110 110 110 总权限666
    111 101 101 umask取反
    ====================
    110 100 100 新建目录默认权限
  4. 转为十进制
    110 100 100 = 644
    即该用户新建目录的默认权限为644,即为rw-r--r--

公式

  按照umask计算的原理很麻烦,所以弄一个公式来总结计算如下:

  • 目录(文件)的初始权限 = 目录(文件)的最大默认权限 - umask权限

  而这种公式方式需要注意分类:

目录公式:
用户目录默认权限 = 777 - umask

文件公式:
1)偶数umask用户文件默认权限 = 666 - umask偶数值
2)奇数umask用户文件默认权限 = 666 - umask奇数值 + 1

示例

对照原理示例umask=022,计算如下:
用户目录默认权限:777-022=755,即为rwxr-xr-x
用户文件默认权限:666-022=644,即为rw-r--r--

对照引言中的实验umask=027,计算如下:
用户目录默认权限:777-027=750,即为drwxr-x---
用户文件默认权限:666-027+1=640,即为-rw-r-----

umask值修改

暂时修改

  暂时修改的方式,可以通过umask命令来更改,比如计算出权限对应的umask值要改为027,则直接用该用户登录Linux系统后,使用命令umask 027即可。但是,一旦用户退出登录后,umask将恢复默认值,刚才设置的将会失效。所以,这种umask命令方式,只是适合当前会话。

永久修改

  除了使用umask命令进行当前会话的用户默认权限设置外,我们还可以对该用户永久性修改umask值。针对某个用户修改,需要用该用户登录Linux,然后修改/etc/profile文件中的umask值。
  修改前:


总结

  如果我们登陆Linux系统后,新建目录或者文件很多,且权限都是某种特定的,则可以通过umask命令来暂时设置当前会话的默认权限。如果后期需要永久性的可以修改/etc/profile中的umask值。
  当然,对于应用程序一些吐文件时需要先新建的目录或者文件设置权限时,我们为了安全方式,可能不能永久性修改umask值,但,我们可以在启动脚本里面加上umask 022这种命令,来使得当前应用启动时受到当前启动脚本中的umask来控制应用程序输出的文件或目录的默认权限。



转载自(部分内容修改):
链接:https://www.jianshu.com/p/ec80eb5fa548

 

posted @ 2024-11-04 19:08  龙骑士老尹  阅读(32)  评论(0编辑  收藏  举报