linux使用者及組相關檔案介紹

軟泥發表於2020-11-03

使用者和組檔案介紹

 

 

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 檔案中附加組顯示內容相同。

 

相關文章