创建新文件的权限UMASK

我们创建文件的默认权限是怎么来的?如何改变这个默认权限呢? 答案是umask?

当我们登录系统之后创建一个文件总是有一个默认权限的,那么这个权限是怎么来的呢?这就是umask干的事情。umask设置了用户创建文件的默认权限,它与chmod的效果刚好相反,umask设置的是权限“补码”,而chmod设置的是文件权限码

如何计算umask值?

umask命令允许你设定文件创建时的缺省模式,对应每一类用户(文件属主、同组用户、其他用户)存在一个相应的umask值中的数字。

对于文件来说,这一数字的最大值分别是6。

系统不允许你在创建一个文本文件时就赋予它执行权限,必须在创建后用chmod命令增加这一权限。

目录则允许设置执行权限,这样针对目录来说,umask中各个数字最大可以到7。

该命令的一般形式为:umask nnn (其中nnn为umask置000 - 777)

我们只要记住u m a s k是从权限中“拿走”相应的位即可

如:umask值为022,则默认目录权限为755,默认文件权限为644

下表是umask值与权限的对照表:

umask 文件 目录

--------------------

0 6 7

1 6 6

2 4 5

3 4 4

4 2 3

5 2 2

6 0 1

7 0 0

--------------------

umask一般在/etc/profile、$ [HOME]/.bash_profile或$[HOME]/.profile中设置,由于profile的读取有一定的顺序:
/etc/profile->$HOME/.profile->$HOME/.bash_profile,所以在.profile里面设置的umask会被后面的profile覆盖了,推荐设置在$HOME/.bash_profile

umask 命令介绍

功能说明:指定在建立文件时预设的权限掩码。
语 法:umask [-S][权限掩码]
补充说明:umask可用来设定[权限掩码]。[权限掩码]是由3个八进制的数字所组成,将现有的存取权限减掉权限掩码后,即可产生建立文件时预设的权限。
参 数:
-S 以文字的方式来表示权限掩码。

文件:用八进制基数666,即无x位(可执行位)rw- rw- rw-.执行位需由用户自行加入

例一:设要生成的文件以rw- r-- r--这样的权限字出现,即真实权限用八进制表示为644,则被666基数减得022,022即掩码。使用umask 022。

注:033效果与022一样,假设使用033掩码进行设置,则真实权限应为633即rw- r-x r-x ,但前提规定文件不生成x位,所以文件的权限最终将以rw-r--r--出现。

目录:用八进制基数777

例二:设要生成的目录权限以rwxr-xr-x这样的权限字出现,即真实权限用八进制表示为755,则被基数为777的权限字相减后,得掩码022。则使用umask 022进行设置。

总结:

掌握二个要点,一、文件基数为666,目录为777,即文件无设x位,目录可设x位。二、chmod是设哪个位,哪么哪个位就有权限,而umask是设哪个位,则哪个位上就没权限。

LINUX UMASK详解

一 权限掩码umask

umask是chmod配套的,总共为4位(gid/uid,属主,组权,其它用户的权限),不过通常用到的是后3个,例如你用chmod 755 file(此时这文件的权限是属主读(4)+写(2)+执行(1),同组的和其它用户有读写权限)

二 umask的作用

默认情况下的umask值是022(可以用umask命令查看)

此时你建立的文件默认权限是644(6-0,6-2,6-2),

建立的目录的默认权限是755(7-0,7-2,7-2),

可以用ls -l验证一下哦 现在应该知道umask的用途了吧,

它是为了控制默认权限,不要使默认的文件和目录具有全权而设的

三 修改umask值

知道了umask的作用后,你可以修改umask的值了,例如:umask 024则以后建立的文件和目录的默认权限就为642,753了

四 将umask值保存到环境文件

若要长期修改umask的值,可以把它写进/etc/profile或~/.profile或~/.bash_profile中,大家应该知道这几个文件是干什么用的吧。

您知道当你建立一个新的档案或目录时,他的预设属性会是什么吗?呵呵!那就与 umask 有关了!那么 umask 是在搞什么呢?

基本上, umask 就是指定『目前使用者在建立档案或目录时候的属性默认值』,那么如何得知或设定 umask 呢?他的指定条件以底下的方式来指定

语法:

[root @test root]# umask
0022
[root@vbird test]# umask 002 <==后面接 3 个数字!
[root@vbird test]# umask
0002

说明:查看 umask 数值为直接输入 umask 即可,而设定呢?没错!就是 umask 之后接三个数字!那么如何来指定呢?主要还是跟 Linux 的档案属性(那九个属性, r, w, x )有关的,而且是以分数的那一个关系为例的,而有底下的规则为辅:

若使用者建立为『档案』则预设『没有可执行 ( x ) 项目』,亦即只有 rw 这两个项目,也就是最大为 666 分

–rw-rw-rw-

若使用者建立为『目录』,则由于 x 与是否可以进入此目录有关,因此预设为所有权限均开放,亦即为 777 分

drwxrwxrwx
那么 umask 指定的是『该默认值需要减掉的权限!』因为 r、w、x 分别是 4、2、1 分,所以啰!也就是说,当要拿掉能写的权限,就是输入 2 分,而如果要拿掉能读的权限,也就是 4 分,那么要拿掉读与写的权限,也就是 6 分,而要拿掉执行与写入的权限,也就是 3 分,这样了解吗?请问您, 5 分是什么?呵呵!就是读与执行的权限啦!

如果以上面的例子来说明的话,因为 umask 为 002 ,所以 user, group 并没有被拿掉属性,不过 others 的属性被拿掉了 2 ( 也就是 w 这个属性 ),那么由于当使用者:
建立档案时:(-rw-rw-rw-) – (——–w-) ==> -rw-rw-r–
建立目录时:(drwxrwxrwx) – (——–w-) ==> drwxrwxr-x
不相信吗?你只要使用 touch test 然后看看这个 test 的档案属性,就可以知道了!那么如何看你这个使用者目前的 umask呢?直接下达 umask 即可!实作看看先:
[root@vbird test]# umask
0002
[root@vbird test]# touch test1
[root@vbird test]# mkdir test2
[root@vbird test]# ls -l
-rw-rw-r– 1 root root 0 Oct 22 00:00 test1
drwxrwxr-x 2 root root 4096 Oct 22 00:00 test2/

发现了什么?呵呵! Test1 的属性为 666-002 = 664 !正确吗?是的!正确!而 test2 这个目录呢?就是 777-002 = 775 !也正确!

[root@vbird test]# umask 003
[root@vbird test]# touch test3
[root@vbird test]# mkdir test4
[root@vbird test]# ll
-rw-rw-r– 1 root root 0 Oct 22 00:03 test3
drwxrwxr– 2 root root 4096 Oct 22 00:03 test4/

嘿!属性又跟刚刚的不一样啰!仔细推敲一下为什么呦!test3 666-003 =663,这是怎么一回事?! 663 应该是 -rw-rw–wx 才对啊!怎么会是上面的属性!呵呵!这里就要特别的给他强调了!『尽量不要以数字相加减啦!』容易造成类似上面的问题!你应该要这样想(-rw-rw- rw-) – (——–wx)=-rw-rw-r–这样就对啦!了解了吗?不要用十进制的数字喔!够能力的话,用二进制来算,不晓得的话,用 rwx 来算喔!

由上面的例子您应该很轻易的就可以发现 umask 的用途!而这个 umask 可以在 /etc/bashrc 里面进行修改喔!预设的情况之下, root 的 umask 为 022 而一般使用者则为 002 ,因为可写的权限蛮严重的,因此预设都会拿掉这个权限!此外,因为 root 比较重要!所以为了安全的需求,其同群组的写入属性就被拿掉了!这东西对于安全性也有一定程度的贡献呦!

例如,对于u m a s k值0 0 2,相应的文件和目录缺省创建权限是什么呢?
第一步,我们首先写下具有全部权限的模式,即7 7 7 (所有用户都具有读、写和执行权限)。
第二步,在下面一行按照u m a s k值写下相应的位,在本例中是0 0 2。
第三步,在接下来的一行中记下上面两行中没有匹配的位。这就是目录的缺省创建权限。
稍加练习就能够记住这种方法。
第四步,对于文件来说,在创建时不能具有文件权限,只要拿掉相应的执行权限比特即
可。
这就是上面的例子,其中u m a s k值为0 0 2:
1) 文件的最大权限rwx rwx rwx (777)
2) umask值为0 0 2 – - – - – - -w-
3) 目录权限rwx rwx r-x (775) 这就是目录创建缺省权限
4) 文件权限rw- rw- r– (664) 这就是文件创建缺省权限
下面是另外一个例子,假设这次u m a s k值为0 2 2:
1) 文件的最大权限rwx rwx rwx (777)
2 ) u m a s k值为0 2 2 – - – -w- -w-
3) 目录权限rwx r-x r-x (755) 这就是目录创建缺省权限
4) 文件权限rw- r– r– (644) 这就是文件创建缺省权限

转载于:https://my.oschina.net/alphajay/blog/112428

Linux新建文件和目录的默认权限 - Umask相关推荐

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

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

  2. umask 和 新建文件、目录的默认权限

    umask (8进制数值) umask的值决定了用户创建的文件和目录的默认权限 umask的值是和用户相关的 root用户默认的umask值是 0022 普通用户的默认的umask的值是 0002 [ ...

  3. linux如何建立隐藏目录,【Linux】文件与目录的默认权限与隐藏权限

    01. 文件默认权限:umask 文件的权限可以使用chmod来改变,但是我们默认创建文件的权限是什么?那就是与umask这个有关了.下来我们学习这个指令 1.1 简单使用umask [root@iZ ...

  4. Linux 删除权限 umask,linux中的umask控制文件或目录的默认权限

    umask命令可以控制着创建文件或目录时指定给文件或目录的默认权限.它使用八进制表示法表示从文件模式属性中删除一个位掩码.使用不带任何参数的umask命令,查看当前掩码值.一般都是0002或0022. ...

  5. Linux文件与目录的默认权限与隐藏权限(chattr,lsattr)

    文章目录 Linux文件与目录的默认权限与隐藏权限 文件默认权限:umask 文件隐藏属性 chattr(配置文件隐藏属性) 使用案例 lsattr(显示文件隐藏属性) 使用案例 文件特殊权限:SUI ...

  6. Linux新建文件和目录的权限

    新建文件的默认权限:666-umask,如果所得结果某位存在执行(奇数)权限,则将其权限+1,偶数不变 新建目录的默认权限:777-umask 非特权用户umask默认是002 root的umask默 ...

  7. 文件与目录的默认权限与隐藏权限

    除了基本r, w, x权限外,在Linux的Ext2/Ext3文件系统下,我们还可以配置其他的系统隐藏属性, 这部份可使用 chattr来配置,而以 lsattr 来查看. 文件默认权限:umask ...

  8. linux创建文件默认权限umask

    linux文件初始权限 前言 linux权限介绍 创建文件与目录初始权限 应用写文件权限 总结 前言 linux系统是绝大部分后端服务器运行的系统,但是笔者一直没有关注过,linux下用户创建目录的权 ...

  9. Linux运维之linux下文件与目录管理

    一.实验环境(rhel7.0版本) 主机环境:rhel7.0 各主机信息 主机名 IP server 172.25.254.1 二.Linux的系统结构 1.Linux系统是一个根文件系统,是一个倒树 ...

  10. Linux里新建文件/目录的默认权限

    Linux里新建文件/目录的默认权限 新建文件默认权限为666,新建目录默认权限为777. 但是要"减去" umask的值,umask的值可以使用umask命令看到,一般情况下,r ...

最新文章

  1. 信息上传服务器加速cpu处理,英特尔发布全新第二代至强可扩展处理器携手浪潮加速新型应用发展...
  2. WebSockets[翻译]
  3. hbase源码系列(十二)Get、Scan在服务端是如何处理?
  4. OpenCV与Python之图像阈值化
  5. python显示1000以内的斐波拉契数列_python实现斐波那契数列
  6. Bicolored RBS
  7. 飞鸽传书已经写了5年,还是老样子。
  8. ai会取代程序员吗_机器会取代程序员吗?
  9. 带你快速实现【C语言】之三子棋(简易版)
  10. 创建自签名数字证书PFX格式
  11. python 爬取种子_利用python代码爬取torrentkitty上的种子
  12. 计算机毕设(附源码)JAVA-SSM基于JAVA宠物店管理系统
  13. Eclipse中文版汉化教程(详细图解)
  14. 4G标准之争,攘外须先安内
  15. (6)微信运动点赞(下)-JsDroid引流脚本混合式开发技术系列教程By飞云脚本学院
  16. RPA案例 | 电商使用超自动化平台提升运营精细化
  17. 第三届蓝桥杯Java组 黄金队列
  18. mysql强制修改root密码
  19. iOS备忘录之华文宋体字库下载
  20. python哈姆雷特词频统计_【Python】哈姆雷特字数统计

热门文章

  1. Oracle SQL性能调整注意事项
  2. 网络设备更换、域架构项目小结
  3. java之模块学习-JAVA的IO流
  4. Google 宣布正式开源 Jib ,帮助 Java 应用快速容器化
  5. Java对象映射XML文件
  6. 在线pdf转word
  7. PHP爬取网页内容并存放至项目文件中
  8. webdriver 弹出框 java_如何使用Java处理Selenium WebDriver中的弹出窗口
  9. 学MySQL,这篇万字总结,真的够用了
  10. 组装电脑时,散热器高度要与机箱适配