Linux 中的 umask 命令用来设置限制新建文件权限的掩码。当新文件被创建时,其最初的权限由文件创建掩码决定。
用户每次注册进入系统时,umask 命令都被执行, 并自动设置掩码 mode 来限制新文件的权限。用户可以通过再次执行 umask 命令来改变默认值,新的权限将会把旧的覆盖掉。
Linux 是注重安全性的操作系统,而安全的基础在于对权限的设定,不仅所有已存在的文件和目录要设定必要的访问权限,创建新的文件和目录时,也要设定必要的初始权限。
Windows 系统中,新建的文件和目录时通过继承上级目录的权限获得的初始权限,而 Linux 不同,它是通过使用 umask 默认权限来给所有新建的文件和目录赋予初始权限的。
umask 默认权限确实由 4 个八进制数组成,但第 1 个数代表的是文件所具有的特殊权限(SetUID、SetGID、Sticky BIT),后 3 位数字是 umask 权限值。
注意,虽然 umask 默认权限是用来设定文件或目录的初始权限,但并不是直接将 umask 默认权限作为文件或目录的初始权限,还要对其进行 “再加工”。
文件和目录的真正初始权限,可通过以下的计算得到:
文件(或目录)的初始权限 = 文件(或目录)的最大默认权限 - umask权限
显然,如果想最终得到文件或目录的初始权限值,我们还需要了解文件和目录的最大默认权限值。在 Linux 系统中,文件和目录的最大默认权限是不一样的:
用来设置限制新建文件权限的掩码。
umask [options] mask
参数 | 描述 |
---|---|
options | umask 命令使用的参数。 |
mask | 权限掩码。 |
选项 | 含义 |
---|---|
-p | 输出的权限掩码可直接作为指令来执行。 |
-S | 以符号方式输出权限掩码。 |
实例 | 描述 |
---|---|
umask | 输出当前系统默认的 umask 值。 |
umask mask | 设置当前系统 umask 值。 |
使用 umask 命令修改 umask 值,只是临时生效的。
使用 umask 命令修改 umask 值,只是临时生效的,要要就修改 umask 值,修改修改 /etc/profile 文件,我们使用 vim 打开该文件,具体命令如下:
vim /etc/profile
打开后,我们搜索 umask ,看到如下所示:
即,如果 UID 大于 199(普通用户),则使用此 002 值,如果 UID 小于 199(超级用户),则使用 022 值,因此,修改此文件,则 umask 值就会永久生效。
umask
我们使用 umask 命令,查看当前系统 umask 值,具体命令如下:
umask
运行后,终端输出如下:
我们看到,输出了当前 umask 的值为 022。
umask mask
我们首先,使用 touch 命令,创建一个 haicoder.txt 文件,具体命令如下:
touch haicoder.txt
运行后,终端输出如下:
现在,我们使用 ls 命令,查看当前文件的权限,具体命令如下:
ls -l haicoder.txt
运行后,终端输出如下:
我们看到,此时的文件权限,现在,我们使用 umask 修改系统的 umask 值,具体命令如下:
umask 033
运行后,终端输出如下:
现在,我们再次使用 umask 命令,查看当前系统的 umask 值,具体命令如下:
umask
运行后,终端输出如下:
我们看到,此时 umask 的值已经被修改了。
Linux 中的 umask 命令用来设置限制新建文件权限的掩码。当新文件被创建时,其最初的权限由文件创建掩码决定。