linux用戶及組相關文件介紹
- 2020 年 11 月 3 日
- 筆記
用戶和組文件介紹
1.用戶帳號文件:passwd
passwd命令用於設置用戶的認證資訊,包括用戶密碼、密碼過期時間等。系統管理者則能用它管理系統用戶的密碼。只有管理者可以指定用戶名稱,一般用戶只能變更自己的密碼。
選項
-d:刪除密碼,僅有系統管理者才能使用; -f:強制執行; -k:設置只有在密碼過期失效後,方能更新; -l:鎖住密碼; -s:列出密碼的相關資訊,僅有系統管理者才能使用; -u:解開已上鎖的帳號。
知識擴展
與用戶、組賬戶資訊相關的文件
存放用戶資訊:
/etc/passwd /etc/shadow
存放組資訊:
/etc/group /etc/gshadow
用戶資訊文件分析(每項用:
隔開)
例如:jack:X:503:504:::/home/jack/:/bin/bash
jack //用戶名
X //口令、密碼
503 //用戶id(0代表root、普通新建用戶從500開始)
504 //所在組
: //描述
/home/jack/ //用戶主目錄
/bin/bash //用戶預設Shell
組資訊文件分析
例如:jack:$!$:???:13801:0:99999:7:*:*: jack //組名 $!$ //被加密的口令 13801 //創建日期與今天相隔的天數 0 //口令最短位數 99999 //用戶口令 7 //到7天時提醒 * //禁用天數 * //過期天數
實例
如果是普通用戶執行passwd只能修改自己的密碼。如果新建用戶後,要為新用戶創建密碼,則用passwd用戶名,注意要以root用戶的許可權來創建。
[root@localhost ~]# passwd linuxde //更改或創建linuxde用戶的密碼; Changing password for user linuxde. New UNIX password: //請輸入新密碼; Retype new UNIX password: //再輸入一次; passwd: all authentication tokens updated successfully. //成功;
普通用戶如果想更改自己的密碼,直接運行passwd即可,比如當前操作的用戶是linuxde。
[linuxde@localhost ~]$ passwd Changing password for user linuxde. //更改linuxde用戶的密碼; (current) UNIX password: //請輸入當前密碼; New UNIX password: //請輸入新密碼; Retype new UNIX password: //確認新密碼; passwd: all authentication tokens updated successfully. //更改成功;
比如我們讓某個用戶不能修改密碼,可以用-l
選項來鎖定:
[root@localhost ~]# passwd -l linuxde //鎖定用戶linuxde不能更改密碼;
Locking password for user linuxde.
passwd: Success //鎖定成功;
[linuxde@localhost ~]# su linuxde //通過su切換到linuxde用戶;
[linuxde@localhost ~]$ passwd //linuxde來更改密碼;
Changing password for user linuxde.
Changing password for linuxde
(current) UNIX password: //輸入linuxde的當前密碼;
passwd: Authentication token manipulation error //失敗,不能更改密碼;
再來一例:
[root@localhost ~]# passwd -d linuxde //清除linuxde用戶密碼; Removing password for user linuxde. passwd: Success //清除成功; [root@localhost ~]# passwd -S linuxde //查詢linuxde用戶密碼狀態; Empty password. //空密碼,也就是沒有密碼;
注意:當我們清除一個用戶的密碼時,登錄時就無需密碼,這一點要加以注意。
/etc/passwd每一個分段的含義:
1、賬戶名稱:
用來對應UID
2、密碼:
早起Unix系統的密碼就是防止這個欄位上,但是英文這個檔案的特性是所有程式都能讀取,容易造成密碼數據被竊取
應此後來就將這個欄位的密碼數據放到了/etc/shadow中了,所以這裡使用【X】,
3、UID:
這就是使用者標示符,UId有以下限制:
ID 該ID使用的者特性
0 UID是0時,代表這個帳號是【系統管理員】!所以當你的其他啊帳號名稱也具有root
的許可權是,就將該帳號的UID改為0即可,一個系統上面的系統管理不見得只有root,
不過不建議有多個UID為0的帳號。
1~499 保留給系統使用的ID,默認500以下的數字給系統作為保利帳號只是一個習慣。
由於系統上面啟動的服務希望使用較小的許可權去運行,應此不希望使用root的身份去執行
這些服務,所以我們就得要提供這些運行中的程式的擁有者帳號才行,這些系統帳號通常是不可登陸的,
所以才會有/sbin/nologin這個特殊的shell的存在。
500~ 一般使用者
4、GID:
這個與/etc/group有關!其實/etc/group的觀念與/etc/passwd差不多,應用來規範組名
5、用戶資訊說明欄:
6、家目錄:
root的家目錄在/root,所以當root登陸的之後,就會立刻跑到/root目錄裡頭,如果壞、這個帳號需要使用
特別大的空間,就可以對這個欄位進行修改,已移動到其他同硬碟。默認的用戶家目錄在/home/youIdname
/etc/shadow文件結構:
8、Shell:
定義用戶登陸系統使用什麼shell,這裡需要注意,有一個shell可以用來特帶成讓賬戶無法取得shell環境的登陸動作!
那就是/sbin/nologin這個特殊東西,也可以用來製作pop郵件帳號者的數據。(Post Office Protocol)
通過查看「/etc/passwd」文件,可以得到如下完整的系統帳號文件
2.用戶影子文件——shadow
/etc/shadow
由於shadow文件的許可權,所以,只有root可以讀
vi /etc/shadow
一共有九列資訊:
第一列表示用戶名;
第二列表示經過加密之後的密碼,如果密碼是!!或者*,表示沒有密碼,不能登錄;
第三列表示密碼的最後一次修改日期,使用1970.1.1作為標準時間,每過一天時間戳+1;
第四列表示兩次密碼的修改間隔;
第五列表示密碼的有效期;
第六列表示密碼到期之前的警告時間;
第七列表示密碼過期之後的寬限天數(0表示到期後立即失效,-1則永久不失效);
第八列表示帳號失效時間,要用時間戳表示,時間戳換算為日期:date -d “1970-01-01 18382 days”,日期換算為時間戳:echo $(($(date –date=”2020/05/13” +%s)/86400+1));
第九列保留
3.用戶組帳號文件——group和gshadow
group:
/ect/group 文件是用戶組配置文件,即用戶組的所有資訊都存放在此文件中。
此文件是記錄組 ID(GID)和組名相對應的文件。前面講過,etc/passwd 文件中每行用戶資訊的第四個欄位記錄的是用戶的初始組 ID,那麼,此 GID 的組名到底是什麼呢?就要從 /etc/group 文件中查找。
/etc/group 文件的內容可以通過 Vim 看到:
可以看到,此文件中每一行各代表一個用戶組。在前面章節中,我們曾創建 lamp 用戶,系統默認生成一個 lamp 用戶組,在此可以看到,此用戶組的 GID 為 502,目前它僅作為 lamp 用戶的初始組。
各用戶組中,還是以 “:” 作為欄位之間的分隔符,分為 4 個欄位,每個欄位對應的含義為:
組名:密碼:GID:該用戶組中的用戶列表
接下來,分別介紹各個欄位具體的含義。
組名
也就是是用戶組的名稱,有字母或數字構成。同 /etc/passwd 中的用戶名一樣,組名也不能重複。
組密碼
和 /etc/passwd 文件一樣,這裡的 “x” 僅僅是密碼標識,真正加密後的組密碼默認保存在 /etc/gshadow 文件中。
不過,用戶設置密碼是為了驗證用戶的身份,那用戶組設置密碼是用來做什麼的呢?用戶組密碼主要是用來指定組管理員的,由於系統中的帳號可能會非常多,root 用戶可能沒有時間進行用戶的組調整,這時可以給用戶組指定組管理員,如果有用戶需要加入或退出某用戶組,可以由該組的組管理員替代 root 進行管理。但是這項功能目前很少使用,我們也很少設置組密碼。如果需要賦予某用戶調整某個用戶組的許可權,則可以使用 sudo 命令代替。
組ID (GID)
就是群組的 ID 號,Linux 系統就是通過 GID 來區分用戶組的,同用戶名一樣,組名也只是為了便於管理員記憶。
這裡的組 GID 與 /etc/passwd 文件中第 4 個欄位的 GID 相對應,實際上,/etc/passwd 文件中使用 GID 對應的群組名,就是通過此文件對應得到的。
組中的用戶
此欄位列出每個群組包含的所有用戶。需要注意的是,如果該用戶組是這個用戶的初始組,則該用戶不會寫入這個欄位,可以這麼理解,該欄位顯示的用戶都是這個用戶組的附加用戶。
舉個例子,lamp 組的組資訊為 “lamp:x:502:”,可以看到,第四個欄位沒有寫入 lamp 用戶,因為 lamp 組是 lamp 用戶的初始組。如果要查詢這些用戶的初始組,則需要先到 /etc/passwd 文件中查看 GID(第四個欄位),然後到 /etc/group 文件中比對組名。
每個用戶都可以加入多個附加組,但是只能屬於一個初始組。所以我們在實際工作中,如果需要把用戶加入其他組,則需要以附加組的形式添加。例如,我們想讓 lamp 也加入 root 這個群組,那麼只需要在第一行的最後一個欄位加入 lamp,即 root:x:0:lamp 就可以了。
一般情況下,用戶的初始組就是在建立用戶的同時建立的和用戶名相同的組。
到此,我們已經學習了/etc/passwd、/etc/shadow、/etc/group,它們之間的關係可以這樣理解,即先在 /etc/group 文件中查詢用戶組的 GID 和組名;然後在 /etc/passwd 文件中查找該 GID 是哪個用戶的初始組,同時提取這個用戶的用戶名和 UID;最後通過 UID 到 /etc/shadow 文件中提取和這個用戶相匹配的密碼。
gshadow:
前面講過,/etc/passwd 文件存儲用戶基本資訊,同時考慮到賬戶的安全性,將用戶的密碼資訊存放另一個文件 /etc/shadow 中。本節要將的 /etc/gshadow 文件也是如此,組用戶資訊存儲在 /etc/group 文件中,而將組用戶的密碼資訊存儲在 /etc/gshadow 文件中。
首先,我們藉助 Vim 命令查看一下此文件中的內容
文件中,每行代表一個組用戶的密碼資訊,各行資訊用 “:” 作為分隔符分為 4 個欄位,每個欄位的含義如下:
組名:加密密碼:組管理員:組附加用戶列表
組名
同 /etc/group 文件中的組名相對應。
組密碼
對於大多數用戶來說,通常不設置組密碼,因此該欄位常為空,但有時為 “!”,指的是該群組沒有組密碼,也不設有群組管理員。
組管理員
從系統管理員的角度來說,該文件最大的功能就是創建群組管理員。那麼,什麼是群組管理員呢?
考慮到 Linux 系統中帳號太多,而超級管理員 root 可能比較忙碌,因此當有用戶想要加入某群組時,root 或許不能及時作出回應。這種情況下,如果有群組管理員,那麼他就能將用戶加入自己管理的群組中,也就免去麻煩 root 了。
不過,由於目前有 sudo 之類的工具,因此群組管理員的這個功能已經很少使用了。
組中的附加用戶
該欄位顯示這個用戶組中有哪些附加用戶,和 /etc/group 文件中附加組顯示內容相同。