理清用戶組概念及文件權限—搞懂網站權限設置

關於用戶,用戶組,角色和權限

用戶組:比如 現在有4組,把一些功能賦給組

  • 第1組 可以刪除

  • 第2組 可以查看

  • 第3組 可以編輯

  • 第4組 可以新增

當某一角色  比如管理員 普通管理員就是2個角色  分別屬於不同的用戶組 那麼他實現的功能就不一樣了

從而實現控制

  • 一個用戶組可以有多種權限 設置好知道 在把角色添加進去就可以了

  • 一個用戶的角色和權限來自兩部分,一部分繼承於所有父用戶組的角色和權限,另一部分來自特別爲其分配的角色和權限

管理員可以做任何事情, 不受任何約束

用戶的管理方法,在設計時採取“用戶——角色——許可”三級,這是WINDOWS操作系統的用戶管理方法。一個用戶可以有多個角色,一個角色也可以有多個許可。

  所以有數據庫設計時分別設計:

 

  用戶表:設UserID、用戶名、用戶信息

  角色表:設RoleID、CategoryID、RoleName、Description

  用戶角色表:UserID、RoleID

  

  分類表:CategoryID、CategoryName、Description

  許可表:PermissionID、CategoryID、PermissionName、Description

  角色許可表:RoleID、PermissionID

  

設計好數據庫後,即可以從事設計用戶、角色、許可的類。類庫分數據層類,完成建立、查詢、刪除、更新等操作。業務層的類,需要實現與數據無關功能,建立如用戶擁有角色、許可的列表,驗證方式等。

在Linux裏面,任何一個文件都具有『User, Group及Others』三種身份的個別權限, 我們可以將上面的說明以底下的圖示來解釋:

0210filepermission_1.jpg

我們以王三毛爲例,王三毛這個『文件』的擁有者爲王三毛,他屬於王大毛這個羣組, 而張小豬相對於王三毛,則只是一個『其他人(others)』而已。

 

不過,這裏有個特殊的人物要來介紹的,那就是『萬能的天神』!這個天神具有無限的神力, 所以他可以到達任何他想要去的地方,呵呵!那個人在Linux系統中的身份代號是『 root 』啦!所以要小心喔!那個root可是『萬能的天神』喔!

 

linux中權限(-rwxrwxrwx=777)

當你在linux下用命令ll 或者ls -la的時候會看到這些字眼,這些字眼表示爲不同用戶組的權限:

r:read就是讀權限 --數字4表示

w:write就是寫權限 --數字2表示

x:excute就是執行權限 --數字1表示

 

讀、寫、運行三項權限可以用數字表示,就是r=4,w=2,x=1。

這個我之前也有疑問,爲什麼讀是4而寫2,執行是1,爲什麼這樣安排?(不明白點擊查看)

數字設置權限就是 -_ _ _ _ _ _ _ _ _-,分別爲

0210filepermission_3.gif

所以,-rw-r--r--用數字表示成644,比如用FileZilla設置權限,

Screen Shot 2018-03-20 at 17.56.05.png

以上的其他用戶,不包括root這個super user。

文件各權限的作用

1、目錄

  a、進入目錄,即cd命令,所需要的權限爲執行權限(x)

  b、查看目錄內的文件,即ls命令,需要的權限爲讀取權限(r)

  c、創建刪除目錄內的文件夾/文件,即mkdir/touch命名,需要的權限爲寫如權限(w)

 

順便說下目錄隻影響下一級的,隔代不影響,好比一個目錄abc/sub/,如果abc沒有w權限,但sub有w權限,則可以在sub中創建文件,當然abc也需要有x權限,否則都進不去更不用說創建了,但只要能進去(可以通過切換root管理員的方法),就不會再受abc的影響,只會受sub的影響。

一般我們目錄會給5(rx)的權限,也就是讀取和執行權限,只有圖片上傳或緩存等目錄需要創建的纔會給7(rwx)的權限

2、文件

  a、文件打開,可以用cat/vim命令打開,所需權限爲讀取權限(r)

  b、文件修改,可以用cat/vim命令打開並保存,所需權限爲寫入權限(w)

  c、文件執行,可以直接./abc.out等執行,所需要權限爲執行權限(x)

 

這裏需要說明的的是php(或者shell等)無論是命令行執行還是web端執行,名爲執行,實際上是讀取文件到php內核中取解析,所以只要有讀取權限(r)就可以。

 

一般我們文件會給4(r)權限,也就是讀取權限,只有日誌、緩存等需要向文件中寫入內容的纔會給6(rx)權限

 

之所以上方沒有說755,777、644權限,而僅僅是是說單個的權限,是因爲你的網站目錄所屬的權限不能確保與執行時所用的用戶什麼關係,也就是說執行時的用戶可能是owner、可能是group也可能是other

shell命令查看與修改文件權限

查看文件權限命令簡單 ls -l  

修改文件權限命令  chmod -R   (權限)(目錄) ——修改文件夾內所有的文件和文件夾及子文件夾屬性爲可寫可讀可執行

比如 chmod -R 744 zhoulujun/

php執行時的權限

 

我們自己在ssh連接linux操作時必須要有個用戶名才能登錄操作,同樣php要想處理php相關的文件,也是在某個用戶下操作的,而用戶是在哪裏創建或定義的呢,一般會是在安裝php環境時創建的,例如apache,nginx等環境都會默認創建用戶和用戶組,而php的讀取時就用此用戶來讀取。

所以網站php文件 要設置 754,html文件,設置744即可。

事實上對於用戶程序來說,一個文件能否讀/寫/執行,根本就不能提前判定。我們編程時唯一的辦法就是“試一試”——不做任何提前判斷,直接把操作執行出去,出錯了再說。

 

而此時如果判執行權限,那就非常危險了:php解釋器嘗試執行,如果成功了,那麼執行此文件的行爲就必然會發生,不可避免。這就意味着php解釋器可以執行任何有執行權的文件,哪怕不是php代碼也沒關係。

 

這樣在系統被黑,存在未知文件植入的情況下,我們就將失去php解釋器的最後一層保護,***可以通過php解釋器,任意執行任何語言編寫的一切惡意程序。其後果將是毀滅性的。

 

所以“調用php命令來執行腳本時只需讀取權限”,這個是當然的,也是必須的。

 

簡而言之:任何語言的解釋器,都只要求操作系統嘗試讀取代碼文件,得到代碼文本。解釋器在得到代碼文本之後,會自行負責後續的工作,無需操作系統染指。解釋器和代碼的關係,猶如編輯器和文稿文件的關係。解釋器絕對不會委託操作系統去執行任意文件。

 

java也是這樣的。一切解釋型語言的解釋器都是這樣的,沒有任何例外——過去沒有,現在也沒有,將來更不可能有。

本文來源:理清用戶組概念及文件權限-搞懂網站權限設置 - computer science - 周陸軍的個人網站


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