對Linux的權限管理的認識

Linux/GNU有一句廣爲流傳的話就是“Linux的一切都是文件”,系統的運行就是內核創建一系列進程來調用文件完成用戶下達的任務。且Linux/GNU系統作爲一個多用戶多任務的操作系統,如何來管理各個用戶及他們所創建的任務,就是一個軟件工程,他的架構設計可以參考我們的社會結構,畢竟我們的社會先於軟件工程發展了幾千年,直到上世紀50年代後軟件工程的硬件基礎發展起來,它的依賴關係滿足後自然就發展出來了(當然在軟件系統中我們可以更少受一些不必要的社會規則的掣肘,更理想化)。軟件工程以所有用戶的長遠利益着想,最高目標是穩定高效不宕機崩潰,杜絕以不可控的崩潰來實現重啓,出現這種情況,最受傷的是普羅大衆。 在社會中,我們每個自然人都是一個公民,有自己的家庭,家庭成員就構成了一個基本的用戶組,每戶家庭又組成更大一級的國家,每個國家又組成一個地球村(這是單從家庭的的維度解釋的用戶與用戶組的概念)。當然我們還有自己的職業,工作在不同的崗位,爲系統的可持續運行發展貢獻自己的力量,我們就又分屬於公司的這個用戶組,所以單個用戶可以屬於多個用戶組。.在單個用戶組中,用戶對系統管理員或者上級組管理員分配給自己的資源而創造的文件擁有可支配的一切權限(r,w,x),他可以對除自身意外的其他用戶及組成員設置相關權限。現主要講以下幾點: 1.Linux文件權限的概念 在各個Linux/GNU發行版中,登錄系統,執行“ls -al”命令!,會看到如下內容: ![截圖](https://s1.51cto.com/images/blog/201808/11/67ef9fdc56467f3845378759365e56dc.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=) 主要講圖中第一列,第一列有10個字符,可分爲4組。第一組爲第一個字符,接下來每三個字符爲一組。 1).第一個字符代表這個文件的類型 若是【d】,則是目錄(directory),例如上圖中的後兩行; 若是【- 】,則是文件,例如上圖中中間的4行; 若是【l】,則表示爲鏈接文件; 若是【b】,則表示設備文件裏面的可供存儲的接口設備; 若是【c】,則表示爲設備文件裏的串行端口設備,例如鍵盤,鼠標。 2).後三組都是“r,w,x”3個參數的組合,【r】代表可讀(read),【w】代表可寫或修改(write),【x】代表可執行(excute)。這三個權限的位置不會改變,如果沒有權限,就會出現減號【-】。 第一組爲“文件所有者的權限”,以“.cshrc”那個文件爲例,該目錄的所有者可讀寫但不可執行; 第二組爲“同用戶組的權限”,以同一個文件爲例,該文件對同組的其他用戶可讀不可寫(修改)且不可執行; 第三組爲“其他非本組用戶的權限”,以同一個文件爲例,該目錄對非本組用戶也是可讀不可寫(修改)且不可執行; *Linux文件權限的設置對系統的數據安全有很大的作用,比如說自己家裏你不希望小偷隨意出入帶走你的財產,就算是熟人來家裏做客,你也不會讓他隨意改動傢俱擺放吧。還有關於系統服務的文件通常只有root用戶才能讀寫或執行,例如/etc/shadow這個存放賬號管理信息的文件,由於該文件記錄了你 系統中所有用戶賬號的數據,當然不能讓任何人讀取(否則密碼會被竊取埋下安全隱患),所以該文件的權限就會是【-rw-------】,只有root才能夠來讀取。 2.文件默認權限與改變文件的屬性與權限 同樣的,公民或用戶可以按照需要,靈活改變自身屬下的文件屬性或創建新的文件,比如加入(創建)了另一個組 ,就像換工作了或者結婚組建新的家庭。Liunx系統下爲了方便用戶的創建操作,會對新文件設置一個默認的權限。比如,普通文件不會給執行權限(x),出於安全考慮,防止下載的不明文件(計算機病毒)自動執行;目錄文件會給執行權限,方便用戶進入查看,但不給寫(w)權限,以免目錄被亂改。 一個文件的屬性與權限有很多,先介紹幾個常用與用戶組、所有者、各種身份的權限的修改的命令: 1).chgrp:change group,改變用戶所屬用戶組; 2).chown:change owner,改變文件所有者; 3).chmod:change mode,改變權限; 1)).數字類型改變; Linux文件的基本權限有9個,分別是owner,group,others三種身份各自的r、w、x權限。我們用數字來代表各個權限:r=4,w=2,x=1,各種身份各自的三個權限的分數累加,就可以得到一個代表文件權限的三位數,比如777,即該文件對屬主、屬組、其他用戶都是開放r,w,x權限的。 2)).符號類型改變; 我們可以用u,g,o來分別代表三種身份權限,此外用a(all)代表全部的身份,讀寫執行的權限可以寫成r、w、x,那麼可以用以下例子表示:u=rwx,g=rx,ug=rx,a=rx等。 3.特殊權限 系統中總會有一些事物無法用基本權限限定,有的是出於安全考慮做必要的隔離,比如其他用戶對/user/bin/passwd的訪問權限設置;或者是公共空間的自律要求,比如在/tmp這個系統存放臨時文件的目錄,某用戶對其他用戶創建的文件有何訪問權限呢?特殊權限有SUID,SGID,SBIT: 1).SUID 2).SGID 3).SBIT:Sticky Bit SBIT只針對目錄有效,主要在/tmp目錄應用,或者其他工作組的共享文件目錄。SBIT的主要作用是: 1)).當前用戶對此目錄具有w,x權限,即具有寫入(修改)的權限時; 2)).當前用戶在該目錄下創建文件或目錄後,只有自己和root纔有權利刪改該文件。 這就和社會的公共空間一樣,本來各個用戶都有權限對其他用戶的文件進行刪改,但是要避免某些用戶對其他用戶的惡意操作,維護全體用戶的最大化利益,我們需要對公共空間內的用戶創建的文件加以保護,另設SBIT權限。 SUID/SGID/SBIT權限設置 參考之前權限修改的方式,也分爲數字式和字符式: 1).數字式 數字式更改權限的方式爲“三個數字”的組合,如果在三個數字的前面再加上一個數字的話,最前面的那個數字就可以表示這幾個權限了; 4爲SUID,2爲SGID,1爲SBIT 2).字符式 SUID爲u+s,SGID爲g+s,SBIT爲o+t 以上就是我對Linux文件權限管理的一定簡單認識,希望對大家有所幫助。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章