[转] 什么是 umask

本文解释了umask在Linux系统中的作用,即定义新建文件的默认权限。通过设置umask值,用户可以控制文件对不同用户组的访问权限。文章还介绍了如何计算umask值及常见设置。
我们创建文件的默认权限是怎么来的?如何改变这个默认权限呢?

umask 是什么?

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

如何计算 umask 值?

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

该命令的一般形式为:umask nnn,其中 nnn 可为 000 - 777。

我们只要记住 umask 是从权限中“拿走”相应的位即可。下表是 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 值为 022,则默认目录权限为 755,默认文件权限为 644。


原贴地址:http://www.chinaitpower.com/2005September/2005-09-13/204618.html
umask值用于设置用户创建文件或目录时的默认权限屏蔽值。当你将umask设置为244(八进制表示),这意味着你希望从默认权限中移除某些访问权限。 在Linux系统中,默认情况下: - 普通文件的起始权限是666(即所有用户都可以读和写,但不能执行) - 目录的起始权限是777(即所有用户都可以读、写和执行) 当umask被设置为244时,它会从这些默认权限中减去相应的位。umask的每一位数字代表了要屏蔽的权限位: - 第一个数字2代表文件所有者(user)的权限被屏蔽 - 第二个数字4代表文件所属组(group)的权限被屏蔽 - 第三个数字4代表其他(others)的权限被屏蔽 具体来说: - umask值244换成二进制是010 100 100 - 对于文件所有者,写权限被屏蔽(010) - 对于文件所属组,读权限被屏蔽(100) - 对于其他用户,读权限也被屏蔽(100) 因此,当创建一个新文件时,其实际权限将是默认权限与umask取反后的按位与操作结果。对于普通文件,默认权限666换成二进制是110 110 110。取反umask(~244)得到的是101 011 011,然后进行按位与操作: ``` 110 110 110 (默认权限 666) & 101 011 011 (~umask 244) ------------ 100 010 010 (最终权限 422) ``` 最终的文件权限将是422,换成符号模式就是-r--w--w-,意味着: - 文件所有者可以读 - 文件所属组可以写 - 其他用户可以写 对于目录,同样的umask值244会导致不同的结果,因为目录的默认权限是777。计算过程类似,但起始权限不同: ``` 111 111 111 (默认权限 777) & 101 011 011 (~umask 244) ------------ 101 011 011 (最终权限 533) ``` 最终的目录权限将是533,换成符号模式就是dr-x-wx-wx,意味着: - 文件所有者可以读和执行 - 文件所属组可以写和执行 - 其他用户可以写和执行 如果你想要设置umask值为244,可以在shell中使用以下命令: ```bash umask 244 ``` 请注意,这个设置通常是临时的,只会影响当前的shell会话。如果你希望永久更改umask值,你需要将其添加到你的shell配置文件中,例如`.bashrc`、`.bash_profile`或者系统范围的配置文件如`/etc/profile`等,具体取决于你的需求和使用的shell类型。[^2]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值