如何计算chmod命令的权限



经过大量阅读,我仍然不明白如何使用chmod。我的主要问题是这些数字是什么意思?我是Unix的新手,正在对我们的web服务器进行一些紧急修复,并被要求修复一些文件的权限。我不明白我需要做些什么才能访问这些文件。

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

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

您有三种权限类型:

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

对于这些类型中的每一种,您都可以允许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命令。

查看这个在线玩具或谷歌获取大量教程。数字以八进制格式提供所有者的权限、组的权限和其他用户的权限。

如果你不懂数字,就不要使用它们:

chmod u=rw,go=r file

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

chmod ug+x file

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

chmod g-x file

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

如果你想使用这些数字,有两组事实你需要知道:

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

    • 4-读取
    • 2-写入
    • 1--执行

因此,使用以下权限:

chmod 640 file

可以分为用于用户的6、用于组的4和用于其他人的0。64 + 2(或4|2),表示所有者的"读取"one_answers"写入"权限;组的CCD_ 8意味着组成员可以读取该文件;而对于其他人CCD_ 9意味着其他人不能访问该文件。

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

请注意,如果执行删除操作的用户对目录具有写入权限,则可以删除只读文件。像rm这样的命令提供保护是出于礼貌,而不是依赖内核来保护命令的用户。

我还没有谈到权限的另外3个部分,它们出现在用户权限之前。当基本权限造成混乱时,您不需要担心这些问题,但SUID或设置UID位(4)、SGID或设置GID位(2)和粘性位(1)对于高级权限控制可能很有用。

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

您遇到的问题很可能是某些文件无法被访问您网站的人读取。如果你的网站组织合理,所有可公开访问的文件都在一个目录中,该目录中没有任何非公开文件。如果是这种情况,您可以使用以下命令更改当前目录中及其下的所有文件,使其可读:

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

拥有目录上"其他"(o+r)的读取权限将允许某人将您网站上目录的内容作为目录进行读取。您需要确定这是否是您希望的情况,和/或这样做是否符合组织的政策。通常,如果文件具有适当的读取权限集,则有人可以读取特定名称的文件,而无需读取目录。要设置目录的读取权限,它是:

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

然而,您也可能希望所有这样的目录不被所有人读取,只被用户和组读取。在这种情况下:

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

其他人提供了大量关于权限的解释。如果你很着急,只想弄清楚使用chmod命令的权限,我会查看众多在线计算器中的一个,这样你就不必在老板对你指手画脚时浪费时间。

  • http://permissions-calculator.org/
  • http://mintools.neocities.org/#/unix-权限计算器
  • http://mistupid.com/internet/chmod.htm

不过,我还是建议你在。。。

最新更新