网站是如何创建的:
该网站的文件是从另一台计算机作为压缩文件夹复制的:
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
相关问题文件权限位后面的点是什么意思?