【Linux权限】apache网站根目录的权限配置

问题引入

阿里云服务器上的一个网站根目录:/var/www/testpublic

这个是通过配置基于端口的虚拟主机设置的站点根目录。里面的东西如截图所示。

昨晚我在该目录下增加了一个menu.html,而该静态网页引用了img目录下的一张图片。但是奇怪的是我通过浏览器访问,该图片并没有显示,打开浏览器控制台,看见该图片加载失败。

后来发现是权限问题!!!通过浏览器我可以访问js目录下的jQuery1.4.2.js,却不能访问img目录下的rightArrow.png。从截图上看可知是rightArrow的权限过小导致的。

在仔细分清楚其中的权限问题之前,我先来整理并记录一下有关权限的知识。

权限的基础知识

查看权限可通过命令:

ls -l

例:d  rwx  r-x  r-x (注意,实际上没有空格,为了方便观察,我在中间加上了空格,原本应该是这样“drwxr-xr-x”)

一共有10位,

第1位:表示文件类型。d是目录文件,l是链接文件,-是普通文件,p是管道

其它位的字母含义:r是读(4),w是写(2),x是执行(1)。括号中是该权限对应的数值

后9位分为3段,每3位一段。

rwx:第2-4位表示这个文件的属主拥有的读、写、执行的权限。(这一段对应的数值:4+2+1=7)

r-x:第5-7位表示和这个文件属主所在同一个组的用户具有读和执行的权限。(这一段对应的数值:4+1=5)

r-x:第8-10位表示其他用户具有读和执行的权限。(这一段对应的数值:4+1=5)

所以权限“rwx  r-x  r-x”也对应数值755(可以说两者是等价的)。这个数值在通过命令修改权限的时候使用。

其他权限以此类推。

分析问题

apache httpd有默认的用户和组。它默认用户为apache,默认组为apache。

如何证实这一点?

查看当前正在运行的httpd服务:

ps -ef | grep httpd

同时还可以通过查看有关配置文件去验证:

vim /etc/passwd;
vim /etc/group;

 

我们通过浏览器url访问图片,实际上是通过apache用户去读取这个图片。从截图上看这张图片属于root用户,属于root组。但是apache不属于root用户组,属于系统其他用户。就是说得看权限后9位的第3段,从截图看出来,apache什么权限都没有。所以我们自然无法通过url访问该图片。

解决问题

单单从解决这个问题的角度,只需修改一下图片的权限就可以了。

可以参照js目录下的jQuery1.4.2.js,将图片权限设置为:-  rw-  r--  r-- (644)即可

假设我现在处于/var/www/testpublic(网站根目录)下

chmod 644 img/rightArrow.png

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值