哪个更广泛使用: chmod 777 或 chmod a+rwx

哪个更广泛使用: chmod 777 或 chmod a+rwx

更改权限有两个选项:

  • chmod 777 file.txt
  • chmod a+rwx file.txt

我正在编写一份文档,详细说明用户需要更改某个文件的文件权限。我想将其详细描述为更改文件权限的最常见方法。

目前是说:

- Set permissions on file.txt as per the example below:
    - chmod 777 /tmp/file.txt

这只是一个示例,不会将文件更改为对每个人都具有完全权限。

答案1

谷歌给出:

chmod 777受欢迎程度大约是原来的3倍。

也就是说,我更喜欢在文档和脚本中使用长选项,因为它们是自记录的。如果您按照“运行并验证权限”的说明进行操作ls -l | grep file.txt,您可能需要使用,chmod a+rwx因为这就是 ls 显示权限的方式。

答案2

[我根据 Dotancohen 在回答中的建议进行编辑以添加最佳实践。我希望这不会让事情变得不那么清楚,并且养成好习惯]

重要的附加信息:它们是不是相等的。

chmod a+rwx:将最后 3 个八进制设置为 777,这样可以确保所有者、组和用户设置了“rwx”。如果第一个八进制中有其他位(setuid、setgid 和/或粘性位),则它们不会受到影响。将其视为二进制“或 00777”。

chmod 777 :将权限设置为 00777,这样可以确保所有者、组和用户设置“rwx”,仅此而已。它还确保附加位(setuid、setgid 和/或粘性位)设置为 0。

因此,如果您只是想确保向每个人授予访问权限(请双重、三重确保这是必需的......),请使用第一种形式...它为各种安全问题打开了大门,其中一些问题的范围出乎意料地广泛他们允许恶意用户这样做)

如果您还想确保重置任何 setuid/setgid/sticky 位,即文件需要为“00777”,则使用 777 形式,这在您的情况下可能更有可能(文件的正确性是已知的,并且应该是:00777)。在这里,还要三重确保它确实是需要的......

通常最好保留对所有者(有时是组)的访问权限:然后使用组向某些特定用户授予对文件/目录的访问权限。 a+rwx 既简单又通常是错误的授予访问权限的方法(当然也有很稀少当这是唯一的方法时的情况......)

http://en.wikipedia.org/wiki/Chmod值得一读,因为它解释了每个数字或字母代表的含义(包括 setuid/setgid/sticky)

答案3

我通常认为区别在于将权限设置为 0777 显式地将它们设置为 0777。如前所述,如果您只键入 777,则会推断出前导 0。而 a+rwx 添加读/写/执行,留下 setuid/粘性有点原封不动。

假设你只是想确定一个文件是可执行的,你可能会使用a+x,这样你就可以修改执行权限,而不必担心或修改其他权限。如果您使用八进制表示形式,则需要知道当前设置的权限是什么,以确保您不会以除预期目的之外的其他方式修改权限。

答案4

我想说的是,给出数值在“简单的人民指南”中更为常见,例如为预算网络托管用户制作的指南。但是,请注意将它们指定为八进制,非十进制,值:

$ chmod 0777 some_dir

0注意中的前导0777。尽管 Bash 和其他 CLI 环境使用未填充的内容是正确的777,但许多编程语言(例如 PHP 和 Perl)具有类似的功能,但确实需要前导0。所以我也建议在 Bash 中使用它,记住它应该在那里。

投反对票者请注意:正如注释中所阐明的,chmod即使指定了十进制表示法,该命令实际上也知道将指令作为八进制传递。然而,并非所有环境都支持这一点,因此最佳实践习惯于明确指定它。

相关内容