有人可以像我五岁那样向我解释 chmod 权限吗? [关闭]
Posted
技术标签:
【中文标题】有人可以像我五岁那样向我解释 chmod 权限吗? [关闭]【英文标题】:Can somebody explain me chmod permissions like I'm five? [closed] 【发布时间】:2014-03-16 03:52:05 【问题描述】:我不确定将我的文件权限设置为什么。
我理解这个概念,以及如何去做,但我不知道每个设置会产生什么样的后果。
选项是读取、写入、执行,我可以在三个不同的类别中检查每个选项:所有者、组、公共。
我的文件夹的默认设置似乎是drwxr-xr-x
或755
。我假设d
代表目录?
对于文件,标准通常是-rw-r--r--
或644
。
虽然我对确切了解权限编码的工作原理并不是很感兴趣,但我更想知道每个选项的作用,以及每个组是如何分开的。
谁是所有者,谁是组,谁是公开的? 读取、写入和执行到底赋予了它们每个人(所有者、组、公共)什么样的权限?
所以会有 9 个选项,我假设有 9 个用例。比如“如果您想让您网站的访问者能够将文件上传到此文件夹,请授予 public
对 write
的权限。”
我也意识到,不给read
权限public
在尝试访问文件时会导致403。
那么这 9 种不同的场景是什么?授予或删除文件和文件夹的特定权限的后果是什么?
【问题讨论】:
这个问题似乎是题外话,因为它属于Unix & Linux 你试过man chmod
吗?***也有一篇[关于模式的好文章](en.wikipedia.org/wiki/Modes_(Unix)).
感谢 Amadan,这篇文章有些帮助...不过我正在寻找一个非常基本的解释...所有者到底是谁?组究竟是什么?在一个 php webapp 的考虑下,每个设置有什么后果?
【参考方案1】:
所有者是创建文件的用户,组是所有者的主要组,除非被chown
和chgrp
更改。文件所有者和组是您说ls -l
时可以看到的两个名称。在许多(但不是全部)系统上,每个用户的主要组都由用户命名;所以用户amadan
将属于一个组amadan
,在他可能是也可能不是成员的任何其他次要组中。他创建的任何文件都会如下所示:
-rw-r--r-- 3 amadan amadan 102 Feb 14 18:34 test
Apache Web 服务器通常会以用户 www-data
的身份运行,同时拥有主组 www-data
。如果你执行chgrp www-data test
和chmod 664 test
,你会得到:
-rw-rw-r-- 3 amadan www-data 102 Feb 14 18:34 test
这将意味着以下内容:
用户amadan
可以读写文件。
www-data
组(无论是主要组还是次要组之一)中的任何人,在这种情况下表示 Apache Web 服务器,也将能够读取和写入文件。
不属于amadan
且不属于www-data
组的任何人都只能读取该文件。
您可以通过groups amadan
找出您属于哪些组(当然,您可以使用您自己的用户名:p)。您可以通过检查 /etc/apache2/httpd.conf
或类似文件中的 User
和 Group
指令或类似文件(因操作系统和 Apache 版本而异)来查看您的 Apache 运行的用户名和组。
【讨论】:
【参考方案2】:基本上:
类别:
所有者: 文件的创建者(此外,当一个文件访问同一域内的另一个文件时,该文件被视为该文件的所有者)时间> 组: 您定义的文件组中的人员。关于如何定义组,可以访问这个问题:https://superuser.com/questions/341740/how-to-specify-group-with-chmod 所有人: 访问您网站的人特权:
阅读: 能够查看文件 写入: 能够更改文件 执行: 能够删除文件【讨论】:
如何定义组? php 脚本属于哪一类?例如,我可以对文件设置权限,以便我的 php 脚本可以读取内容,但我网站的访问者无权访问它吗? 更新后的答案应该可以回答所有这些问题。以上是关于有人可以像我五岁那样向我解释 chmod 权限吗? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
使用机器对机器和基于用户的身份验证使用 JWT 进行嵌套身份验证和授权是一回事吗?