为什么linux中权限r对应4、w对应2、x对应1

在Linux中,rwx权限用二进制表示,r为4(100),w为2(10),x为1(1)。当权限集为rwx时,转换成十进制即为7(111)。chmod命令的数字参数由此而来,揭示了文件权限的底层逻辑。

我们都知道,在linux中权限r对应的数字为4,w对应的数字为2,x对应的数字为1。

那,有没有人想过为什么4就代表r?2就代表w?难道是因为读起来朗朗上口???

实际上,rwx权限在操作系统中,如果有,则是二进制1表示,如果没有,则是二进制0来表示。那么,当文件同时拥有rwx权限时,在计算机中权限就被标识成了二进制111,转换为十进制就变成了4(二进制100,r权限)+2(二进制10,w权限)+1(二进制1,x权限)=7(111,rwx权限),于是乎我们常用的chmod命令后面接的数字是怎么来的就很清楚咯

在 Unix/Linux 系统中,文件权限可以使用符号表示法(如 `rwx`)或八进制数字表示。每种权限对应一个特定的数值: --- ## ✅ 权限与八进制值的对应关系 | 权限符号 | 含义 | 八进制值 | |----------|----------------|-----------| | `r` | 读 | 4 | | `w` | 写 | 2 | | `x` | 执行 | 1 | | `-` | 无对应权限 | 0 | 多个权限可以通过**加法**组合: - `rw-` = 4 + 2 + 0 = 6 - `r-x` = 4 + 0 + 1 = 5 - `rwx` = 4 + 2 + 1 = 7 --- ## ✅ 文件权限解析:`r-x-wxr--` 我们将这个权限字符串分为三组,分别代表: 1. **所有者(user)** 2. **所属组(group)** 3. **其他用户(others)** 格式如下: ``` r-x -wx r-- ``` 我们逐组分析: ### 第一组:`r-x`(所有者 user) - `r` = 4 - `-` = 0 - `x` = 1 ➡️ 总和 = 4 + 0 + 1 = **5** ### 第二组:`-wx`(所属组 group) - `-` = 0 - `w` = 2 - `x` = 1 ➡️ 总和 = 0 + 2 + 1 = **3** ### 第三组:`r--`(其他 others) - `r` = 4 - `-` = 0 - `-` = 0 ➡️ 总和 = 4 + 0 + 0 = **4** --- ## ✅ 最终八进制表示形式 将三组的结果按顺序拼接起来: ``` user: 5 group: 3 others: 4 ``` 所以最终八进制权限是: ``` 534 ``` --- ## ✅ 示例验证代码(可选) 虽然 C 语言不直接处理权限转换,但你可以用位运算模拟: ```c #include <stdio.h> int main() { int user = 4 + 0 + 1; // r - x int group = 0 + 2 + 1; // - w x int others = 4 + 0 + 0; // r - - int mode = (user << 6) | (group << 3) | others; printf("Octal permission: %03o\n", mode); // 输出 534 return 0; } ``` 输出: ``` Octal permission: 534 ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值