And*_*lho 46 permissions apache2 webserver moodle
我试图不在我的/var/www/html文件夹中授予 777 权限,但我想编辑我的文件而没有sudo. 所以我虽然在我的主目录中创建了一个文件夹的符号链接/var/www/html. 我使用创建它sudo ln -sT /home/andre/www/moodle/ moodle,ls -la输出是这样的:
andre@andre-270E5G:/var/www/html$ ls -la
total 8
drwxr-xr-x 2 root root 4096 Mai 4 10:20 .
drwxr-xr-x 4 root root 4096 Abr 29 14:29 ..
lrwxrwxrwx 1 root root 23 Mai 4 10:20 moodle -> /home/andre/www/moodle/
Run Code Online (Sandbox Code Playgroud)
所以,我的moodle文件夹对每个人都有读、写和执行的权限,这不是我想要的。我使用该命令sudo chmod -R 775 moodle/尝试更改它,但它保留了对所有人的读取、写入和执行权限。我对 中的moodle文件夹进行了同样的尝试/home/andre/www/moodle,但它保持不变。ls -lain的输出/home/andre/www/是:
andre@andre-270E5G:~/www$ ls -la
total 28
drwxrwxr-x 3 andre andre 4096 Mai 4 10:02 .
drwx------ 49 andre andre 20480 Mai 4 10:01 ..
drwxrwxr-x 41 andre andre 4096 Mai 4 10:02 moodle
Run Code Online (Sandbox Code Playgroud)
所以文件夹moodle中/home/andre/www/有我想要的权限。
作为一个额外的问题,当我访问时,localhost/moodle我收到 403 Forbidden 错误。
我在这里做错了什么?
Tho*_*ard 87
您永远不必从您的主目录中运行网站。 曾经。 否则,您将不得不让 Web 服务器能够遍历/home/以查看目录结构,但也可以进入/home/$USER/(您的用户的主目录,我们可以在其中尝试查看您的用户目录中还存在哪些内容)以及任何其他子文件夹在那里。配置不当或配置错误或未打补丁的 Web 服务器可能会以这种方式导致大量数据泄漏,或丢失凭据等,这会使您的个人数据和不同事物的登录面临风险。您使用的符号链接方法也无济于事,原因与尝试授予 Apache 读取权限的原因相同/home/andre/www/moodle- Web 服务器必须能够遍历您的主目录才能到达符号链接/var/www/html指向的位置,这仍然会带来安全风险。
首先,使用sudo cp -r /home/andre/www/moodle/ /var/www/html/. 这会将您的文件复制到/var/www/html,并使其远离您自己的主目录。然后我们将重做权限,以便您和 Web 服务器可以访问该目录中的所有内容,并为您的用户提供对所有文件和目录的完全读/写权限。然后,您将只需要/var/www/html为您的网站工作。
将数据复制回后,这实际上是四个步骤/var/www/html:
www-data.sudo chgrp -R www-data /var/www/html
sudo find /var/www/html -type d -exec chmod g+rx {} +
sudo find /var/www/html -type f -exec chmod g+r {} +
Run Code Online (Sandbox Code Playgroud)
这递归地将“组”设置www-data为文件夹和文件。然后,这将授予 Web 服务器递归和访问站点文档根目录结构的权限(+x仅适用于目录)。然后,它还确保 Web 服务器对所有文件具有读取权限,以便可以接收站点数据。
可能在某些情况下,您必须授予 Web 服务器对文件或目录的写权限 - 这可以通过执行sudo chmod g+w /var/www/html/PATH(where PATHis the path to the path to the file or folder in the directory structure in which you need to apply the Web 服务器的写权限)。
注意:在很多情况下,这可能会暴露有关站点配置的“安全”信息(例如数据库访问凭据等),您应该使用以下内容:(sudo chmod o-rwx /var/www/html/FILEPATH替换FILEPATH为相对于/var/www/html文件文件夹的路径)。
另请注意,如果“新文件”出现 403 问题,您将来可能需要重新运行这些命令,以便为 Web 服务器授予正确的权限,以继续访问在其中创建或复制的文件和文件夹以及没有www-data正确设置组。
sudo chown -R USER /var/www/html/
sudo find /var/www/html -type d -exec chmod u+rwx {} +
sudo find /var/www/html -type f -exec chmod u+rw {} +
Run Code Online (Sandbox Code Playgroud)
USER用您自己的用户名替换第一个命令!
我们在这里做三件事。首先,我们将您的用户设置为/var/www/html. 接下来,我们设置文件夹的读写权限,并允许您访问文件夹进入它们(+x目录项上的项)。然后我们将所有文件设置为我们刚刚设置的所有者的读/写权限。
www-data“访问”用户身份创建。sudo find /var/www/html -type d -exec chmod g+s {} +
Run Code Online (Sandbox Code Playgroud)
这会为目录上的组设置“set gid”位。在这些目录中创建的文件和文件夹将始终www-data作为组,允许 Web 服务器访问。
我们需要您的用户查看目录和文件。我们也需要网络服务器这样做。我们可能不希望其他系统用户(root 除外)看到这些数据。因此,不要给他们访问权限,并使其只有您的用户和 Web 服务器可以看到数据。
sudo chmod -R o-rwx /var/www/html/
Run Code Online (Sandbox Code Playgroud)
注意:您以后不必重新运行此程序,也不必在此处编辑“其他”权限类别的权限。如果“其他”用户无法访问/var/www/html/(他们没有必要的+x位/var/www/html来遍历文件结构和目录结构,也没有+r位来读取文件列表),那么其他用户对该目录下项目的权限或团体真的不会太重要。
对此,还有一种侵入性稍低的解决方案,尽管它不能保证适用于所有新文件,也不能保证适用于所有文件系统,包括文件访问控制列表。这使您可以保留文件的所有权www-data,但为所有意图和目的赋予您有效的所有者权利,即使您个人并不拥有这些文件。
该解决方案是一个小创伤小,并让你有一个目录内所拥有的所有文件www-data:www-data或root:www-data也给自己的访问。它使用访问控制列表,这让您可以让多个用户拥有权限,而无需设置单个组。这也让root或www-data系统的用户拥有的文件,而且还可以让您根据具体情况逐案添加额外的权限,以及对某些用户进行微调的权限,让他们阅读的东西,但不能编辑,和这样的。
假设我们仍在使用/var/www/html/,并且我们不希望窥探我们和系统(当然还有 root 用户)以外的用户查看我们的数据,我们需要做以下事情:
www-data。须藤 chown -R www-data:www-data /var/www/html
www-data和root当然的),对文件的访问权限。sudo find /var/www/html -type f -exec setfacl -mu:YOURUSERNAME:rw -m other::--- {} \;
www-data和root)对文件夹的访问权限,并将其设置为目录中新文件的“默认”ACL。sudo find /var/www/html -type d -exec setfacl -d -mu:YOURUSERNAME:rwx -mo::--- {} \;
setgid为所有目录设置位,以便如果您创建一个文件,网络服务器仍然可以www-data通过组权限访问它。sudo find /var/www/html -type d -exec chmod g+x {} \;
现在您可以访问所有目录,并且您不必离开www-data这有帮助,因为网络服务器仍然可以根据需要在任何地方创建文件(例如基于 PHP 的前端具有自己的缓存目录等需要创建和写入以进行正确操作)。
唯一的警告:如果您手动创建新文件,您需要相应地 chown 它们以将所有权授予网络服务器。这很简单sudo chown www-data:www-data filename,访问控制列表仍应让您拥有文件的有效所有者权限。
在多种情况下,我不得不以系统管理员的身份执行某些类型的非标准访问,而无需更改给定文件的所有者。这有效,但有其自身的问题,因为并非每个文件系统都支持文件访问列表。
小智 8
Thomas ward 的出色回答 https://askubuntu.com/a/767534/717860
您只需 3 个命令即可完成所有推荐的步骤,而不是 8 个命令:
3条命令:
sudo chown -R ubuntu:www-data /var/www
sudo find /var/www -type d -exec chmod 2750 {} \+
sudo find /var/www -type f -exec chmod 640 {} \+
Run Code Online (Sandbox Code Playgroud)
做与以下 8 个命令相同的工作:
sudo chgrp -R www-data /var/www
sudo find /var/www -type d -exec chmod g+rx {} +
sudo find /var/www -type f -exec chmod g+r {} +
sudo chown -R ubuntu /var/www/
sudo find /var/www -type d -exec chmod u+rwx {} +
sudo find /var/www -type f -exec chmod u+rw {} +
sudo find /var/www -type d -exec chmod g+s {} +
sudo chmod -R o-rwx /var/www/
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
262523 次 |
| 最近记录: |