【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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章