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命令详解内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Wampserver2.5配置虚拟主机出现403 Forbidden的处理方案
WampServer是一款由法国人开发的Apache Web服务器、PHP解释器以 及MySQL数据库的整合软件包。免去了开发人员将时间花费在繁琐的配置环境过程,从而腾出更多精力去做开发。在windows下将Apache+PHP+Mysql 集成环境,拥有简单的图形和菜单安装和配置环境。2014-09-09Apache默认是不支持SSI如何给Apache增加SSI支持
SSI翻译成中文就是服务器端包含的意思,从技术角度上说,SSI就是在HTML文件中,可以通过注释行调用的命令或指针,下面给大家介绍下如何给Apache增加SSI支持2014-05-05详解linux 下安装软件tar.gz, rpm,deb的方法
本篇文章主要介绍了linux 下安装软件tar.gz, rpm,deb的方法 ,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。2016-12-12
最新评论