Linux umask的使用

umask

在Linux系统下, 创建一个文件/目录时, 系统都会给它赋予一个默认的权限, 这个默认权限就是umask设置的。
umask设置了用户创建文件的默认权限, 它与chmod的效果刚好相反, umask设置的是权限的反码, 也叫作预设权限(权限掩码)


你的系统管理员必须要为你设置一个合理的 `umask`值, 以确保你创建的文件具有所希望的缺省权限, 防止其他非同组用户对你的文件具有写权限。在已经登录之后, 可以按照个人的偏好使用`umask`命令来改变文件创建的缺省权限。相应的改变**直到退出该shell**或**使用另外的`umask`命令之前**一直有效。

一般来说, umask命令是在/etc/profile文件中设置的, 每个用户在登录时都会引用这个文件, 所以如果希望改变所有用户的umask, 可以在该文件中加入相应的条目。如果希望永久 性地设置自己的umask值, 那么就把它放在自己$HOME目录下的.profile.bash_profile文件中。

umask的使用

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

注意:

  • 对于文件来说, 权限数字的最大值是6。因为系统不允许你在创建一个文本文件时就赋予它执行权限, 必须在创建后用chmod命令增加这一权限。
  • 目录允许设置执行权限, 这样针对目录来说, umask中各个数字最大可以到7

查看当前umask

1
2
3
4
$ umask
0002 # 只看后四位
$ umask -S
u=rwx,g=rwx,o=rwx # 字符形式查看

设置umask

1
umask nnn   # nnn为 000-777

计算umask的值

设置umask值后, 怎么快速得到创建文件的权限呢

减法

一种是使用减法
记住文件权限最大值是6, 目录权限最大值是7,
当你umask 002, 那么文件得到的权限就是 664, 因为 6-0=6 6-0=6 6-2=4, 目录则是775

异或

另一种就是异或
记住文件权限最大值6的二进制是110, 目录权限最大值7的二进制是111,
当你umask 002, 那么文件得到的权限就是 664, 因为二进制异或: 000110=110、000110=110、010^110=100, 所以权限就是664, 目录则是775

-------本 文 结 束 感 谢 您 的 阅 读-------
赞赏一杯咖啡
0%