我正在查看各种函数中使用的权限位,例如stat()
and chmod()
,我想要描述实际定义的宏是什么。例如S_IRUSR
说它由00400
(GNU/Linux) 表示。我的问题是,有人可以描述一下00400
实际情况吗?是数字吗,什么?我了解如何 OR 宏,我只是不明白宏实际上是什么。
问问题
1935 次
2 回答
3
我将在许可中描述最左边的三个数字,这也将解释 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 = 用户可读。
这三个是权限中的重要数字,它们仅指定赋予文件的权限。
于 2012-11-24T02:09:24.990 回答
0
Wiki在这里有很好的解释
从链接页面:
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
于 2012-11-23T21:00:30.543 回答