我們常常在處理身份認證的時候,都是認身份證,對上面的身份證字號,而 Linux 也一樣,在識別使用者的時候,他先看的不是使用者帳號,而是看一串數字組成的 ID,而 ID 會在 /etc/passwd 裏面對應到帳號,但與現實世界不同的是 Linux 使用者會取得 User ID 還有 Group ID。
/etc/passwd 這個檔案所有程序都能讀取,而且裏面每一行都代表一個帳號,遵照以下格式:
帳號名稱:密碼:UID:GID:使用者資訊說明欄:家目錄:Shell
爲了防止竊取,因此把密碼資料改放到 /etc/shadow,並改成 x
id range | 使用者特性 |
---|---|
0(系統管理員) | Text |
1~999(系統帳號) | 不可登入 |
1000~60000(可登入帳號) | for 一般使用者,UID 最大值= 2^32 -1 |
預設的家目錄在 /home/使用者帳號,只要修改這個欄位,你就可以自定你的家目錄。
格式:
帳號名稱:密碼:上次更動密碼的日期:密碼不能更改的天數(相對第三欄):密碼需要重新變更的天數(相對第三欄):密碼需要變更期限前的警告天數:密碼過期後的帳號寬限時間:帳號失效日期:保留
日期會發現是一個數字像是 17000,這數字是從 1970 年 1 月 1 日 作爲第一天累加的數值。
經過使用 SHA 演算法進行加密,如果改變這個欄位的長度,密碼將暫時失效。
格式:
群組名稱:群組密碼:GID:此群組支援的帳號名稱
這個密碼 for 群組管理員,通常不太會用到
這個密碼不是使用者的密碼噢
這個密碼不是使用者的密碼噢
這個密碼不是使用者的密碼噢
在這個檔案中會顯示 x ,實際的密碼會存在 /etc/gshadow 裏面。
由這個欄位的 GID 對應到 /etc/passwd 的第四個欄位的 GID
某個帳號想要加速群組的時候,填入這個欄位。
sudo:x:27:aming
假設 aming 想要擁有 sudo 權限,先找到群組名稱 sudo,在最後一個欄位(最後一個冒號後面不要加空格,多個使用者以逗號分隔)加上使用者帳號 aming 就可以了。
下面這張圖以 root 使用者還有 root 群組爲範例,我們可以看到密碼以及 GID 在檔案之間的對應。