umask 使用方法
A 什么是 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 文件中.
B 如何计算 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 值与权限
umask 文件 目录
- 6 7
- 6 6
- 4 5
- 4 4
- 2 3
- 2 2
- 0 1
- 0 0
例如, 对于 umask 值 0 0 2, 相应的文件和目录缺省创建权限是什么呢?
第一步, 我们首先写下具有全部权限的模式, 即 777 (所有用户都具有读, 写和执行权限).
第二步, 在下面一行按照 umask 值写下相应的位, 在本例中是 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) 这就是文件创建缺省权限
C 常用的 umask 值
下表列出了一些 umask 值及它们所对应的目录和文件权限.
常用的 umask 值及对应的文件和目录权限
umask 值 目录 文件
- 0 22 7 5 5 6 4 4
- 0 27 7 5 0 6 4 0
- 0 02 7 7 5 6 6 4
- 0 06 7 7 1 6 6 0
- 0 07 7 7 0 6 6 0
D umask 命令
如果想知道当前的 umask 值, 可以使用 umask 命令:
$umask
如果想要改变 umask 值, 只要使用 umask 命令设置一个新的值即可:
$ umask 002
确认一下系统是否已经接受了新的 u m a s k 值:
- $umask
- 002
- $touch testfile
- $ls -l testfile
- rw- rw- r--
在使用 umask 命令之前一定要弄清楚到底希望具有什么样的文件 / 目录创建缺省权限. 否则可能会得到一些非常奇怪的结果; 例如, 如果将 umask 值设置为 6 0 0, 那么所创建的文件 / 目
录的缺省权限就是 0 6 6!
来源: http://www.bubuko.com/infodetail-2946566.html