我已经在 *nix 上工作了几年,我无法习惯的事情之一就是代码中的八进制权限。除了线路长度chmod 644 ...
之外还有其他原因吗chmod u=rw,go=r ...
?
附:我不是在寻找八进制权限的解释。我知道它们是如何工作的,并且手册中对此进行了很好的解释。我问为什么八进制似乎比更易于人类阅读的形式更受青睐。
答案1
我能想到使用八进制代码有两个优点,但都没有那么大:
- 它们更短,更容易打字。
- 有些东西只能理解它们,如果您经常使用它们,那么当您遇到它们时,您就不会摸不着头脑(或跑到文档中)。例如,
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