首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何计算chmod命令的权限?

如何计算chmod命令的权限?
EN

Stack Overflow用户
提问于 2014-09-22 02:26:00
回答 5查看 2.7K关注 0票数 0

读了很多书之后,我仍然不知道如何使用chmod。我的主要问题是,这些数字意味着什么?我是Unix的新手,在我们的web服务器上做一些紧急修复,并被要求修复某些文件的权限。我不明白我需要做些什么才能让文件可以访问。

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

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

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2014-09-22 02:55:36

您有3种权限类型:

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

对于这些类型中的每一种,您可以允许三种情况:

  • 读取能力(请注意,需要目录上的读取权限才能列出它)
  • 写作能力
  • 执行能力

如果你说:

代码语言:javascript
复制
chmod 755 some_file

它会像这样被分解:

代码语言:javascript
复制
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的输入格式非常方便,而且不需要在头脑中进行二进制转换。例如,要为用户添加执行权限:

代码语言:javascript
复制
chmod u+x some_file

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

代码语言:javascript
复制
chmod u-x some_file

您可以将“u”替换为“u”、“g”或“o”(分别为用户、组或其他),并将“x”替换为“r”、“w”或“x”(您知道了)。

你得小心点。如果你这样做了:

代码语言:javascript
复制
chmod -R 777 some_directory

该文件包含敏感的配置数据,然后您只授予“other”(即外部世界)完全的读取权限(这意味着web服务器可能会提供这些信息)。

对于您来说,查看chown命令也是值得的。

票数 3
EN

Stack Overflow用户

发布于 2014-09-22 02:49:24

查看这个在线玩具或谷歌的许多教程。数字以八进制格式给出所有者的权限、组的权限和其他人的权限。

票数 0
EN

Stack Overflow用户

发布于 2014-09-22 02:52:53

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

代码语言:javascript
复制
chmod u=rw,go=r file

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

代码语言:javascript
复制
chmod ug+x file

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

代码语言:javascript
复制
chmod g-x file

(因此,现在组的成员无法执行文件)。

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

  1. 数字是八进制(数字0.7),第一个数字(三个数字)代表用户的权限,第二个数字代表组的权限,第三个和最后一个数字代表其他用户的权限。
  2. 八进制数使用三位,每一位的值如下:
代码语言:javascript
复制
- 4 — read
- 2 — write
- 1 — execute

因此,使用权限如下:

代码语言:javascript
复制
chmod 640 file

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

在目录的上下文中,“execute”更好地称为“access”,这意味着如果文件权限允许,并且用户知道目录的名称,可以使用目录中的文件。通过对目录的读取权限,您可以看到目录中的文件列表;通过对目录的写权限,您可以创建新文件或删除现有文件。

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

我还没有讨论权限的3位,这些权限出现在用户权限之前。在基本权限导致您混淆时,您不需要担心这些问题,但是SUID或set UID位(4)、SGID或set GID位(2)和粘滞位(1)对于高级权限控制非常有用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25965900

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档