文件权限掩码(umask)

本文解释了umask(文件权限掩码)的概念及其在文件和目录创建时的作用。通过两个例子展示了如何设置umask来控制文件和目录的默认权限。

今天在看HIVE授权管理时看到一个概念:文件权限掩码(umask)

 

细看了一下,大概是这样一个意思:

umask需要一个相逆过程和文件的x位设置问题

 

功能说明:指定在建立文件时预设的权限掩码。
语  法: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` 是一种用于定义新创建文件或目录默认权限的机制。它通过从最大可能权限中减去掩码值,从而决定实际分配给文件或目录的初始权限[^1]。 #### 如何计算 umask 值? 当用户运行 `umask` 命令时,返回的是一个八进制数值,该值表示需要屏蔽掉的最大权限位。例如: ```bash [userA@linux01 ~]$ umask 0027 ``` 这里的 `0027` 表示掩码值为 `0027`(八进制形式),其中每一位分别对应于特殊权限、属主权限、同组权限以及其他用户的权限[^2]。 #### 文件和目录的最大权限 - **对于文件**:其理论上的最大权限是 `666`(读+写权限)。 - **对于目录**:其理论上的最大权限是 `777`(读+写+执行权限)。 这是因为文件通常不会被赋予可执行权限,而目录则需要具备执行权限以便访问内部内容[^3]。 #### 计算最终权限的方法 要得到新创建对象的实际权限,需按照如下方式操作: 1. 将最大权限与 `umask` 值按位相减; 2. 结果即为目标对象的默认权限。 具体例子说明如下: 假设当前系统的 `umask` 设置为 `0027`,那么: - 对于文件,默认权限将是 `(666 - 027)` 即 `640`,意味着只有属主具有读写权,其他人都无任何权利; - 对于目录,则变为 `(777 - 027)` 或者说 `750` ,这表明除开自己外仅允许所属群组成员进入浏览但不可修改删除等动作发生[^4]。 #### 使用场景举例 如果希望调整项目协作环境下的共享程度可以通过更改此参数实现更灵活控制比如设置成较低数值如`0002`让团队成员之间更容易互相查看彼此的工作成果而不至于完全开放给所有人随意篡改破坏数据安全边界等等情况都需要合理规划好这些细节方面的考量因素才行哦! ```python # Python 示例展示如何模拟计算过程 def calculate_permissions(max_perm, umask_value): """Calculate final permissions based on max permission and umask.""" return int(str(int(oct(max_perm), 8) ^ int(umask_value)), 8) file_max_permission = 0o666 directory_max_permission = 0o777 current_umask = '0027' calculated_file_perms = calculate_permissions(file_max_permission, current_umask) print(f"Calculated File Permissions: {oct(calculated_file_perms)}") calculated_dir_perms = calculate_permissions(directory_max_permission, current_umask) print(f"Calculated Directory Permissions: {oct(calculated_dir_perms)}") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值