ran*_*Kek 14 linux permissions
我找不到这三个问题的答案:
谁是“其他人”,如果我们将服务器上的所有服务都赋予一个用户,“其他人”就不存在了吧?例如,如果我们将 Apache 设置为用户,并将/var/wwwchowned设置为apache,然后我们输入chmod 700它应该可以工作,对吗?
“执行”和“读取”有什么区别?
全新安装(例如在 Ubuntu 中)后整个系统的默认文件权限是什么?
slh*_*hck 17
谁是“其他人”,如果我们将服务器上的所有服务都赋予一个用户,“其他人”就不存在了吧?例如,如果我们将 Apache 设置为用户,并将
/var/wwwchowned设置为apache,然后我们输入chmod 700它应该可以工作,对吗?
以下是权限的工作原理,以非常简短的方式解释:
第一个数字是文件的实际所有者(检查谁拥有文件ls -l并用 修改它chown)
该第二个数字是该组的文件的(尽管一个文件的所有者不一定必须在拥有该文件相同的基团)
在第三个数字是其他任何人,这意味着不是不能在该组的文件所有者和每个人。
因此,如果您将chmod一个文件设置为 700 并且它由 拥有apache,那么即使您的“普通”用户也将无法读取、写入或执行它。这是非常严格的,只有在极少数情况下才需要——例如,当您想要保护 SSH 私钥时,它会获得600权限。对于 Apache,这甚至可能导致其他问题,除了使用您的普通用户帐户,您将无法再编辑任何文件/var/www。
因此,一般来说,您不需要删除x00其他人的读取权限 ( )。
您可以让apache自己拥有该/var/www目录,但可能644(对其他人只读)。我经常使用的另一种方法是将您自己的用户和Apache 用户添加到一个新www-users组,然后将文件 chmodding/var/www到775. 这样,您和 Apache 都可以写入文件。有关更多信息,请参见此处:Apache 的组权限
“执行”和“读取”有什么区别?
可执行文件可以由用户直接运行——直接从 shell 运行。为了演示这一点,让我们编写一个简短的文件并将其称为“测试”。添加以下内容:
echo "I am executable"
Run Code Online (Sandbox Code Playgroud)
保存文件。现在,在您的 shell 中,尝试输入./test. 您将收到“ -bash: ./test: Permission denied ”错误。这是因为默认情况下,新创建的文件不带有执行权限。如果您添加执行权限,它将起作用。
$ chmod +x test
$ ./test
I am executable
Run Code Online (Sandbox Code Playgroud)
现在,这只是一个测试脚本,但通常情况下,所有二进制文件(如编译程序)也需要执行权限集,因此您可以实际运行并使用它们执行某些操作,而不仅仅是读取。
例如,这些是主要在/bin. 运行ls -l /bin以检查他们的权限。如您所见,它们归 拥有root,您无法更改它们,但您始终可以执行它们。
因此,这在某种程度上也是一种安全功能,因为您可以限制某些用户执行某些脚本和二进制文件。
要了解有关 Unix 权限的更多信息,请阅读Wikipedia 文章。您称为“读写执行”的基本权限已经存在很长时间了,但这只是您所谓的访问控制列表的一部分——它提供了比这更多的功能。
全新安装(例如在 Ubuntu 中)后整个系统的默认文件权限是什么?
它们因目录和所有者而异。某些文件和目录是系统保留的并由root. 在大多数情况下,您仍然可以使用普通用户帐户阅读它们。
其他目录(如您的主文件夹)显然属于您的用户。如果多人共享,则拒绝对机器上其他用户的读取权限可能是有意义的 - 毕竟,您不希望您的私人内容暴露。
最后,某些文件默认是可执行的(例如在 中/bin),但其他文件则不是(例如在 中的配置文件/etc)。
该文件系统层次标准规定了在Linux系统中的目录的使用目的。您几乎可以根据您要对目录执行的操作来“猜测”权限应该是什么。