经过大量阅读后,我仍然不了解如何使用chmod。我的主要问题是这些数字是什么意思?我是Unix新手,正在我们的网络服务器上做一些紧急修复,并被要求修复某些文件的权限。我不明白我需要做些什么来使文件可访问。
有人可以在这里提供一些帮助吗?
编辑:感谢大家的精彩回答。不幸的是,我陷入了恐慌,并没有及时阅读它们,我们最终失去了我们的客户..很难选择任何单一的答案,但我选择了我最了解的那个。答案 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
(所以现在该组的成员无法执行该文件)。
如果您想使用这些数字,您需要了解两组事实:
八进制数使用三位,每位的值为:
因此,使用如下权限:
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命令使用哪些权限,我会查看其中一个在线计算器,这样您就不必浪费时间了。老板正在呼吸你的脖子。
我仍然建议在学习基础知识之后......