Linux用戶和組管理

    登錄Linux時我們都需要輸入賬號和密碼,但Linux只會識別賬號所對應用ID號,這個ID號就稱為UID。

    同理每個用戶組也都擁有相對應的組ID號,即GID。

    Linux根據/etc/passwd文件的內容來查找當前登錄用戶是否為合法用戶。

1.png

    上圖中標注的即為root用戶所對應的UID和GID。

一、用戶賬號信息

    1、/etc/passwd文件

        此文件件中每一行為一個用戶的信息,以“:”分隔,共七個字段,各字段含義如下:

        1)賬號名稱

            就是我們用來登錄系統的賬號名。

        2)密碼

            由于/etc/passwd文件任何程序都可以讀取,出于安全考慮Linux已經把密碼存放在/etc/shadow文件中了,此處只用"x"來占位表示。

        3)UID    

            用戶ID;Linux將用戶劃分為以下幾類:

id 用戶類型 用戶特性
0 管理員 可以對系統做任何操作,沒人能阻止
1-499 系統賬號 專門用來運行程序的用戶,此類用戶不可以登錄系統

500以上

普通用戶 可以登錄系統的有限權限的用戶

        4)GID

            組ID與用戶ID的規定相類似,只不過它是用來定義用戶組的,與其相關的文件有/etc/group。

        5)信息說明列

            用于描述賬號的用途,沒有實際作用。

        6)用戶家目錄

            用于指定用戶的家目錄的位置。

        7)shell

            指定用戶登錄系統后使用的默認shell程序,由于系統用戶為不可登錄用戶,其shell為/sbin/nologin;另外,如果指定的shell在/etc/shells文件中不存在,則此用戶將無法登錄系統。

    2、/etc/shadow文件

        前文提到此文件保存了所有登錄用戶的密碼信息,下面來詳細了解一下這個文件的內容:

2.png

        1)賬號名稱

            與/etc/passwd文件中的賬號名稱相對應。

        2)密碼

            密碼以加密的形式存放,sha512加密(centos6),centos5中使用MD5。

        3)最近更改密碼的日期

            此字段中的數字表示,從1970年1月1日開始到最后一次修改密碼所經過的天數。

        4)密碼最少使用天數

            此字段定義了用戶在最后一次修改密碼后,密碼必須使用的天數;0表示隨時可以修改。

        5)密碼最多使用天數

            此字段定義如果在此時間內沒有更改密碼的話,密碼將會過期,用戶登錄系統時會被強制要求修改密碼。

        6)警告天數

            密碼需要修改前的警告天數,在第5個字段到期前,系統根據此字段的設置提醒用戶密碼所能使用的天數。

        7)密碼過期后的寬限時間

            這個字段表示密碼過期后的多少天內,如果還沒有修改密碼,密碼將會失效,此用戶將無法登錄系統了。

        8)賬號失效日期

            在指定的日期之后,賬號將無法登錄系統;日期的指定方法與第3個字段相同。

        9)保留字段

二、組賬號信息

    1、/etc/group文件

3.png

        此文件每一行代表一個用戶組,以“:”作為字段分隔符,共四列,其含義如下:

        1)用戶組名稱

        2)用戶組密碼

            不常用,密碼信息被保存在/etc/gshadow文件中。

        3)GID

            與/etc/passwd文件中的第四段對應。

        4)組成員

            此組中所包含的用戶。不過從上圖可以看到root組中此字段為空,本來root是屬于root組的,可是在這里為什么沒有顯示呢?因為此字段只顯示以此組做為附加組的用戶列表。

    2、/etc/gshadow

4.png        此文件內容格式與/etc/group相似,各字段含義如下:

        1)用戶組名稱

        2)用戶組密碼

        3)用戶組管理列表

        4)將此組作為附加組的用戶列表

三、賬號管理

    1、用戶管理

        1)useradd命令

            命令格式:useradd [options] 用戶賬號名

                -u UID:為用戶指定UID;

                -g GID:所屬的基本組;

                -G GID:所屬的附加組;

                -c ‘COMMENT’:注釋信息;

                -d /path/to/somewhere:為用戶創建家目錄,如果目錄存在會警告;

                -s SHELL:指定用戶的默認Shell;

                -m:強制給用戶創建家目錄;

                -M:不給用戶創建家目錄;

                -r:創建系統用戶;

                -e:后跟日期,格式為“YYYY-MM-DD”,指對賬號失效日期,對應shadow文件的第八個字段。

            命令演示:

1.png2.png

    從上面的兩個例子可以看出,創建用戶后其家目錄都保存在了/home目錄下,我們可以在創建用戶時修改家目錄的位置。

3.png

    我們來可以指定用戶登錄時使用的默認shell。

3.png

    下面我們再來看一下useradd的默認值:

[root@localhost ~]# useradd -D

GROUP=100             默認的用戶組;

HOME=/home            默認的家目錄;

INACTIVE=-1           密碼失效時間,對應shadow文件中的第7列;

EXPIRE=               密碼過期時間,對應shadow文件中的第8列;

SHELL=/bin/bash       默認登錄shell;

SKEL=/etc/skel        默認家目錄中的數據源目錄;

CREATE_MAIL_SPOOL=yes 是否為用戶創建郵箱。

    GROUP=100:

      此設置表示新建的用戶其默認的用戶組ID為100,但實際情況并不是這樣的,我們創建用戶時默認的用戶組ID與用戶ID是相同的。而且GID對應的用戶組是users,我們也從來沒有見到過此且戶組。其實在Linux中用戶組有兩種機制:私有用戶組和公有用戶組。

      公有用戶組是以GID=100做為新建用戶的默認用戶組,新建用戶都處于同一組中,也就是users組,組中用戶可以共享家目錄中的數據。

      而CentOS采用的是私有用戶組的機制,所以GROUP=100不生效。

    SKEL=/etc/skel:

      我們在創建好用戶后,可以在其家目錄中發現已經存在一些默認的隱藏目錄與文件,如下圖所示:

1.png

      這些文件用于定義用戶的環境變量,而這些文件就是從/etc/skel目錄中復制過來的。

    CREATE_MAIL_SPOOL=yes:

      用戶創建后都會自動生成一個與用戶對應的郵箱,就是靠此設置控制的。

1.png

      那么如何修改這些默認設置呢?可以通過修改/etc/default/useradd來修改默認值。

4.png

1.png

      上圖中將默認的用戶家目錄改到了/tmp目錄中,下面再來創建個新用戶:

2.png

        2)passwd命令

            命令格式:passwd  [-k]  [-l] [-u] [-d] [-e] [-n mindays] [-x maxdays] [-w warn-days] [-i inactivedays] [-S] [–stdin] [username]

                不帶任何選項:修改當前用戶的密碼;

                -k:修改密碼時要求輸入賬號現在使用的密碼;

                -l:鎖定用戶;

                -u:解鎖用戶;

                -d:刪除用戶密碼;

                -e:設置用戶密碼為過期密碼,用戶登錄時必須修改密碼;

                -n:密碼最小使用天數,與shadow第4個字段對應;

                -x:密碼最大使用天數,與shadow第5個字段對應;

                -w:密碼過期前的警告天數,與shadow第6個字段對應;

                -i:密碼失效日期,與shadow的第7個字段對應;

                -S:列出與密碼有關的相關參數;

                –stdin:可以通過管道進行密碼設置。

            命令演示:

            (1)使用默認選項修改用戶密碼

1.png2.png

            上面兩個實例中,root用戶修改密碼時要求直接輸入新的密碼即可,如果我們想在修改密碼前先輸入用戶的當前密碼,再輸入新密碼,可以使用-k選項。

            (2)要求root用戶修改密碼時提供被修改用戶的當前密碼

3.png

            上圖中要求先輸入當前的密碼,認證不通過的話是修改不了密碼的,在普通用戶中-k是默認選項。

            (3)查看密碼的相關信息:

1.png

            上圖中的命令結果是以空格分隔的7個字段,各字段含義如下:

                第一個字段:用戶賬號名;

                第二個字段:賬號的狀態;

                第三個字段:密碼新建的時間;

                第四個字段:密碼最小使用天數;

                第五個字段:密碼最長使用天數;

                第六個字段:警告天數;

                第七個字段:密碼是否有效;

            (4)鎖定賬號密碼

            如果我們想讓某個用戶暫時無法使用賬號來登錄系統,可以將密碼鎖定,如下所示:

3.png            與之對應的在/etc/shadow文件中test1的密碼也發生變化,如下所示:

4.png            (5)解鎖賬號密碼

            使用-u選項即可為用戶解鎖:

5.png

            (6)清空賬號密碼

6.png

            (7)設置密碼過期

7.png

8.png

            設置密碼過期后,用戶再次登錄系統時會要求修改密碼。

            (8)設置密碼的使用時限

1.png

2.png

            (9)不使用交互方式為賬號設置密碼

1.png

        3)chage命令

            命令格式:chage [options] 用戶賬號名

               -l:顯示賬號密碼的詳細信息;

                -d:后接日期,最近更改密碼的日期,格式YYYY-MM-DD,對應shadow文件第三字段;

                -m:后接天數,密碼最少使用天數,對應shadow文件第四字段;

                -M:后接天數,密碼最多使用天數,對應shadow文件第五字段;

                -w:后接天數,密碼過期前的警告日期,對應shadow文件第六字段;

                -I:后接天數,密碼失效前的寬限期限,對應shadow文件第七字段;

                -E:后接日期,賬號失效日期,格式YYYY-MM-DD,對應shadow文件第八字段。

1.png

            4)usermod命令

                用于修改用戶的的屬性。

                命令格式:usermod [options] 用戶賬號名

                    -a:以追加的方式將用戶添加到附加組,與-G連用;

                    -c:添加賬號說明;

                    -d:修改家目錄,與-m連用可以保證家目錄一定會被創建;

                    -e:后接日期,賬號過期日期,格式:YYYY-MM-DD,shadow文件第八字段;

                    -f:密碼失效前的寬限期限,shadow文件第七字段;

                    -g:修改用戶所在的用戶基本組;

                    -G:修改用戶所在的用戶附加組;

                    -l:修改賬號名稱;

                    -L:鎖定賬號;

                    -U:解鎖賬號;

                    -m:移動家目錄中的內容到新的位置,與-d一起使用;

                    -s shell:修改用戶的默認shell;

                    -u UID:修改用戶的UID;

                命令演示:

                (1)將用戶加入一個附加組中;

1.png

                (2)修改用戶家目錄的位置

1.png2.png3.png

            5)userdel命令

                命令作用:刪除用戶

                命令格式:userdel [options] 用戶賬號名

                    -f:強制刪除用戶,即使用戶處于登錄狀態;

                    -r:同時刪除用戶家目    二

錄;

1.png

    2、組管理

        1)groupadd命令:

            命令格式:groupadd [options] 組名

                -g GID:指定GID;

                -r:創建系統組;

1.png        2)groupmod命令:

            命令格式:groupmod [options] 組名

                -g:修改GID;

                -n:修改組名;

            (1)修改GID

1.png2.png

            (2)修改組名  

1.png

        3)groupdel命令

            命令格式:groupdel group

1.png

三、賬號查詢與控制

    1、查看用戶信息

        1)id命令

            命令格式:id [OPTION]… [USERNAME]         

                -g:顯示基本組ID;

                -G:顯示所有組ID;

                -u:顯示用戶ID;

                -n:以名稱代替ID顯示;            

1.png

        2)whoami命令 1.png    2、查看當前登錄系統的用戶

        1)w命令           1.png

        2)who命令

2.png

    2、用戶信息控制

        1)chfn命令

            命令格式:chfn [option] 用戶名

1.png

        2)chsh命令

            命令作用:更改用戶默認登錄shell。

            命令格式:chsh [-s shell][username]

2.png

四、用戶切換

    通常出于安全的考慮,建議使用普通用戶來登錄系統,在有需要時再切換為管理員進行操作,用戶之間的切換有以下幾種方法:

    1、使用Ctrl+Alt+F[2-6]鍵,打開新的終端登錄;

    2、使用ssh遠程登錄時,可以使用不同的用戶登錄系統;

    3、如果想在同一窗口中進行用戶切換,可以使用su命令來實現;

        命令格式:su [OPTION] [USERNAME]

            -,-l:使用登錄shell的方式切換用戶;

            -c 'COMMAND':使用指定的用戶來執行命令;

            -m:使用非登錄shell的方式來切換用戶;

            -s SHELL:切換用戶時指定shell,此shell必須是中/etc/shells中存在的;

        1)使用非登錄shell的方式來切換用戶。

1.png

        2)使用登錄shell來切換用戶

1.png        3)使用普通用戶查看/etc/shadow文件內容

1.png         

            

               

原創文章,作者:petmaster,如若轉載,請注明出處:http://www.www58058.com/3240

(0)
petmasterpetmaster
上一篇 2015-04-22
下一篇 2015-04-27

相關推薦

  • 為什么中國的網頁設計那么爛?

    Nick Johnson,一個有12年經驗的Web設計師在它的blog里寫下了“Why is Chinese Web Design So Bad”,新浪,人人,百度,阿里巴巴,騰訊榜上有名。其中的觀點相當的好,希望所有的中國人都讀一下。我不全文翻譯了,只是給大家看一些摘要。(保證不會像《環球時報》一樣) —————————— 作者2005年的夏天來到中國,他…

    Linux干貨 2016-07-11
  • old notes

    yum update: update software guest edition ***: how to install guest edition: 1) need to root: su – 2) yum install kernel-devel 3)yum install gcc* ( when don't remember n…

    Linux干貨 2016-09-19
  • 玩轉linux之啟動篇

        想要玩轉linux,首先明白其啟動流程,這里簡單說明一下: CentOS 6啟動流程:    POST –> Boot Sequence(BIOS) –> Boot Loader –> Kernel(ramdisk) –> roo…

    Linux干貨 2016-09-26
  • bind簡單配置之子域、主從、視圖

    [bind簡單配置之子域、主從、視圖] 標簽:bind簡單配置、子域、主從、視圖 [邏輯拓撲結構圖] ns.mylinux.com主機上面有兩種網卡用來模擬兩個不通的網段。 [子域配置]         域名內部還可以繼續劃分子域,進行分片管理。下面是正向子域授權的配置: &nb…

    Linux干貨 2015-10-22
  • 程序包管理yum

    YUM: YellowdogUpdate Modifier,rpm的前端程序,用來解決軟件包相關依賴性,可以在多個庫之間定位軟件包 存儲了眾多rpm包,以及包的相關的元數據文件(放置于特定目錄下:repodata) 文件服務器:     ftp://     http:// &n…

    Linux干貨 2016-08-23
  • linux如何獲取幫助以及基礎目錄命名標準

    一、linux的命令分為兩種,一種是內建命令,即包含在shell當中的,一種是外部命令,通常保存在 bin目錄中。 1、對于內部命令:  通常使用 help COMMAND 2、對于外部命令:  通常使用 man command  mannul的位置/usr/share/man man的內容通常分為以下幾塊   1、N…

    Linux干貨 2016-10-30

評論列表(1條)

  • stanley
    stanley 2015-04-27 21:44

    喲,乍看以為又是書生,petmaster新作相當給力哇,贊

欧美性久久久久