说说Linux中的umask

前言

Linux文件权限这块是Linux学习的基础,我们在学习linux权限的时候,都有学过umask命令。在linux系统中,我们创建一个新的文件或者目录的时候,这些新的文件或目录都会有默认的访问权限,umask命令与文件和目录的默认访问权限有关。若用户创建一个文件,文件的最大访问权限为 rw-rw-rw- ,创建目录的最大权限 rwxrwxrwx ,而umask值则表明了需要从最大权限中去掉哪些权限来成为最终的默认权限值。也就是说我们想控制Linux系统中新生成文件的默认权限,就是通过系统文件或者目录最大权限减去umask码值来实现的。

如何计算umask值

对于如何计算umask值。其实我们只要记住umask是从权限中“拿走”相应的位即可。需要记住的是,这不是简单的数字直接相减,而是将数字转换成对应的字母权限之后再做"减法"。例如,对于umask值002,相应的文件和目录缺省创建权限是什么呢?

  第一步,我们首先写下具有全部最大权限,目录即777 (所有用户都具有读、写和执行权限),文件是666 (所有用户都具有读、写)。

  第二步,在下面一行按照umask值写下相应的位,在本例中是002。

  第三步,在接下来的一行中记下上面两行中没有匹配的位。这就是目录的缺省创建权限。

这就是上面的例子, 其中umask值为002:

  1) 文件的最大权限 rwx rwx rwx (777)

  2) umask值为002 --- --- -w-

  3) 目录权限 rwx rwx r-x (775) 这就是目录创建缺省权限

  4) 文件权限 rw- rw- r-- (664) 这就是文件创建缺省权限

下面是另外一个例子,假设这次umask值为022:

  1) 文件的最大权限 rwx rwx rwx (777)

  2 ) umask值为022 --- -w- -w-

  3) 目录权限 rwx r-x r-x (755) 这就是目录创建缺省权限

  4) 文件权限 rw- r-- r-- (644) 这就是文件创建缺省权限


如何查看和设置umask值

在Linux中查看当前用户的umask值,只需要输入umask命令即可。

 可以看到当前root用户的umask值是0022,至于第一位中的0是特殊权限,这里不需要考虑。如果要修改umask值,只需要在umask命令后面写上具体得值就行

上面这种通过命令设置得umask值,只在当前会话有效,也就是说用户退出之后重新连接就会恢复之前得umask,那么怎么永久修改用户的umask值呢,这也很简单,我们只需要修改/ets/profile文件中对应得umask就行,系统在连接的时候回去profile文件去读取。打开profile文件,我们可以找到下面内容

if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then
    umask 002
else
    umask 022
fi

 如果uid大于199则umask为002,否则umask值为022,我们在这里修改umask值则为永久修改。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章