• umask计算创建文件、目录的默认权限


    很多人以为 创建文件默认权限就是 666-umask=创建文件的默认权限
          创建目录的默认权限就是 777-umask=创建目录的默认权限   这种计算其实是不严谨的

    为什么我们创建的文件的权限是 644 呢?
    我们创建文件的默认权限是怎么来的?

     

    1.umask是什么

    umask 命令允许你设定文件创建时的缺省模式,对应每一类用户(文件属主、同组用户、其他用户)存在一个相 应的 umask 值中的数字
    文件默认权限=666 ,目录默认权限=777
    我们一般在/etc/profile、$ [HOME]/.bash_profile 或$[HOME]/.profile 中设置 umask 值。
    永久生效,编辑用户的配置文件vim .bash_profile   

    vim /etc/profile

     

     

     说明:

    UID 大于 199 且用户的组名和用户名一样,那么 umask 值为002 ,否则为022.
    -gt 在shell中表示大于; id -g 显示用户组 ID  ,id -gn 显示组名

     

    临时生效: umask 权限补码    

    [root@study test]# umask 044
    [root@study test]# touch 1.txt
    [root@study test]# ll
    总用量 0
    -rw--w--w- 1 root root 0 7月  15 16:21 1.txt

    创建文件默认权限是666  umask为044创建的文件权限为622 -rw--w--w-

    看起来好像创建文件的权限是666-umask

    那么真是666-umask这样计算的吗?

     

    2.实验:将umask设为033

    期望结果:

      ①.创建文件 666-033=633  即 -rw--wx-wx

      ②.创建目录 777-033=744 即  drwxr--r--

    实验结果:
      ①.创建文件的权限为  644 即 -rw-r--r--
      ②.创建目录的权限为  744 即 drwxr--r--

    复制代码
    [root@study test]# umask 033
    [root@study test]# touch 2.txt
    [root@study test]# mkdir 3
    [root@study test]# ll
    总用量 0
    -rw-r--r-- 1 root root 0 7月  15 16:27 2.txt
    drwxr--r-- 2 root root 6 7月  15 16:27 3
    复制代码

     

     

     

    可以看到,目录权限预期与实验结果一样,但是文件权限预期与实验结果不一样,这是为什么呢?

    其实用 默认创建权限减去umask是不严谨的,他有自己的计算公式

    首先,创建文件的默认权限是666,创建目录的默认权限是777

    那么当我们设了一个umask,创建的默认权限是什么呢?

    3.通过umask计算文件、目录的默认创建权限:

    3.1.计算方法:

    ①.将默认权限(目录777,文件 666)和umask 值都转换为2 进制   

    ②.对 umask 取反 

    ③.将默认权限和umask 取反后的值做与运算    

    ④.将得到的二进制值再转换 8 进制,即为权限

     

    以上面的实验为例

    3.2.计算创建文件的默认权限:

    umask为033  转化为二进制为 000 011 011

    文件默认权限666转化为二进制 110 110 110

    将umask转化为二进制后取反为 111 100 100

    最后将默认文件权限与umask取反后做与运算得出

    110 110 110
    111 100 100
    ——————
    110 100 100     即644 转换成字符为 -rw-r--r--

     

    3.3.计算创建目录的默认权限

    umask为033  转化为二进制为 000 011 011
    文件默认权限666转化为二进制 111 111 111
    将umask转化为二进制后取反为 111 100 100

    最后将默认目录权限与umask取反后做与运算得出

    111 111 111
    111 100 100
    ——————
    111 100 100    即744  转换为字符为 drwxr--r--

     

  • 相关阅读:
    区块链服务网络BSN季度版本迭代说明【2023年Q3】
    hive优化到底应该怎么优化(面试必备)
    仅需10秒!ChatGPT轻松画出UML用例图,我却苦战10分钟。
    阿里云使用 ExternalDNS 集成外部DNS服务
    《SpringBoot+Vue》Chapter04 SpringBoot整合Web开发
    openEuler 系统搭建高可用 Kubernetes 集群
    AcWing 801. 二进制中1的个数——算法基础课题解
    攻防世界MISC练习区(gif 掀桌子 ext3 )
    Android进阶之旅(第八天:尝试实现BottomDialog)
    dependencyManagement和dependencies区别
  • 原文地址:https://www.cnblogs.com/wyllearning/p/16482006.html