umask计算创建文件、目录的默认权限
很多人以为 创建文件默认权限就是 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计算创建文件、目录的默认权限的更多相关文章
- Linux_修改创建文件夹时默认权限(修改为能上传)
1:查看当前权限 umask 0022 意思就是权限为:777-022 =755 读 2:临时修改 umask 020 020 意思为:777-020=757 读写上传 3:永久修改 回到根目录 cd ...
- linux 权限管理命令chown、chgrp、umask、linux新建文件或目录的默认权限755
chown /bin/chownchown [用户] [文件或目录] 改变文件或目录的所有者只有root可以改变文件或目录的所有者 root用户:mkdir /tmptouch /tmp/test.f ...
- Linux学习之CentOS(九)-----文件与目录的默认权限与隐藏权限
文件与目录的默认权限与隐藏权限 一个文件有若干个属性, 包括读写运行(r, w, x)等基本权限,及是否为目录 (d) 与文件 (-) 或者是连结档 (l) 等等的属性! 要修改属性的方法在前面也约略 ...
- 文件与目录的默认权限与隐藏权限【转vbird】
一个文件有若干个属性, 包括读写运行(r, w, x)等基本权限,及是否为目录 (d) 与文件 (-) 或者是连结档 (l) 等等的属性! 要修改属性的方法在前面也约略提过了(chgrp, chown ...
- Linux学习之CentOS(八)----文件与目录的默认权限与隐藏权限(转)
文件与目录的默认权限与隐藏权限 一个文件有若干个属性, 包括读写运行(r, w, x)等基本权限,及是否为目录 (d) 与文件 (-) 或者是连结档 (l) 等等的属性! 要修改属性的方法在前面也约略 ...
- Linux-鸟菜-6-文件与目录的 默认权限、隐藏权、特殊权限
Linux-鸟菜-6-文件与目录的 默认权限.隐藏权.特殊权限 除了基本r,w,x权限外,在Linux还可以设定其他系统隐藏属性,可以用chattr来设定,和lsattr来查看,但注意一点,CentO ...
- 修改Mac新建文件、文件夹的默认权限
Mac 新建文件和文件夹默认 当前用户才有读和写的权限,其他用户只有读的权限 修改Mac新建文件.文件夹的默认权限的步骤如下: 1.打开 “终端” 2.在终端中输入以下命令: 创建文件时,从默认值(对 ...
- Linux文件与目录的默认权限与隐藏权限 - umask, chattr, lsattr, SUID, SGID, SBIT, file
文件默认权限:umask [root@www ~]# umask 0022 <==与一般权限有关的是后面三个数字! [root@www ~]# umask -S u=rwx,g=rx,o=rx ...
- LINUX创建文件和目录的默认权限
在linux中,一位用户在创建文件和目录时,对其具有的权限都是一样的,如需更改,需要chmod命令做相应的更改.为什么?其实是权限掩码起作用了. 权限掩码的作用就是规范初创文件和目录时候的权限设置,免 ...
随机推荐
- Spring (IOC)配置
就是这个东西,里面的不同标签,所代表的不同含义 beans 里面有很多的bean ,每一个bean都是容器里面的一个对象 1.别名alias (另外的一个名字) XML <alias na ...
- vue-core-video-player-基于vue.js的视频播放器组件
一 介绍 一款基于 vue.js 的轻量级的视频播放器插件插件 个性化配置 i18n 服务端渲染 画中画模式 事件订阅 易于开发 移动端适配 1.1 官方文档 https://core-player. ...
- python3 Softmax函数
Softmax函数公式 Softmax的作用简单的说就计算一组数值中每个值的占比 import torch import torch.nn.functional as F # 原始数据tensor y ...
- dfs深搜
一.01背包dfs //回溯法,01背包 #include<iostream> #include<algorithm> using namespace std; const i ...
- pandas子集选取的三种方法:[]、.loc[]、.iloc[]
pandas读取Excel.csv文件中的数据时,得到的大多是表格型的二维数据,在pandas中对应的即为DataFrame数据结构.在处理这类数据时,往往要根据据需求先获取数据中的子集,如某些列.某 ...
- HAVING,多表查询思路,可视化软件navicat,多表查询练习题,
HAVING "where"是一个约束声明,在查询数据库的结果返回之前对数据库中的查询条件进行约束,即在结果返回之 前起作用,且"where"后面不能写&quo ...
- 微信H5页面唤醒APP并传参跳转uniapp
主要实现是利用微信内置浏览器支持的<wx-open-launch-app>开放标签可以让你的H5网页拉起APP 在链接https://developers.weixin.qq.com/ ...
- 有了 Promise 和 then,为什么还要使用 async?
有了 Promise 和 then,为什么还要使用 async? 本文写于 2020 年 5 月 13 日 最近代码写着写着,我突然意识到一个问题--我们既然已经有了 Promise 和 then,为 ...
- kvm 虚拟化技术 1.1 安装
1.·VMware开启虚拟化设置 2.安装一些虚拟化的必备插件 yum install -y qemu-kvm qemu-kvm-tools libvirt virt-manager virt-ins ...
- 超级简单!CentOS-8 安装 MySQL 8.0,比喝水还简单
中国人不骗中国人 果然是系统和MySQL的版本越高安装越便利了 在阿里云的 CentOS-8 比喝开水还简单的安装 MySQL 8.0,开始~ 1.以 root 用户通过 CentOS 软件包管理器来 ...