为什么使用“chmod 644”而不是“chmod u=rw,go=r,...”?

为什么使用“chmod 644”而不是“chmod u=rw,go=r,...”?

我已经在 *nix 上工作了几年,我无法习惯的事情之一就是代码中的八进制权限。除了线路长度chmod 644 ...之外还有其他原因吗chmod u=rw,go=r ...

附:我不是在寻找八进制权限的解释。我知道它们是如何工作的,并且手册中对此进行了很好的解释。我问为什么八进制似乎比更易于人类阅读的形式更受青睐。

答案1

我能想到使用八进制代码有两个优点,但都没有那么大:

  1. 它们更短,更容易打字。
  2. 有些东西只能理解它们,如果您经常使用它们,那么当您遇到它们时,您就不会摸不着头脑(或跑到文档中)。例如,chmod在 Perl 或 C 中您必须使用八进制。

有时,非常简单的实用程序无法处理“友好”版本;特别是在非 GNU 用户区。

此外,一些实用程序会输出八进制。例如,如果你运行umask查看当前的 umask 是什么,它会以八进制形式输出(尽管在 bash 中,umask -S是符号式的)。

因此,简而言之,我想说,更喜欢它们的唯一原因是键入更少的字符,但即使您选择不使用它们,您也应该知道它们如何映射,以便在运行时可以找出八进制代码变成只做八进制的事情之一。但您不需要立即知道 5 映射到rx,您只需要能够弄清楚这一点。

答案2

猜猜我使用八进制太久了。

7 是 rwx(用它做任何事情),5 是 rx(必须读取它才能执行它),6 是 wr(您需要修改的任何数据文件),4 是 r(我们会让您查看它),以及0 是 - (抱歉,这里没有什么可看的)。顺序是我、我们、每个人。这些是基本组合。

755 我可以更改并运行它,其他人都可以运行它。

第644章 我可以改,其他人都可以读。

444 仅供所有人阅读,我们到此为止。

500 我可以执行它,不希望它改变,其他人都放手。

对我来说,它很短,切中要点。 9 个字符和一个文件规范,然后继续。

答案3

我从来没有真正喜欢过八进制表示法,我总是使用直接rwxr-xr-x表示法,因为它对我来说似乎更简单。然而,据我所知,八进制表示的存在实际上是为了让我们更容易记住(我不明白它是如何工作的)。

我认为八进制带来的唯一可能的好处是缺乏歧义。 8 个不同的权限位配置由一个不同的数字表示,我确信这可以帮助某些人不小心将w其放在不应该放置的位置。

不幸的是,我已经记住了这张表:

#  r  w  x
0  0  0  0
1  0  0  1
2  0  1  0
3  0  1  1
4  1  0  0
5  1  0  1
6  1  1  0
7  1  1  1

答案4

请注意,八进制模式可能会删除某些系统上的 setuid 和 setgid 位。

费多拉 16:

$ mkdir dir
$ chmod 2775 dir
$ stat -c %a dir
2775
$ chmod 770 dir
$ stat -c %a dir
2770

2被保留)

FreeBSD 9:

$ mkdir dir
$ chmod 2775 dir
$ stat -f %Mp%Lp dir
2775
$ chmod 770 dir
$ stat -f %Mp%Lp dir
0770

2成为0

如果您想要更改文件或目录的权限,最好只指定您想要更改的位(例如上面示例中的chmod o= dir或)。chmod o-rwx dir

相关内容