无法在 ubuntu 上的 htdocs 中创建任何文件夹

Blu*_*lub 4 permissions xampp ubuntu

如何设置权限,以便我可以?“创建新文件夹”选项呈灰色。我试过这个: sudo chmod -rw /opt/lampp/htdocs

但它仍然不起作用。当我添加 sudo chmod -rw 755 /opt/lampp/htdocs 时,它说:“755”没有这样的文件或目录

Maj*_*nko 15

您误解了 chmod 和 unix 文件权限的操作方式。

您需要配置/opt/lampp/htdocs 目录,以便您登录的用户具有写入权限。您还需要确保您在其中编写的内容可以被 LAMPP 使用的任何 Web 服务器读取(不幸的是,我不熟悉 LAMP。)

首先,您需要查看谁拥有 /opt/lampp/htdocs:

$ ls -ld /opt/lampp/htdocs
Run Code Online (Sandbox Code Playgroud)

应该返回如下内容:

drwxr-xr-x 4 lampp www 4096 2011-03-22 12:43 /opt/lampp/htdocs
Run Code Online (Sandbox Code Playgroud)

第一位 (dwrxr-xr-x) 是文件权限。“lampp”是目录的所有者,“www”是目录的组所有者。你需要注意这一点。

首先让我们对组进行排序。如果该组是除“root”之外的任何内容,那么一切都很好,您可以跳过本节:

如果它是“root”,则需要更改为更合理的内容。让我们为它创建一个新组:

$ sudo groupadd www
Run Code Online (Sandbox Code Playgroud)

然后更改目录上的组:

$ sudo chgrp -R www /opt/lampp/htdocs
Run Code Online (Sandbox Code Playgroud)

现在您需要使 Web 服务器作为 www 组运行。如果 Web 服务器是 Apache,那么您应该检查 /etc/apache/httpd.conf 文件并相应地编辑“组”设置。我不知道其他 Web 服务器的设置。

现在,如果您不需要将组从 root 切换到其他内容,您可以跳到这里。

我们现在需要解决目录的权限问题。我们想使用一些非常特殊的权限,称为“setgid”位。

$ sudo chmod 2775 /opt/lampp/htdocs
$ ls -ld /opt/lampp/htdocs
drwxrwsr-x 4 lampp www 4096 2011-03-22 12:43 /opt/lampp/htdocs
Run Code Online (Sandbox Code Playgroud)

您会看到权限现在发生了一些变化。让我们解释一下这些。

  • 第一个字母是文件类型。在这种情况下,“d”代表目录。
  • 接下来的三个“rwx”是所有者(lampp)对directort 的权限。r = 读取,w=写入,x=查看目录内容。
  • 接下来的三个“rws”用于组所有者 (www),但您会注意到在这种情况下 x 实际上是一个 s - 我们稍后会谈到。
  • 最后三个,“rx”,是给其他人的。即读取,并查看目录的内容。没有写作。

组权限中的“s”称为“setgid”位。这是一个特殊的权限,它会导致在目录中创建的任何文件从目录本身继承组所有者。因此,如果“users”组中的用户“fred”在其中创建一个文件,则该文件将归“www”组中的“fred”所有。这对于多人都读取和写入相同文件的共享区域非常有用。

但就目前而言,您仍然无法写入该区域。为什么?因为您不在“www”组中。现在让我们纠正一下:

$ sudo usermod -aG www blub
Run Code Online (Sandbox Code Playgroud)

将“www”替换为您在开头附近记下的 /opt/lampp/htdocs 目录的组所有者。

您需要注销并再次登录才能使此更改生效 - 您的组成员身份在登录时被读取。

完成后,您会突然发现现在可以神奇地在 /opt/lampp/htdocs 中写入文件。

如果您希望允许在系统上写入其他用户,只需使用usermod -aD www <username>命令将它们添加到 www 组。