Linux umask命令详解

Linux umask命令详解教程

Linux 中的 umask 命令用来设置限制新建文件权限的掩码。当新文件被创建时,其最初的权限由文件创建掩码决定。

用户每次注册进入系统时,umask 命令都被执行, 并自动设置掩码 mode 来限制新文件的权限。用户可以通过再次执行 umask 命令来改变默认值,新的权限将会把旧的覆盖掉。

Linux umask说明

Linux 是注重安全性的操作系统,而安全的基础在于对权限的设定,不仅所有已存在的文件和目录要设定必要的访问权限,创建新的文件和目录时,也要设定必要的初始权限。

Windows 系统中,新建的文件和目录时通过继承上级目录的权限获得的初始权限,而 Linux 不同,它是通过使用 umask 默认权限来给所有新建的文件和目录赋予初始权限的。

umask 默认权限确实由 4 个八进制数组成,但第 1 个数代表的是文件所具有的特殊权限(SetUID、SetGID、Sticky BIT),后 3 位数字是 umask 权限值。

注意,虽然 umask 默认权限是用来设定文件或目录的初始权限,但并不是直接将 umask 默认权限作为文件或目录的初始权限,还要对其进行 “再加工”。

文件和目录的真正初始权限,可通过以下的计算得到:

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

显然,如果想最终得到文件或目录的初始权限值,我们还需要了解文件和目录的最大默认权限值。在 Linux 系统中,文件和目录的最大默认权限是不一样的:

  • 对文件来讲,其可拥有的最大默认权限是 666,即 rw-rw-rw-。也就是说,使用文件的任何用户都没有执行(x)权限。原因很简单,执行权限是文件的最高权限,赋予时绝对要慎重,因此绝不能在新建文件的时候就默认赋予,只能通过用户手工赋予。
  • 对目录来讲,其可拥有的最大默认权限是 777,即 rwxrwxrwx。

Linux umask命令详解

功能

用来设置限制新建文件权限的掩码。

语法

umask [options] mask

参数

参数 描述
options umask 命令使用的参数。
mask 权限掩码。

umask命令常用参数

选项 含义
-p 输出的权限掩码可直接作为指令来执行。
-S 以符号方式输出权限掩码。

Linux umask命令常用实例

实例

实例 描述
umask 输出当前系统默认的 umask 值。
umask mask 设置当前系统 umask 值。

说明

使用 umask 命令修改 umask 值,只是临时生效的。

永久修改umask值

使用 umask 命令修改 umask 值,只是临时生效的,要要就修改 umask 值,修改修改 /etc/profile 文件,我们使用 vim 打开该文件,具体命令如下:

vim /etc/profile

打开后,我们搜索 umask ,看到如下所示:

53_Linux umask命令详解.png

即,如果 UID 大于 199(普通用户),则使用此 002 值,如果 UID 小于 199(超级用户),则使用 022 值,因此,修改此文件,则 umask 值就会永久生效。

查询umask值

语法

umask

案例

我们使用 umask 命令,查看当前系统 umask 值,具体命令如下:

umask

运行后,终端输出如下:

54_Linux umask命令详解.png

我们看到,输出了当前 umask 的值为 022。

修改umask值

语法

umask mask

案例

我们首先,使用 touch 命令,创建一个 haicoder.txt 文件,具体命令如下:

touch haicoder.txt

运行后,终端输出如下:

55_Linux umask命令详解.png

现在,我们使用 ls 命令,查看当前文件的权限,具体命令如下:

ls -l haicoder.txt

运行后,终端输出如下:

56_Linux umask命令详解.png

我们看到,此时的文件权限,现在,我们使用 umask 修改系统的 umask 值,具体命令如下:

umask 033

运行后,终端输出如下:

57_Linux umask命令详解.png

现在,我们再次使用 umask 命令,查看当前系统的 umask 值,具体命令如下:

umask

运行后,终端输出如下:

58_Linux umask命令详解.png

我们看到,此时 umask 的值已经被修改了。

Linux umask命令详解总结

Linux 中的 umask 命令用来设置限制新建文件权限的掩码。当新文件被创建时,其最初的权限由文件创建掩码决定。