Linux—umask(创建文件时的掩码)用法详解

39 篇文章 2 订阅
1 篇文章 0 订阅

umask 基本用法

  在 Linux 系统中,我们创建一个新的文件或者目录的时候,这些新的文件或目录都会有默认的访问权限,umask 命令与文件和目录的默认访问权限有关。若用户创建一个文件,则文件的默认访问权限为 -rw-rw-rw-,创建目录的默认权限 drwxrwxrwx ,而 umask 值则表明了需要从默认权限中去掉哪些权限来成为最终的默认权限值。

umask [-p] -S [mode]

  umask 指定用户创建文件时的掩码,其中的 mode 和 chmod 的命令中的格式一样。如果不用 mode 参数,则显示当前的 umask 设置。如果用 -S 参数,则以符号形式显示设置

$ umask
0022 	(第一个 0 表示是 8 进制,后面的三位数字用 8 进制表示)
$ umask -S
u=rwx,g=rx,o=rx

  比如该用户 touchgedit 创建一个文件,则其默认权限为 -rw-r-r–,如果该用户创建一个可执行文件(比如编译生成的程序),则其默认权限为 -rwxr-xr-x。也就是说,由于 umask 的设定,创建的文件默认是不具有 gw 权限和 ow 权限的,除非用 chmod 更改权限。

umask 原理解析

  umask 默认值一般都是 0002,其中第一个 0 与特殊权限有关,可以暂时不用理会,后三位 002 则与普通权限(rwx)有关,其中 002 中第一个 0 与用户(user)权限有关,表示从用户权限减 0,也就是权限不变,所以文件的创建者的权限是默认权限(rw),第二个 0 与组权限(group)有关,表示从组的权限减 0,所以群组的权限也保持默认权限(rw),最后一位 2 则与系统中其他用户(others)的权限有关,由于 w=2,所以需要从其他用户默认权限(rw)减去 2,也就是去掉写( w )权限,则其他人的权限为 rw - w = r,则创建文件的最终默认权限为 -rw-rw-r–

  touch 创建一个文件,创建的文件默认权限(mode)为 rw-rw-rw-,用数字表示也就是 0666,这个默认的 mode 的值要与 umask取反值按位与的出来的值才是文件的权限的值;也就是 mode 的值减去 umask 的值,得出来的值,我们来看一下计算过程。

在这里插入图片描述

更改 umask 值

  可以通过命令 umask 值 的方式来更改 umask 值,比如我要把 umask 值改为 022,则使用命令 umask 022 即可。改成 022 后,用户权限不变,群组权限减掉 2,也就是去掉写(w)权限,其他用户减 2,也就是去掉写权限(w)。

$ umask 022
$ umask
$ touch test.txt
$ ls -l test.txt
-rw-r--r-- 1 name name 0 5月  24 20:49 test.txt
$ mkdir test
$ ls -al test
总用量 8
drwxr-xr-x  2 name  name    4096 5月  24 20:49 .
drwxrwxr-x 52 name  name    4096 5月  24 20:49 ..

  可以看到文件的默认访问权限变为了 -rw-r-----,目录 test 的默认访问权限变为了 drwxr-x—这种方式并不能永久改变 umask 值,只是改变了当前会话的 umask 值,打开一个新的 terminal 输入 umask 命令,可以看到 umask 值仍是默认的 002。要想永久改变 umask 值,则可以修改文件 /etc/bashrc,在文件中添加一行 umask 022

总结

  所以当我们想改变创建文件和目录时的默认访问权限,则可以通过 umask 命令来实现,省去了用 chmod 修改权限。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值