文章目錄
- 一、Linux下用戶的分類
- 1. Linux下用戶分為兩類:
- 2. 這兩類用戶如何進行切換呢?
- 3. 短暫提權
- 二、何為權限
- 1. 什么是權限
- 2. Linux的文件后綴意義
- 三、修改權限
- 1. 設置文件的訪問權限——chmod
- 2. 修改文件擁有者——chown
- 3. 修改文件所屬組——chgrp
- 4. 一個問題
- 四、兩個面試題
- 1. 問題一:默認權限問題(權限掩碼)
- 2. 問題二:用戶的文件共享問題(粘滯位)
一、Linux下用戶的分類
1. Linux下用戶分為兩類:
- root:超級用戶
基本不受權限的約束 - 普通用戶:我們用root新建(adduser)的用戶
受權限約束
2. 這兩類用戶如何進行切換呢?
在普通用戶下輸入su/su -
:
會讓我們輸入密碼,輸入root密碼就完成切換了
如果要切回到普通用戶,輸入exit/ctrl + d
:
無需輸入密碼。
如果我們要從root切換到指定普通用戶,可以用su [目標用戶名]
完成切換,無需輸入密碼。
普通用戶切換指定普通用戶也亦如此,不同的是需要輸入指定普通用戶的密碼。
注意:Linux中所有的用戶都要有密碼,無論是root還是普通用戶。
建議:root的密碼不要和普通用戶的密碼相同
3. 短暫提權
如果我們想要提權一條指令,可以輸入sudo [指令]
進行提權,第一次需要輸入你的用戶密碼驗證身份。輸入一次后10~20min中內提權無需再輸入密碼驗證。
注意:如果我們用的普通用戶沒有添加到系統信任白名單內(/etc/sudoers),是沒有sudo的權利的,因為系統不信任你。
二、何為權限
1. 什么是權限
一件事情是否允許你做
- 權限認證的是身份(權限與“人(身份/角色)”有關)
權限=具體用戶+身份/角色
- 用戶分為root和普通用戶
- 身份分為:
- 擁有者(u):文件和文件目錄的所有者
- 所屬組(g):文件和文件目錄的所有者所在的組的用戶
存在意義:可以給部分人給予特殊權限 - 其他人(o):其它用戶
- 所有人(a)
- 權限與事物的“屬性”有關
文件的屬性:可讀r、可寫w、可執行x
文件屬性:
為什么沒有指定其他用戶呢?
除了擁有者和所屬者后,剩余的就是其他用戶了,所以沒必要再去指定
開頭的首字符是文件類型:
d:目錄文件
-:普通文件(文本、可執行程序、庫等)
l:軟鏈接(類似Windows的快捷方式)
b:塊設備文件(硬盤文件)
p:管道文件(用來進行通信的)
c:字符設備文件(鍵盤、顯示器文件等)
s:套接口文件
基本權限
i.讀(r):Read對文件而言,具有讀取文件內容的權限;對目錄來說,具有瀏覽該目錄信息的權限
ii.寫(w):Write對文件而言,具有修改文件內容的權限;對目錄來說具有刪除、創建、更改目錄內文件的權限
iii.執行(x):execute對文件而言,具有執行文件的權限;對目錄來說,具有進入目錄的權限
iv.“-”表示不具有該項權限
為了更加便捷,還可以用8進制來表示它們:
注意:
- 位置是什么含義是確定的
- 每一個位置只有是與否,具有指定的權限
2. Linux的文件后綴意義
Linux系統中文件名后綴對文件類型沒有直接意義
也就是說:Linux不以文件后綴區分文件類型
后綴以用戶需求來決定:用戶使用軟件,軟件會要求文件后綴。
eg:gcc不能編譯后綴.txt文件,要求后綴為.c。這和Linux無關,這是軟件需求(用戶需求)。
三、修改權限
1. 設置文件的訪問權限——chmod
chmod [參數] 權限 文件名
常用選項:
- R : 遞歸修改目錄文件的權限
說明:只有文件的擁有者和root才可以改變文件的權限
chmod有兩種設置權限格式:
① 用戶表示符+/-/=
權限字符
- +:向權限范圍增加權限代號所表示的權限
- -:向權限范圍取消權限代號所表示的權限
- =:向權限范圍賦予權限代號所表示的權限
用戶符號: - u:擁有者
- g:擁有者同組用
- o:其它用戶
- a:所有用戶
②三位8進制數字
2. 修改文件擁有者——chown
格式:
chown [參數] 用戶名 文件名
實例:
chown user1 f1
chown -R user1 filegroup1
3. 修改文件所屬組——chgrp
chgrp [參數] 用戶組名 文件名
4. 一個問題
hanhe666這個用戶具有進入這個目錄的權限嗎?
答案是沒有。
因為權限在進行認證的時候,只能選擇一個角色進行認證!
認證順序:
擁有者->所屬組->其他
四、兩個面試題
1. 問題一:默認權限問題(權限掩碼)
為什么我們創建文件的默認權限是這樣的?
為什么普通文件是664?
為什么目錄文件是775?
預備知識:
- 默認給普通文件的起始權限是666
- 默認給目錄文件的起始權限是777
其實這和權限掩碼umask有關
第一位的0忽略
凡是在umask中出現的權限,不會在最終的文件權限中出現
最終權限 = 其實權限 &(~umask)
- ~:按位取反
- &:按位與
所以,如果我們要修改默認權限,修改umask就可以了
2. 問題二:用戶的文件共享問題(粘滯位)
可以看到,普通用戶自己的家目錄是700,我們在自己的家目錄下創建文件,別人是看不到的。
但我們需要多個用戶進行文件數據的共享,怎么辦呢?
- 可以用root在家目錄下創建一個權限為777的共享目錄,完成文件共享。
- 但是存在一個問題:你創建的文件,其他用戶居然可以刪除,這合理嗎??
注意:一個文件是否能被刪除,并不由文件本身決定,而是由這個文件所在的目錄決定! - 如果我們去掉共享目錄的w權限,會導致我們無法創建文件,那么這個共享文件就失去共享功能了。
- 這里我們需要用到粘滯位,可以很好地解決這個問題,實現共享功能。
粘滯位(t):是一種特殊的x權限。給目錄設置,一般是共享目錄,所有用戶可以在該目錄進行各自文件的增刪查改,只允許擁有者和root能刪除這個文件。