Linux系統Web網站目錄和文件安全權限設置


查看Linux文件的權限:ls -l 文件名稱
查看linux文件夾的權限:ls -ld 文件夾名稱(所在目錄)
例如:
drwxr-xr-x 2 root root 4096 2009-01-14 17:34 bin
drwxr-xr-x 2 root root 4096 2009-01-14 17:34 bin
第一個字符代表文件類型。[d]–目錄、[-]–文件、[l]–鏈接、[b]–可儲存周邊設備、[c]–序列設備、[s]-套接字。
接下來每三個字符為一組權限,分為三組,依次代表所有者權限,同組用戶權限,其它用戶權限。
每組權限的三個字符依次代表是否可讀,是否可寫,是否可執行,[r]–可讀、[w]–可寫、[x]–可執行、[-]-相應的權限還沒有被授予。其中,rwx也可以用數字來代替,[r]=4,[w]=2,[x]=1,[-]=0。
第一組rwx :表示擁有人(user)所有者的權限 (這里rwx:代表擁有人有可讀,可寫,可執行的權限)
第二組r-x:表示同組群(group)使用者權限(這里r-x代表同組群使用者有可讀,可執行權限)
第三組r-x:表示其他(other)使用者權限(這里r-x代表其他使用者有可讀,可執行權限)

修改文件及文件夾權限:
sudo chmod -(代表類型)×××(所有者)×××(組用戶)×××(其他用戶)
常用修改權限的命令:
sudo chmod 600 ××× (只有所有者有讀和寫的權限[-rw-------])
sudo chmod 644 ××× (所有者有讀和寫的權限,組用戶只有讀的權限[-rw-r--r--])
sudo chmod 666 ××× (每個人都有讀和寫的權限[-rw-rw-rw-])
sudo chmod 700 ××× (只有所有者有讀和寫以及執行的權限[-rwx-----])
sudo chmod 777 ××× (每個人都有讀和寫以及執行的權限[-rwxrwxrwx])
sudo chmod o+w xxx.xxx (表示給其他人授予寫xxx.xxx這個文件的權限)
sudo chmod go-rw xxx.xxx (表示刪除xxx.xxx中組群和其他人的讀和寫的權限)
chmod 用於改變文件或目錄以及所有子目錄的訪問權限。該命令有兩種用法。一種是包含字母和操作符表達式的文字設定法;另一種是包含數字的數字設定法。
1. 文字設定法
chmod [who] [+|–|=] [mode] 文件名
2. 數字設定法
chmod[mode]文件名
改變一個文件的權限: chmod mode file|dir
改變所有子目錄的權限: chmod mode dir -R (注意后面加了個-R參數)
參數就是權限模式,數字屬性的格式應為3個從0到7的八進制數,其順序是(u)(g)(o),mode=777 or 752 or 666,mode的三個數字,分別表示owner,group,others所具有的權限。1=x執行,2=w寫,4=r讀,比如owner具有所有權限,1+2+4=7, 又比如group 具有讀 和執行權限 1+4=5。

命令中各選項的含義為:
操作對象who可是下述字母中的任一個或者它們的組合:
u 表示”用戶(user),也就是所有者”,即文件或目錄的所有者。
g 表示”同組(group)用戶,也就是所有者所在的組群”,即與文件屬主有相同組ID的所有用戶。
o 表示”其他(others)用戶,但不是u和g”。
a 表示”所有(all)用戶,也就是包括u,g和o”。它是系統默認值。
設置mode所表示的權限可用下述字母的任意組合:
- 沒有權限,即相應的權限還沒有被授予,對應數字0。
r 可讀,對應數字4。
w 可寫,對應數字2。
x 可執行,對應數字1。
t 保存程序的文本到交換設備上。
X 只有目標文件對某些用戶是可執行的或該目標文件是目錄時才追加x 屬性。
s 在文件執行時把進程的屬主或組ID置為該文件的文件屬主。方式”u+s”設置文件的用戶ID位,”g+s”設置組ID位。
行動:
+ 表示添加某個權限
- 表示刪除某個權限
= 表示使之成為唯一的權限,即賦予給定權限並取消其他所有權限(如果有的話)
文件名:
以空格分開的要改變權限的文件列表,支持通配符。

例如:把目錄/his及其下的所有文件和子目錄的屬主改成wang,屬組改成users。
chown –R wang.users /his


chmod命令詳細說明

chmod 改變文件的權限,改變是對三種權限的累加,例如,r=4,w=2,x=1
own 4+2+1=7
group 4+2+1=7
other 4+2+1=7
命令為chmod 777 文件名字
使用符號改變文件權限,chmod a+w 名字,chomod a-w 文件名,chomod u=rw,go=rw等用法,例如: -rw-r–r–
普通文件,文件主組用戶其他用戶是文件sobsrc.tgz 的訪問權限,表示sobsrc.tgz是一個普通文件;sobsrc.tgz的屬主有讀寫權限;與sobsrc.tgz屬主同組的用戶只有讀權限;其他用戶也只有讀權限。
確定了一個文件的訪問權限后,用戶可以利用Linux系統提供的chmod命令來重新設定不同的訪問權限。也可以利用chown命令來更改某個文件或目錄的所有者。利用chgrp命令來更改某個文件或目錄的用戶組。

在一個命令行中可給出多個權限方式,其間用逗號隔開。例如:chmod g+r,o+r 使同組和其他用戶對文件example 有讀權限。
例如,如果想讓某個文件的屬主有”讀/寫”二種權限,需要把4(可讀)+2(可寫)=6(讀/寫)。

(1)文字設定法:
例1:$ chmod a+x sort
即設定文件sort 的屬性為:文件屬主(u)增加執行權限;與文件屬主同組用戶(g)增加執行權限;其他用戶(o)增加執行權限。
例2:$ chmod ug+w,o-x text
即設定文件text的屬性為: 文件屬主(u)增加寫權限;與文件屬主同組用戶(g)增加寫權限;其他用戶(o)刪除執行權限。
例3:$ chmod u+s a.out
假設執行chmod后a.out 的權限為(可以用ls –l a.out命令來看): -rws–x–x 1 inin users 7192 Nov 4 14:22 a.out並且這個執行文件要用到一個文本文件shiyan1.c,其文件存取權限為”-rw——-”,即該文件只有其屬主具有讀寫權限。當其他用戶執行a.out這個程序時,他的身份因這個程序暫時變成inin(由於chmod命令中使用了s選項),所以他就能夠讀取shiyan1.c這個文件(雖然這個文件被設定為其他人不具備任何權限),這就是s 的功能。
因此,在整個系統中特別是root本身,最好不要過多的設置這種類型的文件(除非必要)這樣可以保障系統的安全,避免因為某些程序的bug而使系統遭到入侵。
例4:$ chmod a-x mm.txt
$ chmod -x mm.txt
$ chmod ugo-x mm.txt
以上這三個命令都是將文件mm.txt 的執行權限刪除,它設定的對象為所有使用者。


(2)數字設定法:
例1:$ chmod 644 mm.txt
$ ls -l
即設定文件mm.txt的屬性為:
-rw-r–r–1 inin users 1155 Nov 5 11:22 mm.txt
文件屬主(u)inin 擁有讀、寫權限
與文件屬主同組人用戶(g)擁有讀權限
其他人(o)擁有讀權限
例2:$ chmod 750 wch.txt
$ ls -l
-rwxr-x— 1 inin users 44137 Nov 12 9:22 wchtxt
即設定wchtxt這個文件的屬性為:
文件主本人(u)inin 可讀/可寫/可執行權
與文件主同組人(g)可讀/可執行權
其他人(o)沒有任何權限


Linux下Web 目錄和文件安全權限設置

在Linux下,web 目錄和文件權限必須從整體上考慮系統的安全。一般情況下,對目錄,需要設置r(讀取)和x(執行)權限,有的目錄同時還需要w(寫入權限);對文件,需要r(讀取),有的文件需要w(寫入)權限或x(執行)權限。
在Linux系統中,使用命令umask設置創建文件或目錄的默認rwx權限,系統默認的umask設置是022,這個權限的計算相當於文件、目錄權限的掩碼,例如此時創建的目錄權限755(rwxr-xr-x),那么其umask權限相當於相對777的掩碼022;而此時創建的文件權限為644 (rw-r–r–),其umask權限相當於相對666的掩碼022。
當然,這樣的權限設置很不安全,同一台server上的不同用戶(可能相同也可能不同用戶組)/虛擬主機用戶能夠互相窺探到對方的源碼,umask值必須修改的比較嚴格,以使得除root權限之外,不能隨意互相窺探其他人的源碼、數據庫資料等。
設置方法是:去掉同用戶組和其他用戶組的 r(讀取)權限,具體做法是設置目錄權限為500(讀取+執行)同時文件權限為400(讀取),此時umask應設置為277,設置目錄權限為700(讀取+寫入+執行)同時文件權限為500(讀取+執行),此時umask應設置為177。
例如對於后者,我們可以使用命令 umask 177 設置當前對話下的默認目錄、文件創建權限,如果要永久設置,就要修改/root/.bash_profile 以及所有用戶home 的錄下的.bash_profile文件,將其中的umask 022改為umask 177。

從以上可以看出,如果要設置較為安全的目錄、文件權限,幾個基本原則就是:
1、盡可能減少web路徑下可寫入目錄的數量。
2、文件的寫入和執行權限只能選擇其一,避免同時出現寫入和執行權限。


網站文件最小權限設置方法

1、假如web服務器是apache,那么用戶訪問web頁面的時候,就是通過apache服務(httpd)的所有者的身份進行訪問,所以要將 apache也就是httpd服務的所有者和所有組設為apache或者自定用戶,不要用root,這個一般安裝的時候就會有默認設置。
2、網站程序的所有者不要和apache服務的所有者一樣,如果一樣就相當於給了普通訪問者對web文件的所有操作權!一旦web程序有漏洞,那就 over了!默認一般是root,盡量改為其他用戶,比如自己建立一個daemon,切記不要和apache服務的所有者一樣。 3、對於網站根目錄權限,按照最小權限的原則,應設置為755
4、對於緩存目錄或者上傳目錄例如緩存目錄:caches目錄,由於此目錄必須要有寫權限,也就是目錄同是有rwx三個權限,這時候可以直接建立一個 caches空目錄,然后chown daemon.daemon ./caches,就是把caches所有者、所有組改為自定義的daemon就ok了,這樣如果訪問web頁面,就會以apache的身份進入 caches建立緩存目錄及文件,默認系統都是以最小權限建立!
5、對於普通目錄,最小權限為755,普通用戶不給寫權限
6、對於普通文件,最小權限為644,普通用戶不給執行權限 總而言之,言而總之就是:目錄不要給寫權限,文件不要給執行權限(除非特殊情況,如目錄要上傳)


簡單介紹網站目錄文件權限的基本設定

我們假設http服務器運行的用戶和用戶組是www,網站用戶為centos,網站根目錄是/home/centos/web。
1、我們首先設定網站目錄和文件的所有者和所有組為centos,www,如下命令:chown -R centos:www /home/centos/web
2、設置網站目錄權限為750,750是centos用戶對目錄擁有讀寫執行的權限,這樣centos用戶可以在任何目錄下創建文件,用戶組有有讀執行權限,這樣才能進入目錄,其它用戶沒有任何權限。 find -type d -exec chmod 750 {} \;
3、設置網站文件權限為640,640指只有centos用戶對網站文件有更改的權限,http服務器只有讀取文件的權限,無法更改文件,其它用戶無任何權限。 find -not -type d -exec chmod 640 {} \;
4、針對個別目錄設置可寫權限。比如網站的一些緩存目錄就需要給http服務有寫入權限。例如discuz x2的/data/目錄就必須要寫入權限。find data -type d -exec chmod 770 {} \;


參考文章:

linux下為目錄和文件設置權限 (http://blog.csdn.net/lenix/article/details/7548325)
linux下的文件權限與目錄配置 (http://www.cnblogs.com/woaiyy/archive/2012/06/03/2532508.html)
linux網站目錄最小權限分配-linux讀寫執行權限區別 (http://blog.csdn.net/kunatnet/article/details/41868353)
linux文件權限查看及修改(實用) (http://blog.csdn.net/zljjava/article/details/46691387)
linux查看及修改文件權限以及相關 (http://www.cnblogs.com/wenqiangwu/archive/2013/09/12/3317030.html)

 

版權聲明:本文采用署名-非商業性使用-相同方式共享(CC BY-NC-SA 3.0 CN)國際許可協議進行許可,轉載請注明作者及出處。
本文標題:Linux系統Web網站目錄和文件安全權限設置
本文鏈接:http://www.cnblogs.com/sochishun/p/7413572.html
本文作者:SoChishun (郵箱:14507247#qq.com | 博客:http://www.cnblogs.com/sochishun/)
發表日期:2017年9月2日


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM