如何计算chmod命令的权限?

时间:2014-09-22 02:26:01

标签: unix permissions chmod

经过大量阅读后,我仍然不了解如何使用chmod。我的主要问题是这些数字是什么意思?我是Unix新手,正在我们的网络服务器上做一些紧急修复,并被要求修复某些文件的权限。我不明白我需要做些什么来使文件可访问。

有人可以在这里提供一些帮助吗?

编辑:感谢大家的精彩回答。不幸的是,我陷入了恐慌,并没有及时阅读它们,我们最终失去了我们的客户..很难选择任何单一的答案,但我选择了我最了解的那个。

5 个答案:

答案 0 :(得分:3)

您有3种权限类型:

  • 用户(应用于文件所有者的权限)
  • 组(应用于文件组的权限)
  • 其他(适用于其他人的权限)

对于每种类型,您可以允许3件事:

  • 能够阅读(请注意,您需要对目录进行读取权限才能列出)
  • 写作能力
  • 执行能力

如果你说:

chmod 755 some_file

它像这样分解:

User  Group  Other
7     5      5      (octal value,  base-8)
111   101    101    (binary value, base-2 or binary)
RWX   RWX    RWX

where: R - Read, W - Write, X - eXecute

因此该命令意味着所有者获得所有权限,但组成员和其他人只能读取和执行。

chmod的另一种输入格式非常方便,并且不需要你在头脑中转换成二进制文件。例如,要为用户添加执行权限:

chmod u+x some_file

要删除这些权限,您可以说

chmod u-x some_file

您可以将'u'替换为'u','g'或'o'(分别为user,group,other),将'x'替换为'r','w'或'x'(你)得到这个想法。

你必须小心这一点。如果你这样做了:

chmod -R 777 some_directory

该文件包含敏感的配置数据,然后您只给了“其他”(即外部世界)完全读取权限(意味着Web服务器可能会提供此信息)。

您也可以查看chown命令。

答案 1 :(得分:0)

检查this online toy或Google查看numerous tutorials。这些数字以八进制格式提供所有者的权限,组的权限和其他人的权限。

答案 2 :(得分:0)

如果您不理解这些数字,请不要使用它们:

chmod u=rw,go=r file

这将设置文件的权限以便为用户读取和写入,并且只读组和其他人的权限。您可以使用+添加权限:

chmod ug+x file

(现在用户和组可以执行该文件),您可以使用-删除权限:

chmod g-x file

(所以现在该组的成员无法执行该文件)。

如果您想使用这些数字,您需要了解两组事实:

  1. 数字为八进制(数字0..7),第一个数字(三个)表示用户的权限,第二个数字表示组的权限,第三个和最后一个数字表示权限他人。
  2. 八进制数使用三位,每位的值为:

    • 4 - 阅读
    • 2 - 写
    • 1 - 执行
  3. 因此,使用如下权限:

    chmod 640 file
    

    可以分为6为用户,4为组,0为其他。 6 4 + 2(或4|2)表示“{1}}”'并且'写'所有者的许可;组的4表示组成员可以读取该文件;而其他人0表示其他人无法访问该文件。

    在目录的上下文中,执行'更好地称为“访问”,意味着如果文件权限允许,有权访问该目录的人可以使用目录中的文件,并且用户知道该名称。对目录也具有读取权限,您可以看到目录中的文件列表;对目录具有写权限,您可以创建新文件或删除现有文件。

    请注意,如果执行删除的用户对目录具有写入权限,则可以删除只读文件。诸如rm之类的命令提供保护作为礼貌,而不是依靠内核来保护命令的用户。

    我没有在权限上多盖3个位,这些位出现在用户权限之前。当基本权限导致您混淆时,您不必担心这些,但SUID或设置UID位(4),SGID或设置GID位(2),以及粘滞位(1)可能很有用用于高级权限控制。

答案 3 :(得分:0)

其他人对如何解码权限的八进制表示提供了很好的解释。这只是解决了如何解决潜在问题的原因。

您遇到的问题很可能是访问您网站的某些人无法读取某些文件。如果您的网站合理组织,则所有可公开访问的文件都位于单个目录中,该目录中没有任何非公共文件。如果是这种情况,您可以使用以下命令更改当前目录中和当前目录下的所有文件,以便它们可读:

find . -type f -exec chmod oug+r {} \;

对目录具有“other”(o + r)的读取权限将允许某人将您网站上的目录内容作为目录读取。您需要确定这是否是您希望的情况和/或这样做是否符合您组织的政策。通常有人可以读取特定命名的文件 - 如果文件具有适当的读取权限集 - 无需读取目录。要为目录设置读取权限,请执行以下操作:

find . -type d -exec chmod oug+r {} \;

但是,您可能希望所有这些目录都不被所有人阅读,只有用户和组才能阅读。在这种情况下:

find . -type d -exec chmod ug+r o-r {} \;

答案 4 :(得分:0)

其他人对权限提供了大量解释。如果您赶时间并且只是想知道chmod命令使用哪些权限,我会查看其中一个在线计算器,这样您就不必浪费时间了。老板正在呼吸你的脖子。

我仍然建议在学习基础知识之后......