【Linux】权限掩码(umask)

目录

前言

一、利用八进制数值表示文件或目录的权限属性

二、系统默认的权限掩码和权限掩码的作用原理

三、分析权限掩码改变文件或目录的权限属性


前言

权限掩码是由4个数字组合而成的,默认的第一位数字是0;后三位数字分别由八进制位数字组成。权限掩码主要利用后三位数字发挥作用,后三位八进制数字代表的是文件或目录的权限属性。权限掩码存在的意义是:可以通过修改它来改变所创建的文件或目录的默认权限属性。

在看文件掩码之前我们来看一下用八进制位数值表示文件或目录的权限属性 :

一、用八进制数值表示文件或目录的权限属性

文件或目录的权限属性有三种类型:

r:可读        w:可写        x:可执行   (这里其实还有一个t,t是x的一种特殊替换)

下面来举1个例子:

r-x-w-r-x 用二进制数值表示:101 010 101        进而用八进制数值表示为:525

验证示例如下:

77e2c5c0a67b49ae9f8b534be9b28a1d.png 

二、系统默认的权限掩码和权限掩码的作用原理

系统默认的权限掩码是:

bac49fde9d444daba5b360e29c74a620.png

 

这里需要注意的一个点是:

系统默认给普通文件的起始权限其实是666。

系统默认给普通文件的起始权限其实是777。

 

那为什么下面新创建的文件的权限是664,新创建的目录的权限是775 ?

993bf221441645c5ae3c9765b8ed5483.png

这就涉及到了权限掩码的作用原理,这种作用原理是:

文件或目录的最终权限属性=文件或目录的起始权限属性&(~umask)

下面大家可以可以自行通过该作用原理测试。

三、分析权限掩码改变文件或目录的权限属性

那如果我们想创建一个可以仅让自己修改和查看的文件(无论所属组的用户如何改变),即最终的文件权限属性是:rw-------(当然,这里如果要想让其他用户能看见该文件的内容,其他用户必须先可以访问该文件所在的用户才可以),该如何利用权限掩码来操作呢?

仅需要对权限掩码进行修改即可:

0baf9f627f26442793b329b4d16099d9.png

 

 

在Java中,自定义权限掩码(Custom Permission Masks)通常是在使用Java安全模型(Java Security Model)时,为特定操作或权限分配的一种抽象表示。这个模型用于控制代码运行时对系统资源(如文件、网络连接等)的访问权限。 在Java中,权限是由一组位(bits)组成的掩码,每个位代表一种特定的权限级别。例如,`java.lang.RuntimePermission` 类提供了一组预定义的权限,比如 `accessClassInPackage` 和 `setContextClassLoader`,它们都有自己的二进制掩码。 如果你需要自定义权限,你可以创建一个新的权限类,继承自 `java.security.Permission` 或其子类,比如 `BasicPermission` 或 `RuntimePermission`。然后,你需要为这个新权限定义一个名称和一个掩码字符串,该字符串通常是一个以`"permissionName=mask"`格式表示的字符串,其中`permissionName`是权限的类别名,`mask`是你自定义的二进制掩码。 例如: ```java public class MyCustomPermission extends BasicPermission { public MyCustomPermission(String name) { super(name); } private static final String MASK = "00000001"; // 假设这是一个自定义的四位掩码,表示四种不同的权限级别 } // 使用自定义权限 MyCustomPermission permission = new MyCustomPermission("myCustomAction"); System.out.println(permission.getName()); // 输出 "myCustomAction" System.out.println(permission.getActions()); // 输出 "myCustomAction" ``` 在实际应用中,可能需要在`Policy`或`PolicyProvider`中注册这些自定义权限,并在`SecurityManager`的检查方法中处理这些权限的验证。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值