linux 权限掩码 umask

  umaskchmod配套的,总共为4位(gid/uid,属主,组权,其它用户的权限),不过通常用到的是后3个,例如你用chmod 755 file(此时这文件的权限是属主读(4)+(2)+执行(1),同组的和其它用户有读写权限)

 

二 umask的作用
   默认情况下的umask值是022(可以用umask命令查看),此时你建立的文件默认权限是644(6-0,6-2,6-2)建立的目录的默认权限是755(7-0,7-2,7-2)可以用ls -l验证一下哦 现在应该知道umask的用途了吧,它是为了控制默认权限,不要使默认的文件和目录具有全权而设的。

 

三 如何计算umask

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

计算u m a s k值的方法:我们只要记住u m a s k是从权限中拿走相应的位即可。

                                           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

如果umask023,则对于文件所有者,不拿去任何权限,而新建的文件默认没有执行权限,故对文件所有者的权限位rw-6);对组所有者,拿去写权限,原本没有执行权限,故为r--4);对其他用户,拿去写和执行权限,原本没有执行权限,故为r--4);

如果umask023,因为没有新建目录没有执行权限的限制。则对于目录所有者,不拿去任何权限,故对目录所有者的权限为rwx7);对组所有者,拿去写权限,故为r-x5);对其他用户,拿去写和执行权限,故为r--4);

 

四 常用的u m a s k值及对应的文件和目录权限

umask

目录

文件

0 2 2

7 5 5

6 4 4

0 2 7

7 5 0

6 4 0

0 0 2

7 7 5

6 6 4

0 0 6

7 7 1

6 6 0

0 0 7

7 7 0

6 6 0

 

五 修改umask
  知道了umask的作用后,你可以修改umask的值了,例如:umask 024则以后建立的文件和目录的默认权限就为642753了。

 

六 将umask值保存到环境文件
  若要长期修改umask的值,可以把它写进/etc/profile~/.profile~/.bash_profile中。

### Linuxumask 的取反掩码概念及其作用 #### 什么是 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)}") ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值