zoukankan      html  css  js  c++  java
  • Linux umask使用详解

    1、什么是umask?

      当我们登录系统之后创建一个文件总是有一个默认权限的,那么这个权限是怎么来的呢?这就是umask干的事情。umask设置了用户创建文件的默认 权限,它与chmod的效果刚好相反,umask设置的是权限“补码”,而chmod设置的是文件权限码。一般在/etc/profile、$ [HOME]/.bash_profile或$[HOME]/.profile中设置umask值。

      你的系统管理员必须要为你设置一个合理的 umask值,以确保你创建的文件具有所希望的缺省权限,防止其他非同组用户对你的文件具有写权限。在已经登录之后,可以按照个人的偏好使用umask命 令来改变文件创建的缺省权限。相应的改变直到退出该shell或使用另外的umask命令之前一直有效。一般来说,umask命令是在/etc /profile文件中设置的,每个用户在登录时都会引用这个文件,所以如果希望改变所有用户的umask,可以在该文件中加入相应的条目。如果希望永久 性地设置自己的umask值,那么就把它放在自己$HOME目录下的.profile或.bash_profile文件中。

    2、如何计算umask值?

      umask 命令允许你设定文件创建时的缺省模式,对应每一类用户(文件属主、同组用户、其他用户)存在一个相应的umask值中的数字。对于文件来说,这一数字的最 大值分别是6。系统不允许你在创建一个文本文件时就赋予它执行权限,必须在创建后用chmod命令增加这一权限。目录则允许设置执行权限,这样针对目录来说,umask中各个数字最大可以到7。

    该命令的一般形式为:

      umask nnn

      其中nnn为umask置000-777。

      让我们来看一些例子。

      计算出你的umask值:

      可以有几种计算umask值的方法,通过设置umask值,可以为新创建的文件和目录设置缺省权限。下表列出了与权限位相对应的umask值。

      在计算umask值时,可以针对各类用户分别在这张表中按照所需要的文件/目录创建缺省权限查找对应的umask值。

      例如,umask值002 所对应的文件和目录创建缺省权限分别为6 6 4和7 7 5。

      还有另外一种计算umask值的方法。我们只要记住umask是从权限中“拿走”相应的位即可。

      

    例如,对于umask值002,相应的文件和目录缺省创建权限是什么呢?

      第一步,我们首先写下具有全部权限的模式,即777 (所有用户都具有读、写和执行权限)。

      第二步,在下面一行按照umask值写下相应的位,在本例中是002。

      第三步,在接下来的一行中记下上面两行中没有匹配的位。这就是目录的缺省创建权限。

      稍加练习就能够记住这种方法。

      第四步,对于文件来说,在创建时不能具有执行权限,只要拿掉相应的执行权限比特即可。

    这就是上面的例子, 其中umask值为002:

      1) 文件的最大权限 rwx rwx rwx (777)

      2) umask值为002 --- --- -w-

      3) 目录权限 rwx rwx r-x (775) 这就是目录创建缺省权限

      4) 文件权限 rw- rw- r-- (664) 这就是文件创建缺省权限

    下面是另外一个例子,假设这次u m a s k值为022:

      1) 文件的最大权限 rwx rwx rwx (777)

      2 ) u m a s k值为022 --- -w- -w-

      3) 目录权限 rwx r-x r-x (755) 这就是目录创建缺省权限

      4) 文件权限 rw- r-- r-- (644) 这就是文件创建缺省权限

    3、常用的umask值

      下表列出了一些umask值及它们所对应的目录和文件权限。

    4、umask命令

     1 如果想知道当前的umask 值,可以使用umask命令:
     2 
     3 $umask
     4 
     5 如果想要改变umask值,只要使用umask命令设置一个新的值即可:
     6 
     7 $ umask 002
     8 
     9 确认一下系统是否已经接受了新的umask值:
    10 
    11 $umask
    12 
    13 002
    14 
    15 $touch testfile
    16 
    17 $ls -l testfile
    18 
    19 rw- rw- r--

    在使用umask命令之前一定要弄清楚到底希望具有什么样的文件/目录创建缺省权限。否则可能会得到一些非常奇怪的结果;例如,如果将umask值设置为600,那么所创建的文件/目录的缺省权限就是066!

  • 相关阅读:
    LeetCode 345. Reverse Vowels of a String 题解
    LeetCode 344. Reverse String 题解
    LeetCode 27. Remove Element 题解
    LeetCode 61. Rotate List 题解
    LeetCode 19.Remove Nth Node From End of List 题解
    Android耗电量
    Android 使用adb查看和修改电池信息
    Android AOP AspectJ 插桩
    Flask相关用法
    Monkey日志信息的11种Event percentage
  • 原文地址:https://www.cnblogs.com/chenshengkai/p/13066002.html
Copyright © 2011-2022 走看看