我的编程空间,编程开发者的网络收藏夹
学习永远不晚

linux下umask命令用途原理和计算方式详解

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

linux下umask命令用途原理和计算方式详解

目录
  • umask umask用途
  • 原理
    • 1. umask值
    • 2. 文件目录权限最大值
    • 3. 常规计算
    • 4. 严谨计算
  • umask值修改
    • 1. 临时生效(当前会话)
    • 2. 永久生效
  • 总结

    umask umask用途

    umask令新建文件和目录拥有默认权限。

    可以看到root创建的目录是755,文件是644

    
    [root@zaishu zaishu]# touch test.txt
    [root@zaishu zaishu]# mkdir test
    
    [root@zaishu zaishu]# ls -l
    total 0
    drwxr-xr-x 2 root root 6 Nov 25 16:29 test  
    -rw-r--r-- 1 root root 0 Nov 25 16:28 test.txt

    普通用户

    可以看到普通用户创建的目录是775,文件是664

    
    [mysql@zaishu ~]$ touch test.txt
    [mysqlfPmqzWi@zaishu ~]$ mkdir test
    [mysql@zaishu ~]$ ls -l
    total 0
    drwxrwxr-x 2 mysql mysql 6 Nov 25 16:30 test
    -rw-rw-r-- 1 mysql mysql 0 Nov 25 16:30 test.txt

    这些默认的权限值是通过umask设置运算得到。

    原理

    linux 它是通过使用 umask 默认权限来给所有新建的文件和目录赋予初始权限的。那么,我们如何得知 umask 默认权限的值呢?直接通过 umask 命令即可:

    1. umask值

    
    [root@zaishu ~]# umask
    0022
    
    [mysql@zaishu ~]$ umask
    0002

    #root用户默认是0022,普通用户默认是 0002

    umask 默认权限确实由 4 个八进制数组成,第 1 个数代表的是文件所具有的特殊权限(SetUID、SetGID、Sticky BIT)先忽略。后 3 位 “022” 对应为 ----w–w-。

    2. 文件目录权限最大值

    Linux 系统中,文件和目录的最大默认权限是不一样:

    文件来讲,可拥有的最大默认权限是 666,即 rw-rw-rw-。x是文件最大权限,新建文件的时候不会给与,只能通过用户手工赋予。

    目录来讲,拥有的最大默认权限是 777,即 rwxrwxrwx。

    3. 常规计算

    文件和目录的初始权限,通过计算得到:

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

    
    [mysql@zaishu ~]$ umask
    0002
    [mysql@zaishu ~]$ mkdir test
    [mysql@zaishu ~]$ ll -d test
    drwxrwxr-x 2 mysql mysql 6 Nov 26 10:50 test  // 目录的默认权限最大可以是 777,777-002 =775
    
    [mysql@zaishu ~]$ touch h.txt
    [mysql@zaishu ~]$ ll h.txt 
    -rw-rw-r-- 1 mysql mysql 0 Nov 26 10:52 h.txt //文件最大权限 666, 666-002(普通用户) 666-002 =664
    [root@zaishu ~]# touch h2
    [root@zaishu ~]# ls -l h2 
    -rw-r--r-- 1 root root 0 Nov 26 10:53 h2 //文件最大权限 666, 666-002(root) 666-022 =644

    4. 严谨计算

    在计算文件或目录的初始权限时,直接使用最fPmqzWi大默认权限和 umask 权限的数字形式做减法,是不严谨的。例如,若 umask 默认权限的值为 033,按照数字形式计算文件的初始权限,666-033=633,但我们按照字母的形式计算会得到 (rw-rw-rw-) - (----wx-wx) = (rw-r–r--),换算成数字形式是 644。

    这里的减法,其实是“遮盖”的意思,也就是说,最大默认权限中和 umask 权限公共的部分,通过减法运算会被遮盖掉,最终剩下的“最大默认权限”,才是最终赋予文件或目录的初始权限。

    umask值修改

    1. 临时生效(当前会话)

    umask 权限值可直接修改:

    
    [root@localhost ~]# umask 002
    [root@localhost ~]# umask
    0002
    [root@localhost ~]# umask 033
    [root@localhost ~]# umask
    0033

    这种方式修改的 umask 只是临时有效,一旦重启或重新登陆系统,就会失效。

    2. 永久生效

    让修改永久生效,则需要修改对应的环境变量配置文件 /etc/profile。

    
    [root@zaishu~]# vim /etc/profile
    ...省略部分内容...
    if [ $UID -gt 199]&&[ "'id -gn'" = "'id -un'" ]; then
        umask 002
        #如果UID大于199(普通用户),则使用此umask值
    else
        umask 022
        #如果UID小于199(超级用户),则使用此umask值
    fi

    总结

    到此这篇关于linux下umask命令用途原理和计算方式详解的文章就介绍到这了,更多相关linux下umask命令详解内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

    免责声明:

    ① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

    ② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

    linux下umask命令用途原理和计算方式详解

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档

    猜你喜欢

    linux下umask命令用途原理和计算方式详解

    目录umask umask用途原理1. umask值2. 文件目录权限最大值3. 常规计算4. 严谨计算umask值修改1. 临时生效(当前会话)2. 永久生效总结umask umask用途 umask令新建文件
    2022-06-04

    linux下umask命令用途原理和计算方式是什么

    这篇文章主要介绍“linux下umask命令用途原理和计算方式是什么”,在日常操作中,相信很多人在linux下umask命令用途原理和计算方式是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”linux下u
    2023-06-21

    linux下的yum命令原理和详解

    yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器。基於RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并
    2022-06-04

    编程热搜

    目录