假设我有一个权限为755 (rwxr-xr-x)的文件。我想用chmod g+rw连接到我的文件。最终得到775。这里发生了什么数学运算来计算它?我不太明白这件事,谢谢。
或者类似的640到660。这个公式是怎么回事?
http://articles.slicehost.com/2010/7/17/using-chmod-part-2-octal-mode
谢谢
发布于 2010-08-11 08:08:10
对于U、G和O中的每一个,只需将每个r、w或x替换为二进制1,将每个-替换为二进制0。结果是一个二进制数。该数字不能大于二进制111,后者在十进制和八进制中都等于7。
因此,U、G和O中的每一个都有一个八进制数。现在,只需将它们按正确的顺序放在一起即可。从技术上讲,您将把U乘以8^2,G乘以8^1,O乘以8^0,因为八进制位是8的幂。
这一切似乎都在你提供的链接中得到了解释。
编辑:回复
谢谢,这些我都理解,但是如果我在表单或程序中写这段代码,我该怎么做呢?
这将取决于您正在使用的编程语言。您希望程序转换数字还是实际使用chmod?
编辑:答案:
输入将是权限值,例如660。旁边有一根线,例如。g+rw。程序计算新的权限值。
好的,首先将当前权限分成U、G和O,然后使用字符串告诉您要修改其中的哪一个。您可以从数字中唯一地找到权限,反之亦然*,而且您知道r=4、w=2和x=1,因此每当您遇到一个没有设置适当条件的数字时,您都会向其添加4、2或1。在此之后,您应该检查结果是否有效。如果没有,只需将其设置为0即可。
Example: current=660 command=g+rw
u = 6
g = 6
o = 0
from string: we know we are modifying g only
g = 6 means: rw-
since rw is already set, we do not change anything
result = u+g+o = 660
return result假设命令是a+rw。对于u和g也会发生与上面完全相同的情况,但是当达到o时,我们可以看到它是0,所以我们为r添加4,为w添加2,得到6。这是一个有效的数字,所以我们将它们组合在一起并返回666。
*有效组合:
rwx 7
rw- 6
r-x 5
r-- 4
发布于 2010-08-11 07:52:50
U G O
rwx r-x r-x ==
111 101 101 ==
7 5 5这里唯一的数学问题是从基数2到基数10 (实际上是8 )的转换。
添加组r/w后,您将获得:
U G O
rwx rwx r-x ==
111 111 101 ==
7 7 5(U=user G=group O=other)
https://stackoverflow.com/questions/3454343
复制相似问题