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 21:29
下一篇 2015-04-27 18:30

相關推薦

  • Linux權限基本介紹,管理

     Linux權限機制采用UGO模式。其中 u(user)表示所屬用戶、g(group)表示所屬組、o(other)表示除了所屬用戶、所屬組之外的情況。 u、g、o 都有讀(read)、寫(write)、執行(excute) 三個權限,所以UGO模式是三類九種基本權限。         用命令 ls …

    Linux干貨 2017-07-22
  • SELinux詳解及其優缺點

    SELinux簡介:        SELinux:Secure Enahanced Linux 安全增強的Linux SELinux是2.6版本的Linux內核中提供的強制訪問控制(MAC)系統。對于目前可用的Linux安全模塊來說,SELinux是功能最全面,而且測試最充分的…

    Linux干貨 2017-05-21
  • mysql數據庫及表的管理

    MySQL中字符大小寫: 1、SQL關鍵字及函數名不區分字符大小寫; 2、數據庫、表及視圖名稱的大小區分與否取決于低層OS及FS 3、存儲過程、存儲函數及事件調度器的名字不區分大小寫,但觸發器區分; 4、表別名區分大不寫; 5、對字段中的數據,如果字段類型為Binary類型,則區分大小寫;非Binary不區分大小寫; 數據庫: CREATE {DATABAS…

    Linux干貨 2015-06-01
  • 路由以及實驗

    路由 路由(routing)是指分組從源到目的地時,決定端到路徑的網絡范圍的進程。路由工作在OSI模型第三層——網絡層的數據包轉發設備。路由器通過轉發數據包來實現網絡互連。路由器可以支持多種協議,但絕大多數使用的是TCP/IP協議。路由器通常連接兩個或者多個由IP子網或者點到點協議表示的邏輯端口,至少擁有1個物理端口。路由器根據收到數據包中的網絡層地址以及路…

    Linux干貨 2017-05-11
  • Linux 基礎知識

    1、環境變量 2、幫助 3、時間 4、引用 5、命令歷史 6、FHS 7、命令別名 8、Globbing文件名通配 9、命令,路徑補全 10、快捷鍵 ============================================ shell:是用戶和linux(或者kernel)之間的接口程序,你在提示符下輸入的每個命令都先由shell解釋(命令語…

    Linux干貨 2016-06-09
  • 馬哥教育網絡班21期+第四周課程練習

    1、復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限; [root@localhost /]# cp -r /etc/skel /home/tuser1 [root@localhost /]# chmod&nb…

    Linux干貨 2016-07-22

評論列表(1條)

  • stanley
    stanley 2015-04-27 21:44

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

欧美性久久久久