用戶身份與能力
Linux是一個多用戶、多任務的操作系統,具有很好的穩定性與安全性,在幕后保障Linux系統安全則是一系列復雜的配置工作。
Linux系統的管理員之所以是root,并不是因為它的名字叫root,而是因為該用戶的身份號碼即UID(User IDentification)的數值為0。在Linux系統中,UID相當于我們的身份證號碼一樣具有唯一性,因此可以通過用戶的UID值來判斷用戶身份。
管理員UID為0:系統的管理員
系統用戶UID為1~999:Linux系統為了避免因某個服務程序出現漏洞而被黑客提權至整臺服務器,默認服務程序會有獨立的系統用戶負責運行,進而有效控制被破壞范圍。
普通用戶UID從1000開始:是由管理員創建的用于日常工作的用戶
需要注意的是UID是不能沖突的,而且管理員創建的普通用戶的UID默認是從1000開始的(即使前面有閑置的號碼)。
為了方便管理同一組用戶,Linux系統中還引入用戶組的概念。通過使用用戶組號碼(GID),我們庫把多個用戶加入到一個組中,從而方便為組中的用戶統一規劃權限或指定任務。
另外,在Linux系統中創建每個用戶時,將自動創一個與其同名的基本用戶組,而且這個基本用戶組只有該用戶一個人。如果該用戶以后被歸納其他用戶組,則這個其他用戶組被稱為擴展用戶組。一個用戶只有一個基本用戶組,但是可以有多個擴展用戶組,從而滿足日常的工作需要。
useradd命令
useradd命令用于創建新的用戶,格式為“useradd【選項】用戶名”
可以使用useradd創建用戶賬戶,使用該命令創建用戶賬戶時,默認的用戶家目錄會被保存在/home目錄中
默認的Shell解釋器為/bin/bash,而且默認會創建一個與該用戶同名的基本用戶組,這些默認設置可以根據表中的useradd命令參數自行修改
參數 | ? |
-d | 指定用戶的家目錄(默認/home/username) |
-e | 賬戶到期時間,格式為YYYY-MM-DD |
-u | 指定該用戶的默認UID |
-g | 指定一個初始的用戶基本組 |
-G | 指定一個或多個擴展用戶組 |
-N | 不創建與用戶同名的基本用戶組 |
-s | 指定該用戶的默認Shell解釋器 |
下面我們創建一個普通用戶并指定家目錄的路徑、用戶的UID以及Shell解釋器,在下面命令中,請注意/sbin/nologin,他是終端解釋器的一員,與Bash解釋器有天壤之別。一旦用戶的解釋器被設置成nologin,則代表該用戶不能登陸到系統中:
groupadd命令
groupadd命令用于創建用戶組,格式為:“groupadd【選項】群組名”
為了能夠更加高效地指派系統中的各個用戶的權限,在工作中常常會把幾個用戶加入到同一個組中,這樣便可以針對一類用戶統一安排權限。創建用戶組的步驟非常簡單,例如使用下面命令創建一個用戶組SanKoucun
?usermod命令
usermod命令用于修改用戶的屬性,格式為“usermod 【選項】用戶名”
參數 | 作用 |
-c | 填寫用戶賬戶的備注信息 |
-d -m | 參數-m與參數-d連用,可重新指定用戶的家目錄并自動把舊的數據轉移過去 |
-e | 賬戶的到期時間,格式為:YYYY-MM-DD |
-g | 變更所屬用戶組 |
-G | 變更擴展用戶組 |
-L | 鎖定用戶禁止其登陸系統 |
-U | 解鎖用戶,運行其登陸系統 |
-s | 變更默認終端 |
-u | 修改用戶的UID |
?
我們先查看ShangQiang的默認信息,然后將他加入到root用戶組中去,再次查看ShangQiang的信息,這樣擴展組列表中則會出現root用戶組的字樣,而基本組不會收到影響
再來試試用-u參數修改ShangQiang的用戶UID號碼。除此之外,我們還可以用-g參數修改用戶的基本組ID,用-G參數修改用戶擴展組ID
?passwd命令
passwd命令用于修改密碼,過期時間,認證信息等,格式為:“passwd【選項】【用戶名】”
普通用戶只能修改自己的密碼,root管理員則有權限修改其他所有人的密碼。更強的是,root修改其他人的密碼不需要驗證舊密碼。
參數 | 作用 |
-l | 鎖定用戶,禁止其登陸 |
-u | 解鎖鎖定,允許用戶登陸 |
--stdin | 允許通過標準輸入修改用戶密碼,如 echo '123456' | passwd --stdin Username |
-d | 使該用戶可用空密碼登陸系統 |
-e | 強制用戶在下次登陸時修改密碼 |
-S | 顯示用戶的密碼是否被鎖定,以及密碼所采用的加密算法全稱 |
接下來,我們嘗試修改root和普通用戶的密碼
?userdel命令
userdel命令用于刪除用戶,格式為“userdel 【選項】用戶名”
參數 | 作用 |
-f | 強制刪除用戶 |
-r | 同時刪除用戶及其用戶目錄 |
嘗試一下
文件權限與歸屬
盡管在Linux系統中一切都是文件,但每個文件的類型不盡相同,因此Linux系統使用了不同的字符加以區分,常見的字符如下所示:
在Linux系統中,每個文件都有所屬的所有者和所有組,并且規定了文件的所有者,所有組以及其他人對文件所擁有的可讀(r)、可寫(w)、可執行(x)等權限。對與一般文件來說,權限比較容易理解:
“可讀”表示能夠讀取文件的實際內容
“可寫”表示能夠編輯,新增,修改,刪除文件的實際內容
“可執行”表示能夠運行一個腳本程序
但是,對應目錄文件來說,理解其權限設置來就不那么容易。
對于目錄文件來說:
”可讀“表示能夠讀取目錄內的文件列表
”可寫“表示能夠在目錄內新增,刪除,重命名文件
”可執行“表示能夠進入該目錄
文件的讀、寫、執行權限可以簡寫成? rwx,也可以分別用數字表示 4,2,1.文件所有者,所屬組及其他用戶權限之間無關聯
?
文件權限的數字法表示基于字符表示(rwx)的權限計算而來,其目的是簡化權限表示。
例如,某個文件的權限為7則代表可讀,可寫,可執行(4+2+1)
若權限為6則代表可讀、可寫,不可執行(4+2)
?文件的特殊權限
在復雜多變的生產環境中,單純設置文件的rwx權限無法滿足我們對安全和靈活性的需求,因此便有了SUID,SGID,SBIT的特殊權限位。這是一種對文件權限進行設置的特殊功能,可以與一般權限同時使用,以彌補一般權限不能實現的功能。
SUID
SUID是一種對二進制程序進行設置的特殊權限。可以讓二進制程序的執行者臨時擁有屬主的權限(僅對擁有執行權限的二進制程序有效)。
例如:
所有用戶都可以執行passwd命令來修改自己的用戶密碼,而用戶密碼保存在/etc/shadow文件中。仔細查看這個文件就會發現它默認權限是000,也就是說除了root管理員外,所有用戶都沒有查看或編輯這個文件的權限。但是,在使用passwd命令時如果加上SUID特殊權限位,就可讓普通用戶臨時獲得程序所有者的身份,把變更的密碼信息寫入到shadow文件中。
我們先簡單介紹一個特殊權限,內容太多不好消化,下篇繼續。