在rwx和八进制版本之间是否存在基于Web的转换器?


27

我永远不记得从rw-r--r--到的转换是什么644。两者之间是否有基于Web的简单转换器?


它只是一个八进制数,二进制数字映射到rwxrwxrwx(用户,组,其他)。
基思

这可以很容易地手动计算。或者可以通过stat -c... 显示它们
fromnaboo

Answers:


26

该站点提供了一种交互式的方式来查看设置/取消设置各种权限时设置了哪些权限。

“计算器”如下所示:

  ss#1


5
顺便说一下,我是通过Google搜索“八进制文件权限工具”获得的。当您有任何疑问时,Google始终是您检查问题的首选。
泰勒

2
抱歉,我确实尝试搜索,但是找不到正确的搜索词。很抱歉打扰您...给您代表。
Darryl Hein

3
达里尔-你没有打扰我。我正在尝试帮助您自己更轻松地找到问题的答案,以便当您遇到一个没人愿意为您回答的问题时,您也许可以自己回答。
泰勒

3
现在链接已断开,这就是为什么我们通常不鼓励仅链接的原因,但是当问题要求链接时,很难批评它
Michael Mrozek

3
链接不再断开。

11

为什么首先需要八进制数?

我一直使用:

chmod o+x file   # all + eXecute permissions
chmod g-w file   # group - write perms
chmod u=r file   # user can just read
chmod ug=rw file # user,group = read and write
chmod a+w file   # user,group,others + write 

ugo(a)很容易记住。但是,您可以混淆o:= owner吗?o:=其他?但是如果o = owner,你会是什么?u:= user,因此o = other。

一些命令仅像数字权限一样。好吧,如果您记住以下两个序列,则计算起来并不难:ugo + rwx。

    r   w   x  | Sum
u   4   2   1  | 7
g   4   -   1  |  5
o   4   2   -  |   6
---------------------
                 756

是的,非常人为。

关于s和SI,必须查阅手册。下次可能是google。:)


8

八进制用于权限,因为它很容易转换。每一组rwx组成一个八进制数字。您只需要记住2、4、2、1的前3个幂即可。 r= 4,w= 2,x= 1。

rw-r--r--= 110 100 100= 4+2+0 4+0+0 4+0+0=644


5

我喜欢这个权限计算器:http :
//file-permissions.ninja


通常,我会将其标记为仅链接的答案,但是由于OP明确要求提供网站,因此我会让它通过。请注意,尽管通常不鼓励仅链接的答案。
HalosGhost 2014年

该网站目前似乎无法正常工作。我在控制台中看到“ 403”错误。
瑞安

4

到目前为止,这是最方便的,而且我相信,这正是您最初要求的:

http://ss64.com/osx/chmod.html

它是完全交互式的,尽管您不能编辑字符串“ -rx -------”,但是可以使用八进制或复选框。做任何一个都会更新另一个。

我最喜欢的工具

在同一页面上:

数值(绝对)模式:

从一到四个八进制数字假定任何省略的数字都是前导零。

第一位数字=选择设置的用户ID(4)和设置组ID(2)的属性并保存文本图像(1)第二位=拥有文件用户的权限:读取(4),写入(2) ,然后执行(1)第三位=文件组中其他用户的权限:读取(4),写入(2)和执行(1)第四位=文件组中其他用户的权限不在该文件中:read( 4),编写(2)和执行(1)

通过将每个数字的值相加来计算八进制(0-7)值用户(rwx)= 4 + 2 + 1 = 7 Group(rx)= 4 + 1 = 5 World(rx)= 4 + 1 = 5 chmod模式= 0755


4

我有一个小别名,可以将其放入.bashrc(或等效名称)中。

免责声明:我不是剧本的作者,而且我不确定是谁写的……但是这样做有助于他/她。

alias lsp="ls -l --color | 
      awk '{k=0; for(i=0;i<=8;i++) k+=((substr(\$1,i+2,1)~/[rwx]/)*2^(8-i));
      if (k) printf(\" %0o \",k); print}'"

1
非常感谢@nico-这是与perl单行代码转换并在bash中使用的代码相同的代码:echo 'rwxrwxrw-' | perl -ne 'BEGIN{sub conv{ chomp(my $ins=shift); my $k=0; for(my $i=0;$i<=8;$i++) { my $tmps = ( substr($ins, $i, 1) =~ /[rwx]/ ); $k+= ( $tmps*(2**(8-$i)) ); }; if ($k) { sprintf(" %0o ", $k); } else { "??" ; }; }; } print(conv($_)."\n");'将打印“ 776”。干杯!
sdaau
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.