Linux學習之用戶管理
/etc/passwd
Linux系統將用戶信息保存在文件/etc/passwd中
文件中一行代表一個用戶,所以文件有多少行就代表系統有多少用戶。每一行都被用冒號隔開分成7個字段,我們先了解下這些字段所代表的意義
以第一行系統管理員賬戶root來說明
字段1:root------代表用戶名
字段2:X------代表此用戶的登錄密碼,出於安全性考慮,此文件中的密碼都以X展示,用戶真正的密碼被保存在影子文件中,也就是/etc/shadow中
字段3:0------代表此用戶的UID(用戶ID)
字段4:0------代表此用戶的GID(用戶所屬組ID)
字段5:root------用戶的詳細描述
字段6:/root------用戶的家目錄
字段7:/bin/bash------用戶使用的腳本類型
UID為0,即為root,擁有系統的最高權限。1-499則為系統保留賬號,用戶創建的賬號往往在500以後
/etc/shadow
與/etc/passwd相似,/etc/shadow被冒號分割成了9個字段
字段1:用戶賬號,如root。這個字段代表的用戶賬號一定存在於/etc/passwd中
字段2:密碼,此密碼為加密的密碼。以$6$開頭的,如root用戶的密碼,代表使用SHA-512加密的;$1$,代表用MD5加密;$2$,代表用Blowfish加密;$5$,代表用SHA-256加密。我們也會看到圖中有的賬戶密碼是"*"或者"!!",這些特殊的字符往往代表特殊的含義。"*"代表賬號被鎖定,"!!"代表密碼已過期
字段3:最近一次修改密碼的日期。但是我們會註意到,這個字段並不是以我們所熟識的日期格式來顯示,而是以諸如17110這樣的數字來顯示。原因是Linux將1970年1月1日作為1,17110即為1970年1月1日到上次修改密碼之間的天數
字段4:密碼不可被更改的天數。如果是0,表示隨時可以修改,如上圖,root賬戶可以隨時修改自己的密碼;而如果是8或20這樣大於0的數,表示此賬戶在8天或20天內不可修改密碼
字段5:密碼需要修改的期限。如果是99999,如root,表示可以用戶不用改,而如果是其他數字,如12345,則表示在距離1970年1月1日的12345天內必須修改密碼,否則密碼失效
字段6:密碼變更期限前的警告期限。如果第5個字段設置了密碼必須在某一天被修改,那麽系統將會在此字段設置的天數前向用戶發出修改密碼的警告,如此字段設置為6,則會在密碼需要修改權限的前6天向用戶發出警告
字段7:密碼的失效日期,這個日期跟字段3一樣,以距1970年1月1日的天數來定。假設設置為M天,這賬號過期的M天內密碼是可以修改的,修改之後賬戶可以繼續使用
字段8:賬號的失效日期,同字段3,如果被被設置為N天,則在N天後,賬號無法使用
字段9:系統保留字段,暫無實際意義
用戶賬號操作
在了解了賬號的一些信息之後,我們會有創建用戶、修改用戶、刪除用戶的需求
創建或新增一個用戶賬號,我們可以用useradd命令來完成
如我們新增一個test用戶後,再查看/etc/passwd系統已經生成了此用戶的相關信息,系統會為用戶創建一個GID與UID相同的組,以及默認的家目錄及shell類型
我們也可以使用useradd的其他參數來幫助我們創建符合要求的賬戶
如:useradd -p 123456 testUser 在創建用戶testUser時,給其指定一個密碼
查看/etc/passwd,系統已經生成了相關信息。既然我們給用戶指定了密碼,那麽我來查看一下密碼文件
我們可以看到在第二個字段,已經保存了在創建時給定的密碼。
在解釋/etc/shadow文件時,我們了解到此文件保存的密碼都是密文,而testUser用戶的密碼為何卻是明文呢?我們來看一下useradd -p參數的使用方法
原來,useradd -p之後的密碼應該是經過加密後的密碼(encrypted password),因為創建testUser時的密碼沒有加密,所以/etc/shadow中才會明文顯示
useradd -u 1666 testUser1 在創建testUser1時,指定其UID
useradd -g 1000 testUser2 在創建testUser2時,指定其GID
值得註意的是,給用戶指定的GID,必須是真實存在系統中的,否則會報:useradd : group ‘1000‘ does not exist
其他還有很多的參數共我們使用,當我們想了解一個命令的詳細用法時,可以使用"man 命令"來查看此命令的詳細用法
在創建完用戶後,我們可能會需要修改用戶的相關信息,此時usermod可以幫助你來完成這項工作
如修改testUser1的GID和UID
testUser1的原始UID和GID都是1666,現在我們用usermod來修改
經過修改之後,/etc/passwd中testUser1的GID和UID便改變了,與useradd相同,更改的GID必須是系統裏真實存在的
usermod還有很多其他有用的參數
我們在日常的使用中會逐漸熟悉它們
修改用戶的密碼 如 : passwd testUser1 修改testUser1的密碼
系統會讓輸入新密碼及確認密碼,當密碼過短或過於簡單時,系統會給出警告信息
再查看/etc/shadow時,testUser1已被設置了新密碼
刪除用戶 userdel testUser2 刪除testUser2
我們可以看到,testUser2已經被刪除
Linux學習之用戶管理