Linux學習記錄:用戶與/etc/passwd與/etc/shadow
- 這部分內容也是在實習中接觸到的,其中關于各個偽用戶關聯的內容,我都一一進行了查詢,于是記錄一下相關內容,方便日后查看,
目錄
- 一、/etc/passwd
- 二、/etc/shadow
- 三、如何禁用一個用戶?
- 1. 修改/etc/passwd
- 2. 修改/etc/shadow
- 3. 使用usermod命令
一、/etc/passwd
??這個檔案中儲存了系統中的各個用戶,它記錄了用戶的一些基本屬性,如下圖,其中每一行都是一個用戶,

??可以很明顯的看出來每一行的開頭都是一個用戶名,而各個欄位直接之間是由:來進行分隔的,其中欄位格式與含義如下:
注冊名:口令:用戶標識號:組標識號:用戶名:用戶主目錄:命令解釋器
-
注冊名
??用于區分不同的用戶,在同一系統中注冊名是惟一的,且用戶名是區分大小寫的, -
口令
??通俗來講就是密碼,用來驗證用戶的合法性,但是目前來看,現在的口令不再直接保存在passwd檔案中,通常將passwd檔案中的口令欄位使用一個x來代替,而真正的口令儲存在/etc/shadow中,所以可以看到上圖中,第二個欄位的內容均為x, -
用戶標識號
??英文縮寫叫做UID,它是一個數值,是Linux系統中惟一的用戶標識,用于區別不同的用戶,在系統內部管理行程和檔案保護時使用 UID欄位,在Linux系統中,注冊名和UID都可以用于標識用戶,只不過對于系統來說UID更為重要,而對于用戶來說注冊名使用起來更方便,在某些特定目的下,系統中可以存在多個擁有不同注冊名、但UID相同的用戶,事實上,這些使用不同注冊名的用戶實際上是同一個用戶,
??在find命令中可以使用-uid來對用戶標識號進行檢索,例如-uid +0即為檢索所有UID大于0的內容,
??在linux系統中(linux7及以上),UID為0的即為管理員用戶,UID在1~999的為系統用戶,UID在1000及往上的為普通用戶,所以一個很簡單的給普通用戶管理員權限的方法就是把他的UID改為0, -
組標識號
??英文縮寫叫做GID,是用戶的作業組標識,而每個用戶可以同時屬于多個組,在/etc/passwd檔案中指定一個用戶歸屬的基本組,而在/etc/group檔案中指明一個組所包含的用戶, -
描述性資訊
??這個欄位包含用戶的一些資訊,可以算作一個小備注,就我的體驗來看沒有什么, -
用戶主目錄
??這個欄位標明了各個用戶的個人主目錄,在shell中可以通過cd ~來進入自己的個人主目錄,
??就一般的規則來看,root用戶的個人主目錄為/root,而普通用戶的個人主目錄為/home下的同用戶名目錄, -
命令解釋器
??這個欄位的內容是指定用戶的shell程式,可以看到上圖中root的shell為/bin/bash,通過命令cat /etc/shells可以查看本系統下支持的shell,
二、/etc/shadow
??這個檔案中儲存了系統中的各個用戶的密碼資訊,被稱為"影子檔案",

??可以很明顯的看出來每一行的開頭都是一個用戶名,而各個欄位直接之間也是由:來進行分隔的,其中欄位格式與含義如下:
用戶名 : 加密密碼 : 最后一次修改時間 : 最小修改時間間隔 : 密碼有效期 : \
密碼需要變更前的警告天數 : 密碼過期后的寬限時間 : 賬號失效時間 : 保留欄位
-
用戶名
??和上文中passwd檔案中的用戶名含義一樣,也是用于區分不同的賬戶, -
加密密碼
??這里保存的是真正加密的密碼,目前 Linux 的密碼采用的是 SHA512 散列加密演算法,原來采用的是 MD5 或 DES 加密演算法,SHA512 散列加密演算法的加密等級更高,也更加安全,
??而且這部分加密后的密碼是不能更改的,更改后會無法登錄,當使用usermod -L命令禁用賬戶時,也是在這部分最前面加上了!來達到使賬戶無法登錄的目的,
??所有偽用戶的密碼都是 “!!” 或 “*”,代表沒有密碼是不能登錄的,當然,新創建的用戶如果不設定密碼,那么它的密碼項也是 “!!”,代表這個用戶沒有密碼,不能登錄, -
最后一次修改時間
??此欄位表示最后一次修改密碼的時間,在1970 年 1 月 1 日的基準上,加上該欄位顯示的天數,即為最后修改的時間,通過命令date -d "1970-01-01 18818 days"可以獲取具體是哪一天, -
最小修改時間
??最小修改間隔時間,也就是說,該欄位規定了從第 3 欄位(最后一次修改密碼的日期)起,多長時間之內不能修改密碼,如果是 0,則密碼可以隨時修改;如果是 10,則代表密碼修改后 10 天之內不能再次修改密碼, -
密碼有效期
??這個欄位可以指定距離第 3 欄位(最后一次更改密碼)多長時間內需要再次變更密碼,否則該賬戶密碼進行過期階段,
??該欄位的默認值為 99999,也就是 273 年,可認為是永久生效,如果改為 90,則表示密碼被修改 90 天之后必須再次修改,否則該用戶即將過期,管理服務器時,通過這個欄位強制用戶定期修改密碼, -
密碼需要變更前的警告天數
??與第 5 欄位相比較,當賬戶密碼有效期快到時,系統會發出警告資訊給此賬戶,提醒用戶密碼需要變更,
??該欄位的默認值是 7,也就是說,距離密碼有效期的第 7 天開始,每次登錄系統都會向該賬戶發出 “修改密碼” 的警告資訊, -
密碼過期后的寬限時間
??也稱為“口令失效日”,簡單理解就是,在密碼過期后,用戶如果還是沒有修改密碼,則在此欄位規定的寬限天數內,用戶還是可以登錄系統的;如果過了寬限天數,系統將不再讓此賬戶登陸,也不會提示賬戶過期,是完全禁用,
??比如說,此欄位規定的寬限天數是 10,則代表密碼過期 10 天后失效;如果是 0,則代表密碼過期后立即失效;如果是 -1,則代表密碼永遠不會失效, -
賬號失效時間
??同第 3 個欄位一樣,使用自 1970 年 1 月 1 日以來的總天數作為賬戶的失效時間,該欄位表示,賬號在此欄位規定的時間之外,不論你的密碼是否過期,都將無法使用, -
保留欄位
??目前沒有功能,保留,
三、如何禁用一個用戶?
??從結果來看,只要讓這個用戶沒辦法登錄,就可以說是禁用這個用戶了,所以可以通過以下方式來實作禁用,
1. 修改/etc/passwd
??把想要禁用的用戶的解釋器選項配置為/sbin/nologin即可,
2. 修改/etc/shadow
??改動一下第二個密碼欄位即可,可以在該欄位添加一些字符或者更改為*或!或!!即可使得該賬戶無法登錄,
3. 使用usermod命令
??usermod -L user禁用用戶, usermod -U user解禁用戶,經過執行可以發現,其實這個命令的原理其實就是在/etc/shadow中的密碼欄位前添加!,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/295089.html
標籤:其他
