今天學習了Linux的權限相關的知識,在Linux下,有三種“身份”:文件的所屬者,與該文件所屬者相同組的成員,其他成員。
這裏說一下組的概念,組相當於我小時候做值日,每週每天都會有不同的人來打掃衛生,那每天打掃衛生的那批人,就是一個組,在Linux上,假設我們新建一個組A,裏邊有成員a,b,c。這就構成了一個最簡單的組。
其他的兩個,很好理解,從詞語上來看就能明白意思,這裏就不做解釋了。
既然有組和用戶,那麼我們怎麼去新建一個組合用戶呢?這裏用到了useradd和groupadd,介紹這兩個命令之前,要先明確uid和gid。
我們都知道,系統在使用用戶登錄的時候,不可能是用用戶名操作的,有過編程經驗的人都知道,我們要給每個用戶分配一個唯一的ID,系統進行任何操作的時候,都使用這個ID,這樣就進行了統一。
在Linux下,uid由32位組成從0開始,60000以內。
其中:0爲root用戶;
1-499爲系統用戶;
500之後爲普通用戶。
下邊我們介紹命令的使用方式:
1、
useradd:增加用戶
例:useradd zw
這樣就建立了一個名爲zw的用戶。
有以下幾個參數:
-d 家目錄
-s 指定登錄的shell
-u 指定userId
-g 指定主組
-G 指定附屬組
2、
userdel:刪除用戶
userdel 用戶名
-r參數,在刪除用戶的同時,一起刪除家目錄
3、
groupadd:增加組
groupadd 組名
4、
groupdel:刪除組
groupdel 組名
講完了用戶和組的概念之後我們來說一下權限
Linux是根據UGO這三種不同的身份來限制我們的權限的
權限分爲3種,r可讀,w可寫,x可執行
5、
chmod命令:chmod 模式 文件路徑
例:爲名爲test的文件的同族用戶增加可執行權限:chmod g+x test
同樣的,我們減去一個權限:chmod g-x test
用戶和其他也是一樣的。
除了這種方式外,我們還可以用數字來代表權限,其中,r=4,w=2,x=1
假設我們現在有這樣一組權限
U G O
rwx r-x ---
那麼我們可以這樣表示
U G O
7 5 0
很簡單吧,就是將這些代表的數字相加就ok了。
例:chmod 750 test,就ok了
6、
除了這3X3的權限之外,Linux還有3個特殊權限,名字叫做SUID,SGID,STICKY。
SUID:以文件所屬者的身份運行,而不是當前操作的用戶。
這個權限存在的意義是:假如我們現在有一個可執行的文件,裏邊有一條命令,要訪問根目錄的“test”文件夾,假設這個文件夾裏邊有很重要的東西,只能root用戶訪問,其他人都不能看,我們還想使用這個可執行文件,怎麼辦?如果我們以當前用戶去執行這個文件,那肯定會出錯的,最好的辦法就是,我使用這個文件,以這個文件的所屬用戶的身份去執行,但我們並沒有切換用戶,我還是我,但是執行文件卻認爲我是root,這樣一來,我就有權限訪問test文件夾了。就可以解決這個問題了。
SGID:在該目錄下所新建的所有文件和目錄都屬於這個組。
STICKY:用戶只能刪除屬於自己的文件。
假如我們有一個文件夾test,裏邊是公司的一些文件,同一個用戶組的人對這個文件夾都有讀寫的權利,假如員工A創建了一個文件,員工B與員工A有矛盾,B看見A的文件就刪,阻止A正常工作,這樣可是很不好的。那麼設置STICKY權限,就可以阻止這種事情的發生,假如文件的創建者不是B,那麼B就不能對這個文件進行操作了。
其中,SUID=4,SGID=2,STICKY=1
那麼我們設置的時候就可以變成4位了,順序是:特殊位,U,G,O
所以命令可以這樣寫:chmod 1750 test