关于文件权限和文件所有者

关于文件权限和文件所有者

我试图在 XAMPP 下在我的 Macbook Air 上安装 Joomla。我成功安装了它,但是当我尝试打开前端时,我不断收到此mkdir():permission denied错误。

我在尝试解决这个问题时提出了两个问题:

1)我注意到,当我这样做时ls -l,一些文件夹的所有者是myname: admin,而其他文件夹的则是root:admin.我是这台计算机的唯一用户myname用户应该拥有所有 root 权限。我不明白:

A.为什么当我这样做时chmod我必须这样做sudo chmod

B.为什么会有不同所有者的文件夹。

2)为了解决这个问题,我暴力地将所有相关文件和目录的所有者更改为 ,并将root:root这些文件和目录的权限更改为0777.但最终我将不得不将其移至生产服务器,这样保留所有者和权限是不明智的。有没有更好的方法来解决问题,同时保持所有者/权限设置尽可能完整?

答案1

OS X 的操作有点像 Ubuntu,默认用户没有直接的管理权限,而是通过sudo.即使您无法登录,仍然有一个 root 帐户。这样做是出于安全原因 - 大量 2000 年代的 Windows 恶意软件可以在系统级别执行恶意操作,因为用户运行的每个命令都是以管理员身份执行的。

为什么某些文件由 root 拥有的答案取决于它们是哪些特定文件以及它们如何到达那里。但我猜测:

  • OS X 创建的系统文件是 root,因为你通常不应该碰它们
  • xampp 安装程序创建的内容可能会将权限设置为 root,因为您不应该弄乱它们
  • 和/或您以 root 身份运行安装程序(通过 sudo),然后该用户被选中并被授予所有权

您必须在 chown/chmod 命令中使用 sudo,因为不允许非特权用户更改其他用户的文件和目录的所有权。想象一下如果他们可以的话!我可以允许自己编辑您的主目录,或者/etc/passwd

您确定 777 不适合生产是正确的。您希望不会在生产中使用 xampp,因为它显然不是为此设计的,但除此之外,在/var/www(或您放置此的任何地方):

  • 需要由 Web 服务器修改的内容(例如自动填充缓存目录)可以是组可写的
  • 其他一切都应该只有所有者可写
  • 一切都应该属于 :www-data (或者 apache 所在的任何组)

这可以防止在您的托管脚本之一中发现漏洞的攻击者编写大量内容,但仍然使您可以轻松地将更改推送到站点。

相关内容