CentOS服务器文件权限

CentOS服务器文件权限

我开始学习使用 CentOS 虚拟机进行服务器管理。我正在尝试制作一个简单的网站。

因为 Apache 默认文件位于其中,/var/www所以很难编写/制作/更改文件。话虽如此,我想将主页放在文件夹中/var/www,所有其他页面都将放在文件夹中/home/$USER/Documents/Website

主页上的代码只是href其他页面的代码。当我在机器上运行代码时,它可以工作,但如果我进入主页(在浏览器中输入 IP),则链接不起作用,但主页仍然存在。

当我点击链接时出现的错误是404 file not found

如果我从该错误代码复制文件位置,并在服务器上键入

cat {file_location}

打印文件没有问题。我已将 Apache 组更改为该文件的所有者。我怎样才能让Apache服务器找到这里的文件?我需要编辑吗http.conf

编辑:我将如何制作它以便服务器可以在名为 的文件夹中读取和写入/Website

编辑2:我不知道我正在运行哪个版本的Apache。我使用 CentOS 安装程序来安装 Apache。这/var/www/html/index.html是当我输入 IP 地址时弹出的网页,正如它应该的那样。这很可能是 SELinux 问题,因为在我使用 GUI 软件包安装服务器后,SELinux 弹出窗口告诉我存在“安全”问题。我运行了它所说的脚本,我可以编写文件夹/var/www/html。现在我想在不同的位置添加文件夹,但我不知道该怎么做。除了 SELinux 妨碍写入文件夹之外,如果我没记错的话,/var/www/html我还更改了所有者并运行。chmod 755

答案1

如果您只想让 Apache 在 中提供文件服务/Website,请编辑您的 Apache 配置/etc/httpd/conf/httpd.conf并将其更改DocumentRoot/Website.然后重新加载服务器systemctl reload httpd.service

您还需要更改 SELinux 文件上下文及其/Website中的文件。您可能希望使用与/var/www(httpd_sys_content_thttpd_sys_rw_content_t) 中相同的文件上下文。添加新的文件标签规则semanage,然后使用restorecon来应用它:

semanage fcontext -a -t httpd_sys_rw_content_t "/Website(/.*)?"
restorecon -R -v /Website

如果您想配置 Apache 以在主目录中提供用户内容,例如。 http://server/~user, 您可以使用mod_用户目录。启用它/etc/httpd/conf.d/userdir.conf并重新加载服务器。

启用httpd_read_user_contentSELinux 布尔值以允许访问:

semanage boolean -m --on httpd_read_user_content 

目录中的文件public_html应该已经配置为正确的httpd_user_content_t类型。如果没有,您可以运行restorecon -R -v /home/user/public_html以应用正确的文件上下文。

相关内容