很多人以为 创建文件默认权限就是 666-umask=创建文件的默认权限
      创建目录的默认权限就是 777-umask=创建目录的默认权限   这种计算其实是不严谨的

为什么我们创建的文件的权限是 644 呢?
我们创建文件的默认权限是怎么来的?

1.umask是什么

umask 命令允许你设定文件创建时的缺省模式,对应每一类用户(文件属主、同组用户、其他用户)存在一个相 应的 umask 值中的数字
文件默认权限=666 ,目录默认权限=777
我们一般在/etc/profile、$ [HOME]/.bash_profile 或$[HOME]/.profile 中设置 umask 值。
永久生效,编辑用户的配置文件vim .bash_profile

vim /etc/profile

说明:

UID 大于 199 且用户的组名和用户名一样,那么 umask 值为002 ,否则为022.
-gt 在shell中表示大于; id -g 显示用户组 ID ,id -gn 显示组名

临时生效: umask 权限补码

[root@study test]# umask 044
[root@study test]# touch 1.txt
[root@study test]# ll
总用量 0
-rw--w--w- 1 root root 0 7月 15 16:21 1.txt

创建文件默认权限是666  umask为044创建的文件权限为622 -rw--w--w-

看起来好像创建文件的权限是666-umask

那么真是666-umask这样计算的吗?

2.实验:将umask设为033

期望结果:

  ①.创建文件 666-033=633  即 -rw--wx-wx

  ②.创建目录 777-033=744 即  drwxr--r--

实验结果:
  ①.创建文件的权限为  644 即 -rw-r--r--
  ②.创建目录的权限为  744 即 drwxr--r--

[root@study test]# umask 033
[root@study test]# touch 2.txt
[root@study test]# mkdir 3
[root@study test]# ll
总用量 0
-rw-r--r-- 1 root root 0 7月 15 16:27 2.txt
drwxr--r-- 2 root root 6 7月 15 16:27 3

可以看到,目录权限预期与实验结果一样,但是文件权限预期与实验结果不一样,这是为什么呢?

其实用 默认创建权限减去umask是不严谨的,他有自己的计算公式

首先,创建文件的默认权限是666,创建目录的默认权限是777

那么当我们设了一个umask,创建的默认权限是什么呢?

3.通过umask计算文件、目录的默认创建权限:

3.1.计算方法:

①.将默认权限(目录777,文件 666)和umask 值都转换为2 进制   

②.对 umask 取反 

③.将默认权限和umask 取反后的值做与运算    

④.将得到的二进制值再转换 8 进制,即为权限

以上面的实验为例

3.2.计算创建文件的默认权限:

umask为033  转化为二进制为 000 011 011

文件默认权限666转化为二进制 110 110 110

将umask转化为二进制后取反为 111 100 100

最后将默认文件权限与umask取反后做与运算得出

110 110 110
111 100 100
——————
110 100 100     即644 转换成字符为 -rw-r--r--

3.3.计算创建目录的默认权限

umask为033  转化为二进制为 000 011 011
文件默认权限666转化为二进制 111 111 111
将umask转化为二进制后取反为 111 100 100

最后将默认目录权限与umask取反后做与运算得出

111 111 111
111 100 100
——————
111 100 100    即744  转换为字符为 drwxr--r--

umask计算创建文件、目录的默认权限的更多相关文章

  1. Linux_修改创建文件夹时默认权限(修改为能上传)

    1:查看当前权限 umask 0022 意思就是权限为:777-022 =755 读 2:临时修改 umask 020 020 意思为:777-020=757 读写上传 3:永久修改 回到根目录 cd ...

  2. linux 权限管理命令chown、chgrp、umask、linux新建文件或目录的默认权限755

    chown /bin/chownchown [用户] [文件或目录] 改变文件或目录的所有者只有root可以改变文件或目录的所有者 root用户:mkdir /tmptouch /tmp/test.f ...

  3. Linux学习之CentOS(九)-----文件与目录的默认权限与隐藏权限

    文件与目录的默认权限与隐藏权限 一个文件有若干个属性, 包括读写运行(r, w, x)等基本权限,及是否为目录 (d) 与文件 (-) 或者是连结档 (l) 等等的属性! 要修改属性的方法在前面也约略 ...

  4. 文件与目录的默认权限与隐藏权限【转vbird】

    一个文件有若干个属性, 包括读写运行(r, w, x)等基本权限,及是否为目录 (d) 与文件 (-) 或者是连结档 (l) 等等的属性! 要修改属性的方法在前面也约略提过了(chgrp, chown ...

  5. Linux学习之CentOS(八)----文件与目录的默认权限与隐藏权限(转)

    文件与目录的默认权限与隐藏权限 一个文件有若干个属性, 包括读写运行(r, w, x)等基本权限,及是否为目录 (d) 与文件 (-) 或者是连结档 (l) 等等的属性! 要修改属性的方法在前面也约略 ...

  6. Linux-鸟菜-6-文件与目录的 默认权限、隐藏权、特殊权限

    Linux-鸟菜-6-文件与目录的 默认权限.隐藏权.特殊权限 除了基本r,w,x权限外,在Linux还可以设定其他系统隐藏属性,可以用chattr来设定,和lsattr来查看,但注意一点,CentO ...

  7. 修改Mac新建文件、文件夹的默认权限

    Mac 新建文件和文件夹默认 当前用户才有读和写的权限,其他用户只有读的权限 修改Mac新建文件.文件夹的默认权限的步骤如下: 1.打开 “终端” 2.在终端中输入以下命令: 创建文件时,从默认值(对 ...

  8. Linux文件与目录的默认权限与隐藏权限 - umask, chattr, lsattr, SUID, SGID, SBIT, file

    文件默认权限:umask [root@www ~]# umask 0022 <==与一般权限有关的是后面三个数字! [root@www ~]# umask -S u=rwx,g=rx,o=rx ...

  9. LINUX创建文件和目录的默认权限

    在linux中,一位用户在创建文件和目录时,对其具有的权限都是一样的,如需更改,需要chmod命令做相应的更改.为什么?其实是权限掩码起作用了. 权限掩码的作用就是规范初创文件和目录时候的权限设置,免 ...

随机推荐

  1. 1.7 Linux系统的优缺点

    本节,我们介绍一下 Linux 系统的优缺点.Linux 不可比拟的优势如下. 1) 大量的可用软件及免费软件 Linux 系统上有着大量的可用软件,且绝大多数是免费的,比如声名赫赫的 Apache. ...

  2. 分享一个为Linux创建的任务管理器,看起来就像Windows的任务管理器

    关注「开源Linux」,选择"设为星标" 回复「学习」,有我为您特别筛选的学习资料~ 链接:https://www.linuxmi.com/sysmontask-linux-tas ...

  3. muduo源码分析之回调模块

    这次我们主要来说说muduo库中大量使用的回调机制.muduo主要使用的是利用Callback的方式来实现回调,首先我们在自己的EchoServer构造函数中有这样几行代码 EchoServer(Ev ...

  4. C++面向对象-类和对象那些你不知道的细节原理

    一.类和对象.this指针 OOP语言的四大特征是什么? 抽象 封装.隐藏 继承 多态 类体内实现的方法会自动处理为inline函数. 类对象的内存大小之和成员变量有关 类在内存上需要对齐,是为了减轻 ...

  5. scanf("%d",a[i]+j)为什么不加取地址符号

    为什么我画的地方不加取地址符号? 不要在意标题为什么不加分号,因为长度太长了! 二维数组a[3][5]中,a[3]储存的是下一维的地址,a[1]等同于&a[1][0] 同理,a[1]+1等于& ...

  6. C# 给Word中的字符添加强调符号(着重号)

    在Word中添加着重号,即强调符号,可以在选中字符后,鼠标右键点击,选择"字体",在窗口中可直接选择"着重号"添加到文字,用以对重要文字内容起加强提醒的目的,如 ...

  7. arts-week13

    Algorithm 992. Sort Array By Parity II - LeetCode Review https://tls.ulfheim.net/ HTTP协议图解 Tip linux ...

  8. 561. Array Partition I - LeetCode

    Question 561. Array Partition I Solution 题目大意是,给的数组大小是2n,把数组分成n组,每组2个元素,每个组取最小值,这样就能得到n个值,怎样分组才能使这n个 ...

  9. python使用vosk进行中文语音识别

    操作系统:Windows10 Python版本:3.9.2 vosk是一个离线开源语音识别工具,它可以识别16种语言,包括中文. 这里记录下使用vosk进行中文识别的过程,以便后续查阅. vosk地址 ...

  10. unity---Lighting面板

    打开Lighting面板 将天空盒改为别墅 图片转化为Cube 设置一个材质球