前言
權限是什么?
本質:無非就是能做和不能做什么。
為什么要有權限呢?
目的:為了控制用戶行為,防止發生錯誤。
1.權限的理解
在學習下面知識之前要先知道的一點是:linux下一切皆文件,對linux操作就是對文件進行操作。
權限=角色+目標權限屬性
角色:誰在操作(用戶身份)
目標權限屬性:操作對象(文件/目錄)本身被設置了什么樣的訪問規則。
在linux中角色分為三種:
擁有者:誰創建的這個文件,也就是這個文件/目錄的所有者。
所屬組:類似于除擁有者之外還有一個小組的人共享這個文件。
other:除擁有者與所屬組之外的用戶。
當用戶嘗試訪問一個文件/目錄時,系統會首先判斷該用戶屬于哪個“角色”:
是文件的擁有者嗎? → 適用 u 權限
不是擁有者,但在文件的所屬組里?→ 適用 g?權限
既不是所有者,也不在所屬組里?→ 適用?
o
?權限
注意:在centos下,系統只會進行一次角色判定,順序是:擁有者,所屬組,other。
目標權限屬性:
在對文件進行操作時最常用無非就是讀寫操作,但是有些是可執行程序,還有個運行操作對應下面三種操作
r(read):讀內容(對于普通文件)/列目錄(對應目錄文件使用ls等列出該目錄下的內容(文件))
w(write):修改內容(普通文件)/在目錄增刪文件。
x(execute):運行程序(普通文件)/進入目錄(目錄文件)。
?- 代表沒有該權限
對應下面code.c文件的權限信息為:
擁有者:有讀文件和寫文件的權限,沒有運行該文件的權限
所屬組:只有讀文件的權限
other:只有讀文件的權限
2.如何使用命令修改權限
2.1 chmod
作用:修改角色對文件的訪問權限。
-:關閉權限
+:打開權限
chmod u-r code.c # 對擁有者讀該文件的權限關閉
格式:chmod + 【角色】+ 【+/-】+ 【訪問權限】+ 對應文件名
了解了上面知識之后來理解下面幾個知識點。
1.我們能改任何人的權限嗎?
用戶只能修改自己的文件權限。
?
2.如果我們要對沒有對應文件的權限的文件進行操作會怎么樣?
系統會拒絕讓我們訪問。
?
3.root用戶可以無視權限對任何文件進行操作。
?
4.所有普通文件都有x權限,是不是所以文件都可以運行?
不是的,可執行權限!=文件可以執行
只有可運行的文件才能執行,比如被gcc/g++編譯過的.c/.cpp文件。
2.2 chown
作用:修改文件的擁有者。
在默認情況下我們是不能將文件交給別人,想給別人,除非是root(超級用戶)/高權限,上圖展示是在是root用戶下的操作。
格式: chown + 目標角色(用戶)+ 文件名?
3.理解linux多用戶下如何進行“隔離”
因為用戶之間除自身可以進入自己的目錄,其他角色都不能進入(除root)。
問題:
如果root在cqy目錄內創建了一個文件,并將文件的other的權限全部關閉,對應cqy用戶能對該文件進行刪除嗎?
?
可以的,一個文件能否被刪除與文件本身沒有關系,與文件所處目錄的 w 權限有關。因為是在cqy目錄下創建的文件,而我們對該文件擁有的權限全都有。
4.粘滯位
問題:
如果需要兩個用戶之間要進行文件級別的協作該怎么辦?
1)不能將文件放入個人賬戶,因為不同用戶之間是不能進入對方的工作目錄的。
2)放入共享類文件,并且在該目錄下創建的文件其他用戶沒有權限進行刪除。
在根目錄下有一個?tem?目錄,可以看到該目錄的下對 other 的權限是 rwt 這個 t 就是粘滯位,添加了粘滯位的目錄,任何人都可以在共享目錄下創建文件,在該目錄下創建的文件除本人外其他用戶不能進行刪除。
注意:
1)共享文件只能創建在根目錄下,根目錄下的文件只有root可以進行訪問,其他用戶無法訪問。
2)只能給需要共享的文件添加粘滯位。
?