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

 更新时间:2021年11月29日 16:04:08   作者:我是数哥  
大家好,本篇文章主要讲的是linux下umask命令用途原理和计算方式详解,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下哦

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
[mysql@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. 严谨计算

在计算文件或目录的初始权限时,直接使用最大默认权限和 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命令详解内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 详解如何使用linux启动Nacos

    详解如何使用linux启动Nacos

    这篇文章主要介绍了如何使用linux启动Nacos,本文通过代码示例给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2024-03-03
  • linux中文件权限的使用以及修改方式

    linux中文件权限的使用以及修改方式

    这篇文章主要介绍了linux中文件权限的使用以及修改方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • linux下实时查看tomcat运行日志的方法

    linux下实时查看tomcat运行日志的方法

    下面小编就为大家带来一篇linux下实时查看tomcat运行日志的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起 小编过来看看吧
    2016-11-11
  • 阿里云服务器ubuntu 配置教程

    阿里云服务器ubuntu 配置教程

    这篇文章主要介绍了阿里云服务器ubuntu 配置方法,本文分步骤给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-10-10
  • GTK treeview原理及使用方法解析

    GTK treeview原理及使用方法解析

    这篇文章主要介绍了GTK treeview原理及使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • Apache由http自动跳转到https的多种方法

    Apache由http自动跳转到https的多种方法

    本文主要和大家分享Apache http自动跳转到https的几种方法,非常不错,具有参考借鉴价值,需要的朋友参考下
    2018-02-02
  • VMware下CentOS 6.7安装图文教程

    VMware下CentOS 6.7安装图文教程

    这篇文章主要为大家详细介绍了VMware下CentOS 6.7安装图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-03-03
  • 简要分析linux系统的启动过程

    简要分析linux系统的启动过程

    接触linux系统运维已经好几年了,常常被问到linux系统启动流程问题,这篇文章主要介绍了简要分析linux系统的启动过程,需要的朋友可以参考下
    2018-08-08
  • ubuntu中python调用C/C++方法之动态链接库详解

    ubuntu中python调用C/C++方法之动态链接库详解

    这篇文章主要给大家介绍了关于如何在ubuntu中python调用C/C++方法之动态链接库的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起看看吧
    2018-11-11
  • Linux下Squid配置详解 Squid代理服务器配置

    Linux下Squid配置详解 Squid代理服务器配置

    本文介绍Linux下非常著名、常用的Squid代理服务器的使用,并着重讲述如何使用其提供的访问控制策略,来保证代理服务器的合法使用。
    2009-10-10

最新评论