许可位说明

时间:2012-11-23 20:57:50

标签: c linux posix gnu

我正在查看stat()chmod()等各种函数中使用的权限位,我想要描述实际定义的宏。例如S_IRUSR表示它由00400(GNU / Linux)表示。我的问题是,有人可以描述00400实际上是什么吗?这是一个数字,什么?我理解如何OR宏,我只是没有得到宏实际上是什么。

2 个答案:

答案 0 :(得分:2)

我将描述允许的最左边三个数字,这也将解释S_IRUSR,

所以每个数字都是八进制数。每个数字可以是0到7.每个八进制数可以转换为3位二进制数。每个位代表一个权限。

Left most bit = Read permission
Middle bit    = Write permission
Right most bit= Execute permission

允许将0到7写入二进制并查看权限位:

Octal    Binary 
0        0 0 0 (No Read,  No Write,  No Execute) -- No permission
1        0 0 1 (No Read,  No Write,  Yes you can execute)
2        0 1 0 (No Read,  Can Write, No execute)
3        0 1 1 (No Read,  Can Write, Can execute)
4        1 0 0 (Can Read, No Write,  No Execute)
5        1 0 1 (Can Read, No Write,  Can execute)
6        1 1 0 (Can Read, Can Write, No execute)
7        1 1 1 (Can Read, Can Write, Can execute)

所以每个数字代表权限。现在接下来的部分是针对这些人员。 让最左边的三个数字是XYZ: 现在,

X means permission given to the owner of the file.
Y means permission given to the group of the owner.
Z means permission given to all other users in system , outside of user's group.

鉴于此,Z_ISUSR = 00400,现在4表示用户可读取IRUSR =用户可读。

这三个是权限中的重要数字,它们仅指定赋予文件的权限。

答案 1 :(得分:0)

Wiki有很好的解释here

从链接页面:

0 --- no permission
1 --x execute
2 -w- write
3 -wx write and execute
4 r-- read
5 r-x read and execute
6 rw- read and write
7 rwx read, write, and execute