Linux

您所在的位置:网站首页 umake好用吗 Linux

Linux

2024-06-19 22:37| 来源: 网络整理| 查看: 265

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

  比如该用户 touch 或 gedit 创建一个文件,则其默认权限为 -rw-r-r–,如果该用户创建一个可执行文件(比如编译生成的程序),则其默认权限为 -rwxr-xr-x。也就是说,由于 umask 的设定,创建的文件默认是不具有 g 的 w 权限和 o 的 w 权限的,除非用 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 修改权限。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3