使用更广泛的是:chmod 777或chmod a + rwx [关闭]


20

在更改权限的两个选项中:

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

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

目前是说:

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

这只是一个示例,不会更改文件以使所有人具有完全权限。


6
第一个解决方案更短,使用更广泛,我从未见过第二个解决方案。
Archemar 2014年

2
就安全性而言,为每个人设置读取,写入和执行权限确实不是一个好主意。您应该改用chmod 773。
Martin Erhardt 2014年

1
@MartinErhardt我通常只使用775755仅用于可执行文件。
Kevdog777

3
chmod 777就像chmod a=rwx,不是chmod a+rwx
斯特凡Chazelas

1
777或者666比起来简单,容易记忆ugo+rwxa+rwx或者ugo+rw由于o模棱两可而令人困惑,对于您来说,这意味着所有者或他人都可以选择。因此,您要继续检查man以确认哪个是哪个,而不是犯大错误,或者只是使用数字。
kenorb 2014年

Answers:


29

Google提供:

chmod 777 受欢迎程度约为3倍。

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


谢谢你 我猜想,在全(字母和数字),写出来会阻止人们问什么是7平均值,等等
Kevdog777

1
我想原因chmod 777是比较流行的(如看到您的号码前conjetured)很简单,就是你输入2个字符少:)
安赫尔

如果您要在文档中添加提示,chmod 777则可以添加提示,它是方便的快捷方式,可以达到相同的效果。您的读者会喜欢您的文档中的教育元素。777之所以受欢迎,是因为它更容易快捷地三遍击中7次,但是当新用户第一次看到777时,他们可能不知道这到底意味着什么。这就是为什么它是主要文档的错误选择的原因。但这绝对值得一提。
ADTC 2014年

作为切线,我的兄弟和他的朋友将使用此技术来允许拼字游戏。在确定单词是否为“真实”之前,他们对Google点击次数有一定的门槛
Wayne Werner

我认为它很流行,因为它比较老(符号符号是在以后添加的),因此,当任何人选择时,他们都会在google上搜索,或者搜索当时的时间,然后与人群共处。我认为使用符号更容易,因为当我计算出可以键入符号的数字时,我也倾向于第一次正确使用它。
ctrl-alt-delor

26

[根据Dotancohen在他的回答中的建议,我添加了最佳做法。我希望它不会使它变得不太清楚,并且要养成良好的习惯]

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

chmod a+rwx:将最后3个八进制设置为777,以确保所有者,组和用户设置了“ rwx”。如果在第一个八进制数中还有其他位(setuid,setgid和/或Sticky位),则它们保持不变。将其视为二进制“或00777”。

chmod 777 :将权限设置为00777,以确保所有者,组和用户设置了“ rwx”,并且没有其他内容。还应确保将其他位(setuid,setgid和/或Sticky位)设置为0。

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

如果您还想确保重设任何setuid / setgid / sticky位(即,如果文件需要为“ 00777”),请使用777表格,在您的情况下,这很有可能(文件的权限是已知的,应该为:00777)。在这里,还要确保确实需要三重...

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

http://en.wikipedia.org/wiki/Chmod是一本不错的书,它解释了每个数字或字母代表什么(包括setuid / setgid / sticky)


1
另外,suid文件中的chmod a + w(a + rwx包含)非常危险。我需要详细说明chmod a + w *吗?
约书亚2014年

设置others权限有什么意义?如果您以用户身份登录到计算机,那么确定可以使用users权限吗?
Kevdog777'9

@ Kevdog777:其他人是给所有人的,而不是所有者,也不是团队中的人,也就是系统上的其他所有人
Olivier Dulac 2014年

1
@ Kevdog777:如果仅root用户和用户需要访问权限:chmod 00600(如果不需要执行文件)或chmod 00700(如果需要执行文件,或者它是目录)。或chmod 00400,以添加(微小的,容易覆盖的)保护,防止修改/写入文件(目录为00500)。然后其他人(和组中的人,但不是用户)将无法访问文件/目录。(在dotandcohen注释之后,我在其中添加了第四个八进制+一个“ 0”:对于shell没有影响,但是如果您通过perl / C / etc进行设置会有所帮助,那么第四个八进制是一种提醒,它存在,而且设置也是如此)
Olivier Dulac

4
chmod 777就像chmod a=rwx
斯特凡Chazelas

1

我通常认为,区别在于将权限设置为0777会将其显式设置为0777。如前所述,如果仅键入777,则将推断前导0。而a + rwx添加了读取/写入/执行,而保留了setuid / sticky有点没动。

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


0

我要说的是,在“简单的人群指南”(例如为预算虚拟主机的用户制作的指南)中提供数值要普遍得多。但是,请注意将它们指定为八进制值,而不是十进制值:

$ chmod 0777 some_dir

注意龙头00777。尽管Bash和其他CLI环境使用未填充的东西可以做正确的事情777,但是许多编程语言(如PHP和Perl)具有相似的功能,但确实需要领先者0。因此,我也建议在Bash中使用它,以记住它应该在那里。

下注者注意:正如注释中所阐明的,chmod即使指定了十进制符号,该命令实际上也知道将指令作为八进制传递。但是,并非所有环境都支持此功能,因此最佳实践是习惯于明确指定它。


10
chmod永远不会将数字视为小数。chmod 777 file并且chmod 0777 file完全等效。
celtschk 2014年

3
@ Kevdog777:“八进制”仅表示基数为8。但是,就chmodshell命令的使用而言,您不必关心它。您可以认为这三个数字彼此独立,每个数字都告诉您一组权限。
celtschk 2014年

3
对于chmod,0777中的0实际上表示“清除setuid,setgid和粘滞位”。这等效于777,因为参数始终用前导零填充到四位数字。出于相同的原因,chmod 77等效于chmod 077
EmilJeřábek

1
chmod命令以八进制解释其模式参数。如果您使用大多数编程语言(C,Perl等),则需要注意,但是在shell脚本中,它是八进制的chmod
吉尔斯(Gillles)“所以-别再作恶了”

1
为您的笔记+1,因为总是加一个0(即使设置所有4个八进制:例如01777)确实很好,因为它对shell没有影响,但要确保C,perl和其他人将其解释为八进制
Olivier Dulac 2014年
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.