Linux真小白入門教程第十二集——使用者檔案及使用者組
Linux沿用了Unix檔案許可權的方法,允許使用者和組根據每個檔案和目錄的安全性設定來訪問檔案。Linux安全系統的核心是使用者賬戶,每個進入Linux的使用者都會被分配唯一的使用者賬戶,使用者對系統中各種物件的訪問許可權取決於他們登入時所用的賬戶。
使用者許可權是通過建立使用者時分配的使用者ID(UID)來跟蹤的,UID是一個數值,每個使用者都有一個唯一的UID,而登陸的時候用的是登入名,同時關聯一個密碼。
Linux使用特定的檔案和工具來跟蹤和管理系統上的使用者賬戶。
/etc/passwd檔案
Linux系統使用一個專門的檔案來將使用者的登入名匹配到對應的UID值
root使用者賬戶是Linxu系統的管理員,固定分配給他的UID是0,而Linux會為各種各樣的功能建立不同的使用者,而這些使用者並不是真正的使用者,叫做系統賬戶,只是為了系統上執行的各種服務程序能夠訪問到特定資源的特殊賬戶,所有執行在後臺的服務都需要用一個系統使用者賬戶登入到Linux系統上。
在安全問題不那麼明顯之前,這些服務經常會用root賬戶登入,一旦有人攻陷這些服務中的一個,它就立刻能作為root使用者登入系統。現在為了防止這種情況,基本上執行在Linux後臺的服務都是用自己的賬戶登入了,這樣即使有人攻陷某個服務,也不會以root賬戶登入,無法控制整個系統。
Linux系統為系統賬戶預留了500以下的UID值,有些服務甚至需要特定的UID值,建立普通的使用者賬戶時,通常從500開始。
/etc/passwd 檔案(本身是一個文字檔案)中包含以下欄位:
登入使用者名稱
使用者密碼
使用者賬戶的UID
使用者賬戶的組ID(GID)
使用者賬戶的文字描述
使用者HOME目錄的位置
使用者的預設shell
而現在,絕大多數的Linux系統都將使用者密碼儲存在另一個單獨的檔案中(shadow檔案),只有特定的程式才能訪問它(比如登入程式)。
/etc/shadow 檔案
為Linux系統密碼管理提供了更多的控制,只有root使用者才能訪問這個檔案,比/etc/passwd檔案安全
這個檔案儲存的內容相當豐富,可以更好地控制密碼,多久改一次,什麼時候禁用使用者都是一個欄位。
新增新使用者
useradd命令可以向Linux系統新增新使用者,它可以一次性建立新使用者賬戶及設定使用者HOME目錄結構。useradd命令使用系統預設值以及命令列引數來設定使用者賬戶,預設在/etc/default/useradd檔案下
-D引數可以檢視所有的預設值
上述沒有直接使用useradd是因為/user/sbin目錄並未包含在PATH環境變數中,所以其下面的useradd 就不能直接使用,只能使用絕對檔案路徑名來使用這些工具。(或者加到PATH也就能直接使用useradd了)
(必須在root使用者賬戶下執行這些命令)
建立新使用者可以指定一些命令列引數更改系統預設值
useradd命令會將tech shell作為新使用者的預設登入shell(-s 更改預設的登入shell)
刪除使用者
userdel命令可以從系統中刪除使用者,預設情況下,userdel只會刪除/etc/passwd檔案中的使用者資訊,而不會刪除系統中屬於該賬戶的任何檔案。
-r引數則會刪除使用者的HOME目錄以及郵件目錄
使用ls命令時,即可看出之前的目錄已經不存在了(所以使用-r引數要特別小心,是否有重要檔案存在要刪除的資料夾)
修改使用者
Linux系統中有很多的命令可以修改使用者資訊
usermod 命令是最強大的一個,他能用來修改/etc/passwd檔案中的大部分欄位,只需要加上對應的命令列引數即可。(-c修改備註欄位,-e修改過期日期,-g修改預設的登入組)
passwd 命令修改使用者密碼(登入使用者有權更改自己的密碼,但是隻有root使用者才能修改其他賬戶的密碼)
chpasswd可以為大量使用者修改密碼(很少使用)
chsh/chfn/chage 專門用來修改特定的賬戶資訊。
chsh命令快速修改使用者預設登入shell、使用時必須帶上shell的全路徑名作為引數
chsh -s /bin/csh test
為test使用者更改預設shell
chfn 命令提供了修改/etc/passwd檔案中備註欄位儲存資訊的標準方法(修改使用者資訊)
finger命令可以用來檢視這些資訊。
chage命令用來幫助管理使用者賬戶的有效期,兩種模式,一種是具體年月日,一種是從1970年1月1日到該日期的天數
Linux組
使用者賬戶在控制單個使用者安全性方面很好使用,但涉及到在共享資源的自足使用者是就不太方便了。
組許可權允許多個使用者對系統中的物件(檔案、目錄、裝置)共享一組共用的許可權。(各種發行版會有不同的劃分,有的是一個使用者一個組,有的是所有使用者一個組)
每個組都有GID,在系統上的唯一數值,還有其組名。
/etc/group檔案
組資訊也儲存在系統的一個檔案下,它包含了系統上用到的每一個組的資訊:
與使用者ID相似,GID也採取相似的分配手段:500以下為系統預留的組ID,使用者組的GID一般從500開始,一般有四個欄位:組名、密碼、GID、屬於改組的使用者列表
不能直接修改檔案中的內容來新增一個使用者到某個組,只能通過usermod命令來修改使用者所屬組。
(注:當一個使用者在/etc/passwd檔案中指定一個組作為其預設組時,該使用者賬戶不會作為該組成員出現在/etc/group檔案中)
建立新組
groupadd命令可以在系統上建立新組
建立新組時,預設沒有使用者被分配到該組
usermod可以向組內新增使用者(-g 和-G 有區別,前者會從之前的預設組中剔除,而後者不影響其預設組)
(更改使用者歸屬的使用者組之後,只有退出系統後才能生效)
修改組
groupmod命令可以修改已有組的GID(-g 選項引數)和組名(-n選項引數)