用戶組:好比 如今有4組,把一些功能賦給組php
第1組 能夠刪除html
第2組 能夠查看java
第3組 能夠編輯linux
第4組 能夠新增nginx
當某一角色 好比管理員 普通管理員就是2個角色 分別屬於不一樣的用戶組 那麼他實現的功能就不同了web
從而實現控制shell
一個用戶組能夠有多種權限 設置好知道 在把角色添加進去就能夠了數據庫
一個用戶的角色和權限來自兩部分,一部分繼承於全部父用戶組的角色和權限,另外一部分來自特別爲其分配的角色和權限apache
管理員能夠作任何事情, 不受任何約束編程
用戶的管理方法,在設計時採起「用戶——角色——許可」三級,這是WINDOWS操做系統的用戶管理方法。一個用戶能夠有多個角色,一個角色也能夠有多個許可。
因此有數據庫設計時分別設計:
用戶表:設UserID、用戶名、用戶信息
角色表:設RoleID、CategoryID、RoleName、Description
用戶角色表:UserID、RoleID
分類表:CategoryID、CategoryName、Description
許可表:PermissionID、CategoryID、PermissionName、Description
角色許可表:RoleID、PermissionID
設計好數據庫後,便可以從事設計用戶、角色、許可的類。類庫分數據層類,完成創建、查詢、刪除、更新等操做。業務層的類,須要實現與數據無關功能,創建如用戶擁有角色、許可的列表,驗證方式等。
在Linux裏面,任何一個文件都具備『User, Group及Others』三種身份的個別權限, 咱們能夠將上面的說明以底下的圖示來解釋:
咱們以王三毛爲例,王三毛這個『文件』的擁有者爲王三毛,他屬於王大毛這個羣組, 而張小豬相對於王三毛,則只是一個『其餘人(others)』而已。
不過,這裏有個特殊的人物要來介紹的,那就是『萬能的天神』!這個天神具備無限的神力, 因此他能夠到達任何他想要去的地方,呵呵!那我的在Linux系統中的身份代號是『 root 』啦!因此要當心喔!那個root但是『萬能的天神』喔!
當你在linux下用命令ll 或者ls -la的時候會看到這些字眼,這些字眼表示爲不一樣用戶組的權限:
r:read就是讀權限 --數字4表示
w:write就是寫權限 --數字2表示
x:excute就是執行權限 --數字1表示
讀、寫、運行三項權限能夠用數字表示,就是r=4,w=2,x=1。
這個我以前也有疑問,爲何讀是4而寫2,執行是1,爲何這樣安排?(不明白點擊查看)
數字設置權限就是 -_ _ _ _ _ _ _ _ _-,分別爲
因此,-rw-r--r--用數字表示成644,好比用FileZilla設置權限,
以上的其餘用戶,不包括root這個super user。
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)的權限
a、文件打開,能夠用cat/vim命令打開,所需權限爲讀取權限(r)
b、文件修改,能夠用cat/vim命令打開並保存,所需權限爲寫入權限(w)
c、文件執行,能夠直接./abc.out等執行,所須要權限爲執行權限(x)
這裏須要說明的的是php(或者shell等)不管是命令行執行仍是web端執行,名爲執行,其實是讀取文件到php內核中取解析,因此只要有讀取權限(r)就能夠。
通常咱們文件會給4(r)權限,也就是讀取權限,只有日誌、緩存等須要向文件中寫入內容的纔會給6(rx)權限
之因此上方沒有說755,77七、644權限,而僅僅是是說單個的權限,是由於你的網站目錄所屬的權限不能確保與執行時所用的用戶什麼關係,也就是說執行時的用戶多是owner、多是group也多是other
查看文件權限命令簡單 ls -l
修改文件權限命令 chmod -R (權限)(目錄) ——修改文件夾內全部的文件和文件夾及子文件夾屬性爲可寫可讀可執行
好比 chmod -R 744 zhoulujun/
咱們本身在ssh鏈接linux操做時必需要有個用戶名才能登陸操做,一樣php要想處理php相關的文件,也是在某個用戶下操做的,而用戶是在哪裏建立或定義的呢,通常會是在安裝php環境時建立的,例如apache,nginx等環境都會默認建立用戶和用戶組,而php的讀取時就用此用戶來讀取。
因此網站php文件 要設置 754,html文件,設置744便可。
事實上對於用戶程序來講,一個文件可否讀/寫/執行,根本就不能提早斷定。咱們編程時惟一的辦法就是「試一試」——不作任何提早判斷,直接把操做執行出去,出錯了再說。
而此時若是判執行權限,那就很是危險了:php解釋器嘗試執行,若是成功了,那麼執行此文件的行爲就必然會發生,不可避免。這就意味着php解釋器能夠執行任何有執行權的文件,哪怕不是php代碼也不要緊。
這樣在系統被黑,存在未知文件植入的狀況下,咱們就將失去php解釋器的最後一層保護,***能夠經過php解釋器,任意執行任何語言編寫的一切惡意程序。其後果將是毀滅性的。
因此「調用php命令來執行腳本時只需讀取權限」,這個是固然的,也是必須的。
簡而言之:任何語言的解釋器,都只要求操做系統嘗試讀取代碼文件,獲得代碼文本。解釋器在獲得代碼文本以後,會自行負責後續的工做,無需操做系統染指。解釋器和代碼的關係,猶如編輯器和文稿文件的關係。解釋器絕對不會委託操做系統去執行任意文件。
java也是這樣的。一切解釋型語言的解釋器都是這樣的,沒有任何例外——過去沒有,如今也沒有,未來更不可能有。