为什么网站页面的访问会被 Apache 拒绝,除非我用副本替换它们?

为什么网站页面的访问会被 Apache 拒绝,除非我用副本替换它们?

网站是如何创建的:

该网站的文件是从另一台计算机作为压缩文件夹复制的:

WEBSITE.tar.gz

我解压缩并将内容移动到/var/html/www新的网络服务器中,结果是文件的位置如下:

/var/html/www/index.html
/var/html/www/css/styles.css
/var/html/www/img/photo.jpeg

文件和目录的权限导致与以前的机器不同,因此我研究并找到了这个解决方案来快速修复权限:

sudo chmod -R u+rwX,go+rX,go-w /var/www/html/*

我检查了文件的权限,现在它们确实显示了我期望的方式:

cd /var/www/html
ls -a -l
drwxr-xr-x. 2 root root size month day hour css
drwxr-xr-x. 2 root root size month day hour img
-rw-r--r--. 1 root root size month day hour index.html

cd /var/www/html/img
ls -a -l
-rw-r--r--. 1 root root size month day hour photo.jpeg

cd /var/www/html/css
ls -a -l
-rw-r--r--. 1 root root size month day hour styles.css

问题:

当我尝试访问该网站的页面时,我仍然收到此消息:

禁止访问 您无权访问此服务器上的 /index.html

然后我做了一个实验:

sudo mv index.html index.html.backup
sudo cp index.html.backup index.html

现在页面加载正常,但不会显示图像和样式。因此,如果我完成复制过程,我将获得要在网站中显示的图像和样式:

sudo mv css css.backup
sudo cp css.backup css
sudo mv img img.backup
sudo cp img.backup img

它有效,但是解释是什么?我不想揭开这个谜团,我想知道除了复制文件之外,解决问题的“正常”方法是什么。

答案1

对于包括 Linux 上的 GNU-coreutils ls模式位末尾的点表示 SELinux“上下文”适用-- 使用ls [-l] -Z(或--context) 查看详细信息 -- 并且(最近的)RedHat/CentOS 默认情况下允许 SELinux 限制对包括文件在内的各种资源的访问。

除非您想使用 SELinux 功能来控制访问,否则最简单的方法就是[sudo] restorecon [-R]在文件上忽略它,请参阅man restorecon;禁用 SELinux 的方法见man setenforce

相关问题文件权限位后面的点是什么意思?

相关内容