天天看點

cat指令詳解_Linux | 賬号管理及指令使用詳解引言歸屬賬号管理賬号指令

cat指令詳解_Linux | 賬号管理及指令使用詳解引言歸屬賬号管理賬号指令

引言

  在Linux系統中,我們常常會看到目錄或檔案的所屬關系:

  其中

root root

就是檔案擁有者和群組,root是超管賬号,接下來我們來詳細學習這些賬号相關的概念以及相關指令使用。

歸屬

檔案擁有者

  User:Linux是一個多使用者多任務的系統,一個實體機或者虛拟機往往會有很多人同時使用,每個使用者在各自的家目錄進行操作(如部署自己的應用、存儲檔案等),這個時候就需要将這些使用者進行隔離,權限分開。使用者A無權讀寫使用者B的相關目錄,使用者B無權讀寫使用者A的目錄,保證每個人各自的隐私。

群組

  Group:多個使用者需要共享相同的東西,歸屬于同一個群組,舉例來說,一個開發團隊,在代碼倉庫中會屬于同一個倉庫位址下,這樣一個團隊的成員可以共享這個倉庫位址下的代碼進行讀寫,而其他開發團隊的成員無權讀寫這個團隊的代碼倉庫。

其他人

  Others:其他人這個概念比較好了解,相對于本群組而言,跟其無關的都是其他人。

關系

cat指令詳解_Linux | 賬号管理及指令使用詳解引言歸屬賬号管理賬号指令

三種屬性關系

  1. 管家相當于root使用者,所有幢都可以通路;
  2. 1幢101、1幢201、1幢301都是User,是使用者,都有各自單獨的家(家目錄);
  3. 1幢和2幢都是Group,裡面的1幢101、1幢201、1幢301等相當于使用者,在一幢可以共享電梯的使用;
  4. 對于1幢而言,2幢就是Others,用不了1幢的電梯;

賬号管理

賬号識别碼

  對于計算機而言,計算機不會認識賬号昵稱之類的别名,隻會識别二進制(0和1),在Linux中也是同樣的,主機對于賬号隻是識别ID。

  登入賬号一般有兩個ID,一個是

使用者ID

(UDI, User ID),存放在

/etc/passwd

中;一個是

群組ID

(GID, Group ID) ,存放在

/etc/group

中。我們可以通過

id user_name

的方式來檢視UID和GID。

  檔案或者目錄檢視屬性時,首先會根據

/etc/passwd和/etc/group

的内容,利用UID和GID顯示對應賬号和群組名稱,進而判斷自己的擁有者和群組。

使用者賬号

賬号登入流程

  1. 在Linux系統中輸入主機ip,賬号和密碼;
  2. 系統從

    /etc/passwd

    中尋找輸入的賬号,若沒有找到,則退出;否則,從

    /etc/passwd

    以及

    /etc/group

    将該賬号對應的UID與GID讀取出來,同時也會讀取使用者家目錄及shell設定;
  3. 系統進入

    /etc/shadow

    中找到對應賬号與UID,核對輸入密碼;
  4. 若賬号和密碼都核對無誤,則進入shell。

/etc/passwd詳解

  /etc/passwd是系統使用者配置檔案,這個檔案中存儲了系統中所有使用者的基本資訊。

  該檔案是對所有使用者都可讀的:

  檔案結構詳解如下:

一共7個字段,每一行中的字段由

:

隔開。第一個一般都是

root

系統管理者賬戶資訊。

  1. 賬号名稱:登入賬号的名稱,與UID對應。
  2. 密碼:早期Unix系統密碼放置在改字段中,後因安全問題,放置密碼資料被竊取,改放到

    /etc/shadow

    中,是以這邊顯示為

    x

  3. UID:賬号的使用者識别碼。
id範圍 id對應使用者的特性
0 (系統管理者) UID=0時,表示該賬号為root權限(系統管理者),普通賬戶的UID改為0即擁有root權限,但不建議修改。
1~999(系統賬号) UID=1~999時,即為系統保留的系統賬号,用于更小的權限去作業系統中的服務。
1000~60000(可登陸賬号) UID=1000~60000時,表示一般使用者的賬号。
  1. GID:該資訊與

    /etc/group

    相關聯,下面會闡述該目錄内容的結構。
  2. 使用者資訊說明欄:解釋說明作用,一般配合

    finger

    使用。
  3. 主檔案夾:使用者家目錄,一般

    useradd userA

    後,會自動為

    userA

    使用者建立

    /home/userA

    使用者家目錄,rott的使用者家目錄在/root下。
  4. shell:使用者登入系統後會取得一個shell與系統核心聯系,進而在系統上進行操作。

/etc/shadow檔案結構

  /etc/shadow是用于存儲 Linux 系統中所有使用者對應的密碼資訊,我們也稱為“影子檔案”。

  除了root使用者,其他使用者沒有權限通路該檔案。

  檔案結構詳解如下:

  1. 賬号名稱:與

    /etc/passwd

    對應,賬号名稱。
  2. 密碼:存放加密的密碼。
  3. 最近更改密碼的累積天數:該字段記錄的是變更密碼的那天日期,從1970年1月1日作為1開始累積,這個累積的天數可以通過代碼進行計算。

  其中,

86400

是一天的秒數,

+1

是為了補齊1970年1月1日那天。

  1. 密碼不可被更改的天數:該字段限制了密碼從最後一次變更後,需要經過多少天才可以進行變更。若為 ,則表示無限制,可以随時更改密碼。
  2. 密碼需要重新更改的天數:該字段限制了密碼從最後一次變更後,需要經過多少天就應該再次變更。若為

    99999

    ,表示273年,也就是無限制。
  3. 密碼需要更改前警告提示的天數:賬号密碼有效期快到的時候,會提前進行提示警告。
  4. 密碼失效時間:密碼更新時間(第3字段)+重新變更時間(第5字段)為有效期,過期後,還沒有更新密碼,密碼就會過期。
  5. 賬号失效日期:類似于第三個字段進行累計失效日期計算,過期後,賬号無法使用。
  6. 保留:保留字段。

群組

  我們在上述的

/etc/passwd

賬号配置檔案中發現有GID字段, 而這個字段是在

/etc/group

相關聯。

/etc/group檔案結構

  /etc/group檔案存儲群組相關配置資訊。

  1. 群組名稱:群組的名稱,與GID對應。
  2. 群組密碼:群組的密碼,通常給群組管理者使用,一般不設定,密碼不會在此顯示,會在

    /etc/gshadow

    中顯示,在此隻會顯示

    x

  3. GID:群組的ID,也就是

    /etc/passwd

    第四個字段的GID。
  4. 群組支援的其他賬号名稱:一個賬号可以加入多個群組,當其他賬戶加入該群組後,會填入到該字段中,逗号隔開。

/etc/gshadow

  /etc/gshadow是存放群組的密碼等資訊;

  1. 群組名稱:對應賬戶的群組名稱;
  2. 群組密碼:群組的密碼;若開頭為

    !

    則表示無合法密碼,無群組管理者;
  3. 群組管理者賬号:群組管理者的賬号名稱
  4. 有加入該群組支援的所屬賬号:群組下所支援的賬号,與

    /etc/group

    中的保持一緻。
    cat指令詳解_Linux | 賬号管理及指令使用詳解引言歸屬賬号管理賬号指令

三檔案的關系:/etc/passwd、/etc/shadow、/etc/group

cat指令詳解_Linux | 賬号管理及指令使用詳解引言歸屬賬号管理賬号指令

群組分類

  群組分為

初始群組

有效群組

,初始群組就是

/etc/passwd

中的第四個字段中GID對應的群組;有效群組就是某個使用者userA可以加入到其他群組userB中,這個群組userB對于這個使用者userA來說就是有效群組。

  舉例:假設通過

useadd

指令建立了t1和t2使用者,然後通過

usermod

指令将t1使用者加入到t2群組内。

其中

-G

是指定有效群組。

  1. 我們可以在

    /etc/group

    中看到t1使用者已加入到t2群組的第四個字段中。
  1. 我們也可以登入t1賬号後,通過

    groups

    指令檢視所支援的群組

第一個t1是有效群組,檢視到建立的檔案的使用者是t1,所屬群組也是t1。

  1. 我們可以通過

    newgrp

    來切換有效群組

我們可以看到檔案使用者是t1,所屬群組是t2。

賬号指令

useradd

概述

  

useradd

指令是建立賬号指令。

文法格式

useradd [-u UID] [-g 初始群組] [-G 次要群組] [-mM] [-c 說明欄] [-d 主目錄的絕對路徑] [-s shell] 使用者賬号名

參數詳解

預設配置

  1. GROUP=100

    :建立賬号的初始群組使用GID為100(群組為

    users

    );但是CentOS是

    私有群組機制

    ,是以系統會建立一個與賬号一樣的群組給使用者作為初始群組,該系統不會參考100數值。隻有遵守

    公有群組機制

    的系統才會參考該數值。
  2. HOME=/home

    :使用者主檔案夾的基準目錄(basedir,使用者家目錄),使用者的主檔案夾通常就是與賬号同名的目錄,目錄将會拼接在該設定值的目錄後,是以一般使用者家目錄為

    /home/user_name

    格式。
  3. INACTIVE=-1

    :密碼過期後是否會失效,

    -1

    代表密碼永遠不會失效,若為其他數值

    n

    ,則表示過期

    n

    天後失效。該值對應在

    /etc/shadow

    中的第7個字段。
  4. EXPIRE=

    :賬号失效日期,對應

    /etc/shadow

    中的第8個字段,可以設定賬号在某個日期後是失效,而不管密碼是否失效。預設不設定。
  5. SHELL=/bin/bash

    :預設使用的

    shell程式檔案名

  6. SKEL=/etc/skel

    :使用者主檔案夾參考基準目錄,一個建立的賬号對應的使用者家目錄,如

    /home/userA

    這個目錄的各個資料都是從

    /etc/skel

    中複制過去,如果在該目錄下建立了

    /etc/skel/test

    ,則後續新增使用者時,主檔案夾中會包含test檔案。如下示例:
  1. CREATE_MAIL_SPOOL=yes

    :建立使用者的mailbox,檢視路徑等資訊,可以通過

    cat /etc/login.defs

    檢視路徑。如下示例檢視:

示例

示例1

無參建立:

說明:

  1. /etc/passwd

    中建立一行與賬号相關的資料,包含了UID、GID、使用者家目錄等資訊;
  2. /etc/shadow

    中建立一行與賬号密碼相關的資料,如果沒有指定密碼,則無密碼填入;若需要指定密碼,則需要使用

    passwd user_name

    指令來指定密碼;
  3. /etc/group

    中建立一行與賬号群組相關的資料,加入一個與賬号名稱一樣的群組名稱;
  4. /etc/gshadow

    中建立一行與賬号群組密碼相關的資料,包含群組名稱、群組管理密碼等資訊;
  5. /home

    下建立一個與賬号名稱相同的使用者家目錄,用于使用者主檔案夾,且權限為

    700(drwx------)

示例2

加參建立:

說明:

  1. -u

    是指定了賬号的UID,我們可以看到

    /etc/passwd

    中的第3欄的UID是我們指定的1009;
  2. -g

    是指定了初始群組,我們可以看到

    /etc/passwd

    中的第4欄的GID是群組

    users

    對應的100;因為指定了初始群組,

    /etc/group

    中就不會主動建立與賬号同名的群組,是以在

    /etc/group

    /etc/gshadow

    中沒有檢視到u2相關的資料。

示例3

系統賬号:

說明:

  1. -r

    參數代表建立一個系統賬号;
  2. /etc/passwd

    中的第3欄看到數字為996,符合規定,1000及以後的号為一般賬号,1000之前的号為系統賬号;
  3. 由于系統賬号主要用于進行運作系統所需服務的權限設定,是以系統賬号預設沒有建立使用者家目錄。

useradd指令總結

  useradd指令執行後,會涉及到以下檔案或目錄的變動:

  1. 使用者賬号和密碼相關檔案:

    /etc/passwd,/etc/shadow

  2. 使用者群組和密碼相關檔案:

    /etc/group,/etc/gshadow

  3. 使用者的主檔案夾(使用者家目錄):

    /home/賬号名稱

passwd指令

概述

  

passwd

指令是修改賬号密碼的指令。

文法格式

  1. root或者賬号自己使用:

    passwd [--stdin] [賬号名稱]

  2. root賬号使用:

    passwd [-l] [-u] [--stdin] [-S] [-n 天數] [-x 天數] [-w 天數] [-i 日期] 賬号

參數詳解

密碼一般要求

  1. 密碼不能和賬号同名;
  2. 密碼盡量不要選字典中的字元;
  3. 密碼需要超過8個字元;
  4. 密碼不要使用個人資訊(身份證、手機号、生日等);
  5. 密碼不要使用簡單的關系式,如1+2=3;
  6. 密碼計量使用

    大小寫字元

    數字

    、特殊字元(

    $

    ,

    _

    ,

    -

    等)組合。

示例

示例1

無參更改

我們可以看到,不管是過短、還是過于簡單都會有提示,一直更改到符合密碼規範才會生效。在

/etc/login.defs

中我們可以看到對于密碼的一些要求。

cat指令詳解_Linux | 賬号管理及指令使用詳解引言歸屬賬号管理賬号指令

示例2

有參更改,通過

--stdin

參數,從标準輸入讀取令牌(隻有根使用者才能進行此操作)。

示例3

查詢密碼狀态,通過

-S

參數,報告已命名帳号的密碼狀态(隻有根使用者才能進行此操作)

示例4

加解鎖密碼,通過

-l

鎖定,加鎖時,檢視狀态,會出現

LK

狀态,檢視

/etc/shadow

中的第2個密碼欄會發現多了

!!

兩個字元;

-u

解鎖,解鎖後恢複

PS

狀态,且

/etc/shadow

中的第2個密碼欄會去掉

!!

chage指令

概念

  

chage

指令用于展示更詳細的密碼參數資訊。

文法格式

chage [-ldEImMW] 賬号名稱

參數詳解

示例

說明:

-l

參數可以展示出賬号密碼相關的時間資訊。

usermod指令

概念

  

usermod

指令用于修改賬号相關配置。

文法格式

usermod [-cdegGlsuLU] 賬号名稱

參數詳解

示例

說明:通過

-c

參數添加說明資訊後,我們可以看到

/etc/passwd

中更新說明生效。

userdel指令

概念

  

userdel

指令用于删除使用者賬号相關資料。主要涉及如下方面:

  1. 使用者賬号/密碼相關資料:

    /etc/passwd

    ,

    /etc/shadow

  2. 使用者群組相關資料:

    /etc/group

    ,

    /etc/gshadow

  3. 使用者個人檔案資料:

    /home/user_name

    ,

    /var/spool/mail/user_name

    等。

該指令要慎用,真的确認要删除賬号及所有資料的時候才使用該指令,否則可以去

/etc/shadow

賬号中的

第8個字段

進行設定為

,就可以使賬号失效,但資料還在。

文法格式

userdel [-r] 賬号名稱

參數詳解

示例

示例1

不删除使用者家目錄

示例2

删除使用者家目錄,使用

-r

參數

groupadd指令

概念

  

groupadd

指令用于添加群組。

文法格式

groupadd [-g GID] [-r] 群組名稱

參數詳解

示例

說明:要注意的是,不帶

-g

時,群組的GID會從1000以上

最大的GID+1

來建立。

groupmod指令

概念

  

groupmod

指令類似于

usermod

指令,用于修改群組group的相關配置參數。

文法格式

groupmod [-g 新GID] [-n 新群組名稱] 舊群組名稱

參數詳解

示例

說明:我們可以看到

/etc/group

/etc/group

中已經不存在g1了。

groupdel指令

概念

  

groupdel

指令用于删除群組。需要注意的是,在

/etc/passwd

中被使用為

有效群組

的群組不能被删除。如:

文法格式

groupdel [groupname]

參數詳解

示例

參考

《鳥哥的Linux私房菜》

[每篇微語]

有些人活了一天是一天,有些人活了一天是一瞬間。時間不在于你擁有多少,隻在于你怎樣使用。

繼續閱讀