1. 程式人生 > 實用技巧 >AtC joi2017ho_c - Kingdom of JOIOI 題解

AtC joi2017ho_c - Kingdom of JOIOI 題解

Linux使用者與使用者組管理相關命令與使用者相關的配置檔案:

/etc/passwd: 使用者的配置檔案,儲存使用者賬戶的基本資訊;

/etc/shadow : 使用者影子口令檔案;

/etc/group和/etc/gshadow : 使用者組賬號檔案.

一,passwd使用者賬號檔案

1.“/etc/passwd”檔案是UNIX安全的關鍵檔案之一。該檔案用於使用者登入時效驗使用者的登入名、加密的口令資料項、使用者ID(UID)、預設的使用者組ID(GID)、使用者資訊、使用者主目錄及登入後使用的shell。

2.“/etc/passwd”檔案的每一行儲存一個使用者的資料,而使用者資料按域以冒號“ :”分隔。

/etc/passwd檔案中域的含義

passwd命令用於設定使用者的認證資訊,包括使用者密碼、密碼過期時間等。系統管理者則能用它管理系統使用者的密碼。只有管理者可以指定使用者名稱稱,一般使用者只能變更自己的密碼。

-d:刪除密碼,僅有系統管理者才能使用;

-f:強制執行;

-k:設定只有在密碼過期失效後,方能更新;

-l:鎖住密碼;

-s:列出密碼的相關資訊,僅有系統管理者才能使用;

-u:解開已上鎖的帳號。

二,shadow使用者影子檔案

與Linux /etc/passwd檔案不同,Linux /etc/shadow檔案是隻有系統管理員才有權利進行檢視和修改的檔案,系統管理員應該弄明白Linux /etc/shadow檔案中每個字元段的相應的意義,清楚管理時的具體意義。

Linux /etc/shadow檔案中的記錄行與/etc/passwd中的一一對應,它由pwconv命令根據/etc/passwd中的資料自動產生。它的檔案格式與/etc/passwd類似,由若干個欄位組成,欄位之間用“:”隔開。這些欄位是:
登入名:加密口令:最後一次修改時間:最小時間間隔:最大時間間隔:警告時間:不活動時間:失效時間:標誌。
1)“登入名”是與/etc/passwd檔案中的登入名相一致的使用者賬號
2)“口令”欄位存放的是加密後的使用者口令字,長度為13個字元。如果為空,則對應使用者沒有口令,登入時不需要口令;如果含有不屬於集合{./0-9A-Za-z}中的字元,則對應的使用者不能登入。
3)“最後一次修改時間”表示的是從某個時刻起,到使用者最後一次修改口令時的天數。時間起點對不同的系統可能不一樣。例如在SCOLinux中,這個時間起點是1970年1月1日。
4)“最小時間間隔”指的是兩次修改口令之間所需的最小天數。
5)“最大時間間隔”指的是口令保持有效的最大天數。
6)“警告時間”欄位表示的是從系統開始警告使用者到使用者密碼正式失效之間的天數。
7)“不活動時間”表示的是使用者沒有登入活動但賬號仍能保持有效的最大天數。
8)“失效時間”欄位給出的是一個絕對的天數,如果使用了這個欄位,那麼就給出相應賬號的生存期。期滿後,該賬號就不再是一個合法的賬號,也就不能再用來登入了。

/etc/shadow檔案中域的含義

含義
username 使用者登入名
password 加密的使用者口令
lastchg 表示從1970年1月1日起到上次修改口令所經過的天數
min 表示兩次修改口令之間至少經過的天數
max   表示口令還會有效的最大天數,如果是99999則表示永不過期
warn   表示口令失效前多少天內系統向用戶發出警告
inactive 表示禁止使用者登入前使用者名稱還有效的天數
expire 表示使用者禁止登入的時間
flag 保留域,暫未使用

shadow 是 passwd 的影子檔案。
在linux中,口令檔案在/etc/passwd中,早期的這個檔案直接存放加密後的密碼,前兩位是"鹽"值,是一個隨機數,後面跟的是加密的密碼。為了安全,現在的linux都提供了 /etc/shadow這個影子檔案,密碼放在這個檔案裡面,並且是隻有root可讀的。
/etc/passwd檔案的每個條目有7個域,分別是名字:密碼:使用者id:組id:使用者資訊:主目錄:shell 
例如:ynguo:x:509:510::/home/ynguo:/bin/bash 
在利用了shadow檔案的情況下,密碼用一個x表示,普通使用者看不到任何密碼資訊。影子口令檔案儲存加密的口令;/etc/passwd檔案中的密碼全部變成x。Shadow只能是root可讀,從而保證了安全。
/etc/shadow檔案每一行的格式如下:使用者名稱:加密口令:上一次修改的時間(從1970年1月1日起的天數):口令在兩次修改間的最小天數:口令修改之前向用戶發出警告的天數:口令終止後賬號被禁用的天數:從1970年1月1日起賬號被禁用的天數:保留域。

三,group和gshadow使用者組賬號檔案

1,group檔案

/ect/group 檔案是使用者組配置檔案,即使用者組的所有資訊都存放在此檔案中。


/etc/group 檔案的內容可以通過 Vim 看到:

[root@localhost ~]#vim /etc/group
root:x:0:
bin:x:1:bin,daemon
daemon:x:2:bin,daemon
…省略部分輸出…
lamp:x:502:

可以看到,此檔案中每一行各代表一個使用者組。在前面章節中,我們曾建立 lamp 使用者,系統預設生成一個 lamp 使用者組,在此可以看到,此使用者組的 GID 為 502,目前它僅作為 lamp 使用者的初始組。

各使用者組中,還是以 ":" 作為欄位之間的分隔符,分為 4 個欄位,每個欄位對應的含義為:

組名:密碼:GID:該使用者組中的使用者列表。

/etc/group的域及其含義

含義
group-name 使用者組名
group-password 加密後的使用者組名
group-id 使用者組ID(GID)
group-members 以逗號分隔的成員使用者清單

2,gshadow檔案

我們藉助 Vim 命令檢視一下此檔案中的內容:

[root@localhost ~]#vim /etc/gshadow
root:::
bin:::bin, daemon
daemon:::bin, daemon
...省略部分輸出...
lamp:!::

檔案中,每行代表一個組使用者的密碼資訊,各行資訊用 ":" 作為分隔符分為 4 個欄位,每個欄位的含義如下:

組名:加密密碼:組管理員:組附加使用者列表

/etc/gshadow的域及其含義

含義
group-name 使用者組名
group-password 加密後的使用者口令
group-members 以逗號分隔的成員使用者清單

四,使用命令方式行方式管理使用者和組

1,使用user add命令新增使用者

useradd命令用於Linux中建立的新的系統使用者。useradd可用來建立使用者帳號。帳號建好之後,再用passwd設定帳號的密碼.而可用userdel刪除帳號。使用useradd指令所建立的帳號,實際上是儲存在/etc/passwd文字檔案中。

選項含義
-u UID 手工指定使用者的 UID,注意 UID 的範圍(不要小於 500)。
-d 主目錄 手工指定使用者的主目錄。主目錄必須寫絕對路徑,而且如果需要手工指定主目錄,則一定要注意許可權;
-c 使用者說明 手工指定/etc/passwd檔案中各使用者資訊中第 5 個欄位的描述性內容,可隨意配置;
-g 組名 手工指定使用者的初始組。一般以和使用者名稱相同的組作為使用者的初始組,在建立使用者時會預設建立初始組。一旦手動指定,則系統將不會在建立此預設的初始組目錄。
-G 組名 指定使用者的附加組。我們把使用者加入其他組,一般都使用附加組;
-s shell 手工指定使用者的登入 Shell,預設是 /bin/bash;
-e 曰期 指定使用者的失效曰期,格式為 "YYYY-MM-DD"。也就是 /etc/shadow 檔案的第八個欄位;
-o 允許建立的使用者的 UID 相同。例如,執行 "useradd -u 0 -o usertest" 命令建立使用者 usertest,它的 UID 和 root 使用者的 UID 相同,都是 0;
-m 建立使用者時強制建立使用者的家目錄。在建立系統使用者時,該選項是預設的;
-r 建立系統使用者,也就是 UID 在 1~499 之間,供系統程式使用的使用者。由於系統使用者主要用於執行系統所需服務的許可權配置,因此係統使用者的建立預設不會建立主目錄。

2,使用usermod命令修改使用者資訊

usermod命令用於修改使用者的基本資訊。usermod命令不允許你改變正在線上的使用者帳號名稱。當usermod命令用來改變userid,必須確認這名user沒在電腦上執行任何程式。你需手動更改使用者的crontab檔。也需手動更改使用者的at工作檔。採用NIS server須在server上更動相關的NIS設定。

usermod命令選項:

  • -c 使用者說明:修改使用者的說明資訊,即修改/etc/passwd 檔案目標使用者資訊的第 5 個欄位;
  • -d 主目錄:修改使用者的主目錄,即修改 /etc/passwd 檔案中目標使用者資訊的第 6 個欄位,需要注意的是,主目錄必須寫絕對路徑;
  • -e 日期:修改使用者的失效曰期,格式為 "YYYY-MM-DD",即修改/etc/shadow 檔案目標使用者密碼資訊的第 8 個欄位;
  • -g 組名:修改使用者的初始組,即修改/etc/passwd 檔案目標使用者資訊的第 4 個欄位(GID);
  • -u UID:修改使用者的UID,即修改 /etc/passwd 檔案目標使用者資訊的第 3 個欄位(UID);
  • -G 組名:修改使用者的附加組,其實就是把使用者加入其他使用者組,即修改 /etc/group 檔案;
  • -l 使用者名稱:修改使用者名稱稱;
  • -L:臨時鎖定使用者(Lock);
  • -U:解鎖使用者(Unlock),和 -L 對應;
  • -s shell:修改使用者的登入 Shell,預設是 /bin/bash。

3,使用userdel命令刪除使用者

userdel命令用於刪除給定的使用者,以及與使用者相關的檔案。若不加選項,則僅刪除使用者帳號,而不刪除相關檔案。

userdel命令選項

-f:強制刪除使用者,即使使用者當前已登入;
-r:刪除使用者的同時,刪除與使用者相關的所有檔案。

4,使用groupadd命令建立使用者組
groupadd命令用於建立一個新的工作組,新工作組的資訊將被新增到系統檔案中。
groupadd命令選項
-g:指定新建工作組的id;
-r:建立系統工作組,系統工作組的組ID小於500;
-K:覆蓋配置檔案“/ect/login.defs”;
-o:允許新增組ID號不唯一的工作組。
5,使用groupmod命令修改使用者組屬性
groupmod命令更改群組識別碼或名稱。需要更改群組的識別碼或名稱時,可用groupmod指令來完成這項工作。
groupmod命令選項
-g<群組識別碼>:設定欲使用的群組識別碼;
-o:重複使用群組識別碼;
-n<新群組名稱>:設定欲使用的群組名稱
6,使用groupdel命令刪除使用者組
groupdel命令用於刪除指定的工作組,本命令要修改的系統檔案包括/ect/group和/ect/gshadow。若該群組中仍包括某些使用者,則必須先刪除這些使用者後,方能刪除群組。