更改权限有两个选项:
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
谷歌给出:
- 1,030,000 个结果 '修改 777'
- 371,000 个结果 'chmod a+rwx'
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
即使指定了十进制表示法,该命令实际上也知道将指令作为八进制传递。然而,并非所有环境都支持这一点,因此最佳实践习惯于明确指定它。