Linux基礎知識之用戶和組管理

系統環境:

   該博文以CentOS6.8_x86_64和CentOS7.2_x86_64系統為基礎,Xshell5遠程登錄CentOS6.8和CentOS7.2系統,分別以root身份和sjsir用戶身份登錄系統。

學習的重要問題:

一、為什么要學習用戶和組?

   首先Linux區別于其他的系統的最重要的特性就是多用戶,多任務的特性。這也是Linux重要的知識之一,多用戶就是可以在系統上面建立多個用戶,多個用戶可以在同一時間內登錄同一個系統執行各自不同的人,而且每個用戶之間都是直接對于系統的訪問,兩個用戶之間的操作不受影響。不同用戶都會擁有不同的權限,每個用戶在自己指定的范圍之內完成屬于自己的任務,Linux應用這種思想,實現了多用戶和多任務的特性。

二、linux系統中的用戶有哪些分類?

   a.超級用戶:擁有系統中的最高的權限,默認是root用戶,區分用戶是不是超級用戶的重點是該用戶的UID是否為0。

   b.普通用戶:對于自己的目錄下的文件可以任意的訪問和修改,但是自己權限外面的文件操作時會顯示:Permission denied(權限被拒絕。),例如自己建立的sjsir用戶,系統默認的第一個用戶的UID:CentOS6的UID為500,CentOS7的UID為1000。

   c.虛擬用戶:該用戶的bash為/sbin/nologin,最大的特點就是不能登錄系統,他們存在的原因就是為了方便系統管理,滿足相對應的系統進程對于文件屬性的要求。

三、用戶和組的重要概念

   a.用戶:我們要想使用Linux系統,就必須向系統管理員去申請一個賬號,通過每個用戶唯一的用戶名和用戶口令,只有用戶輸入正確的賬戶名和用戶口令,才允許進入系統和用戶的家目錄下。我們通過建立不同屬性的用戶(超級用戶,普通用戶,虛擬用戶),利用用戶組的知識,去構建不同的用戶組,通過權限的區分,達到用戶分類的目的。

   b.組:用戶組是多個相同特征用戶的組合(相當于公司中的一個單獨的部門),假設我們有一個文件需要一個組的用戶都去訪問,若沒有用戶組的這個概念,這些用戶都必須一遍又一遍的服務文件的權限,然后才能讓這些用戶去訪問,但是,若系統中有用戶組的概念,只需將用戶添加到組之后,然后給于文件一個組的訪問權限,所有被添加到用戶組的都會獲得這個組的權限,即可實現多用戶訪問該文件。通過去定義用戶組,在工作程度上面大大簡化了管理工作。

四、用戶和組之間的關系:

   用戶和用戶組之間的對應的關系:一對一、一對多、多對一、多對多。

  a.一對一:一個用戶可以存在一個組中,也是組中的唯一的成員。(該用戶存在主組中)

  b.一對多:一個用戶可以存在多個組中,該用戶擁有多個組中共同的權限。(但每個用戶,主組只有一個(primary group),輔助組(secondary group)有多個)

  c.多對一:多個用戶存在一個組中,這些用戶擁有和組相同的權限。

  d.多對多:多個用戶可以存在多個組中,相當于上面的關系的一種擴展。

五、相關密碼的一些知識點:

  1.shadow的文件格式:(man 5 shadow)

   login name:登錄用名;

   encrypted password:用戶密碼: 一般用sha512 加密(加密算法后面介紹);

   date of last password change:從1970 年1 月1 日起到密碼最近一次被更改的時間;

   minimum password age:密碼再過幾天可以被變更(0 表示隨時可被變更);

   maximum password age:密碼再過幾天必須被變更(99999 表示永不過期);

   password warning period:密碼過期前幾天系統提醒用戶(默認為一周);

   password inactivity period:密碼過期幾天后帳號會被鎖定;

   account expiration date:從1970 年1 月1 日算起,多少天后帳號失效;

   reserved field:保留字段,以后未來可能使用;

blob.png

 2.密碼加密的知識:

   a.密碼加密的機制:

    加密:明文–>  密文

    解密:密文–>  明文

    單向加密:哈希算法,原文不同,密文必不同;相同算法定長輸出,獲得密文不可逆推出原始數據

    雪崩效應:初始條件的微小改變,引起結果的巨大改變

   b.加密算法的幾種主要的類型:

      md5: message digest, 128bits

blob.png

      sha1: secure hash algorithm, 160bits

blob.png

      sha224: 224bits

sha224相比sha256,sha224算法的哈希值大小為256位。

      sha256: 256bits

blob.png

      sha384: 384bits

sha384相比sha256,sha384算法的哈希值大小為384位

      sha512: 512bits

blob.png

      ※Linux系統中更改加密算法 authconfig –passalgo=sha256 — update(將默認的算法更改為sha256)

    因為我們以后不會是密碼研究的人員,只可知道加密算法的原理即可,無需知道加密算法是如何進行和完成的,所以,我們就去了解一些hash加密算法即可,學會使用authconfig去切換不同的加密算法即可。

   3.密碼的復雜性策略

       a.使用數字、大寫字母、小寫字母及特殊字符中至少3種 

       b.足夠長(一般為8-20位)

       c.使用隨機密碼(無規律的密碼)

       d.定期更換,不要是使用原來使用過的密碼

學習的重要的命令:

一、用戶管理命令:

    a.創建用戶:useradd [options] LOGIN

       -u UID : [UID_MIN, UID_MAX] 定義在/etc/login.defs(為用戶指定特定的uid默認為上一個用戶的UID+1,CentOs6普通用戶的UID從500開始一直到60000結束,CentOs7普通用戶的UID默認從1000開始一直到60000結束。) 創建用戶peter,指定peter用戶的uid為1001.

     blob.png  

       -o 配合-u  選項,不檢查UID 的唯一性

     使用-o選項不去檢查UID為1001的用戶是否存在,直接創建UID為1001的用戶tom,通過倒序查看/etc/passwd文件可以發現剛才創建的peter用戶和剛創建的用戶tom的UID相同,所以加上 -o之后不會檢查UID的唯一性;

     blob.png

       -g GID :指明用戶所屬基本組,可為組名,也可以GID

       -G GROUP1[,GROUP2,…] :為用戶指明附加組,組必須事先存在

   關于組創建的兩個命令一起說,-g是指定用戶所屬的基本組的,基本組必須事先存在,用戶必須要有基本組,若不使用-g特殊指明,用戶創建時默認的創建于用戶同名的組,基本組在用戶創建時必須創建(為上面說的情況的用戶和組的對應關系為一對一)。-G是指定用戶的附加組,可以同時為一個用戶指定多個用戶附加組,也不為用戶指明用戶組,但是為用戶指明基本組的時候,基本組必須實現存在,要不無法指明。

   創建用戶jerry 為jerry用戶創建基本組為sjsir,創建附加組為 bin,root

     blob.png

       -c "COMMENT" :用戶的注釋信息

  創建用戶可以直接給用戶添加注釋信息,可以方便以后對用戶進行管理,例,創建hello用戶,添加hello的用戶的注釋信息為“i am hello.”

     blob.png

       -d HOME_DIR: 以指定的路徑( 不存在) 為家目錄

     創建用戶時為用戶指定特定的家目錄,一般的用戶的家目錄為/home/xxx,我特意將hi用戶的家目錄創建到/bin/xixi,可以發現,用戶的目錄并非一定存在/home下,可以隨意指定,但是用戶的默認的家目錄設置的配置文件在/etc/default/useradd,修改配置文件后,即可實現將用戶的家目錄更改到任意位置。

     blob.png

       -s SHELL :  指明用戶的默認shell 程序,可用列表在/etc/shells 文件中

    添加用戶xixi并指明xixi使用的shell類型為 /bin/csh

     blob.png

    系統中可以使用的shell的類型;

     blob.png

       -N 不創建私用組做主組,使用users 組做主組

   添加用戶hadoop,不創建私有組,使用users(GID=100)組作為主組

   useradd hadoop -N :創建之后我們可以發現,hadoop的主組為GID100的users組

     blob.png

       -r: 創建系統用戶 CentOS 6: ID<500 ,CentOS 7: ID<1000

     blob.png

   b.修改用戶屬性usermod

       usermod [OPTION] login

           -u UID:給已經存在的用戶指定一個新的UID

           -g GID:給已經存在的用戶變更一個新的GID

           -G GROUP1[,GROUP2,…[,GROUPN]]] :新附加組,原來的附加組將會被覆蓋;

              若保留原有,則要同時使用-a 選項,表示append;

           -s SHELL :變更用戶現在使用shell類型;具體的shell類型參考/etc/shells

           -c 'COMMENT' :新的注釋信息;

           -d HOME: 新家目錄不會自動創建,原家目錄中的文件不會同時移動至新的家目錄;

                 若要創建新家目錄并移動原家數據,同時使用-m 選項

           -l login_name: 新的名字;

           -L: lock 指定用戶, 在/etc/shadow 密碼欄的增加!

           -U: unlock 指定用戶,將 /etc/shadow 密碼欄的!拿掉

           -e YYYY-MM-DD: 指明用戶賬號過期日期;

           -f INACTIVE: 設定非活動期限;

       對于部分選項的解釋:

       ①由于該命令和useradd的部分命令是相同的,對于-u -g -G -s -c -d 的使用方法就簡單以一種表現方式給出:  usermod gentoo -u 502 -g xixi -G harry -s /bin/csh -c "i am gentoo." -d /home/hello

  表示為gentoo用戶的uid更改為502,基本組改為xixi,附加組改為harry,腳本的shell改為了/bin/csh,注釋信息更改為“i am gentoo.”,家目錄改為/home/hello.

blob.png

        ②usermod -i newname:將已經存在的用戶的名更改新的,下面的是將gentoo更改為hello,但是可以發現uid gid 等還是原來的。 

   blob.png

        ③用戶密碼相關:

           -L: lock 指定用戶, 在/etc/shadow 密碼欄的增加!

           -U: unlock 指定用戶,將 /etc/shadow 密碼欄的!拿掉

       說明:默認直接添加用戶時,用戶是沒有的,在密碼的位置取代的是!!默認的無法直接登錄,但是早期CentOS5.x系列可以直接使用usermod -U username兩次的時候,可以清空密碼,讓用戶無密碼直接登錄,這樣是不安全的,但是現在的6 7系列就已經修改了這種模式,取消兩次的時候就會報錯。

   blob.png

   usermod -L username:系統認為!已經挺安全的了,所以以后給用戶添鎖還是只能添加一個!

   blob.png

  c.刪除用戶 userdel

    userdel [OPTION]… login

     -r:遞歸刪除用戶,連同用戶的家目錄和用戶的郵箱,包括所創建的組都會刪除,但是注意,當他所在的組的中間還有別的用戶存在時,不會全部都刪除,僅僅會刪除單用戶,不會刪除用戶組。

  d.查看用戶的id相關的信息:

     id [OPTION]… [USER]

       -u: UID 獨立查看用戶的UID號(超級用戶的默認UID號為0)

       blob.png

       -g: GID 獨立查看用戶的GID號(hello用戶的GID為506)

       blob.png

       -G: Groups 獨立查看用戶所屬的組(hello為504 506)

       blob.png

       -n: Name 上面的命令是顯示的是用戶的GID UID號,加上-n之后,顯示的是用戶的名稱和組的名稱,需要配合-ugG使用。

       blob.png

       id username:直接使用id username 的時候,會直接的顯示上述的所有信息

       blob.png

    e.切換用戶或以其他用戶身份執行命令

       su [options…] [-] [user [args…]]

    切換用戶的兩種方式:

       su UserName :非登錄式切換,即不會讀取目標用戶的配置文件,不改變當前工作目錄

       blob.png

       su – UserName :登錄式切換,會讀取目標用戶的配置文件,切換至家目錄,完全切換

       blob.png

       注意:root su 至其他用戶無須密碼;非root 用戶切換時需要密碼

       blob.png

二、密碼相關命令

  a.設置密碼

       passwd [OPTIONS] UserName:  修改指定用戶的密碼,只有超級用戶root(UID為0)才能修改其它指定用戶的密碼,其余用戶只能修改自己的密碼,無權去修改其他用戶的密碼;

       利用root用戶身份,去修改sjsir用戶的密碼:(因為給sjsir用戶一個基于字典的密碼,所以系統會提示密碼太簡單了,但是root身份強大,無論什么密碼都可以被設置。)

      blob.png

       passwd:  修改自己的密碼;

       常用選項:

           -l: 鎖定指定用戶(鎖定hadoop用戶,passwd -l hadoop)

           blob.png

           -u: 解鎖指定用戶(解鎖hadoop用戶,passwd -u hadoop,但是因hadoop用戶之前沒有被賦予密碼,所以顯示一個警告)

           blob.png

           -e: 強制用戶下次登錄修改密碼(強制系統中的sjsir用戶在下次登錄的時候修改密碼)

           blob.png

              sjsir用戶終端顯示的內容:(提示用戶先輸入原來的密碼,然后讓用戶去輸入兩邊新的密碼,密碼的強度在前面已經說過了,修改之后,系統會強制用戶下線,然后讓用戶重新登錄系統。)

           blob.png

           -n mindays:  指定最短使用期限(指定hadoop用戶的最短使用期限為42天,默認為0天)

           blob.png

           -x maxdays :最大使用期限(hadoop用戶密碼最長的使用期限為1000天,過了這個期限必須修改密碼,默認為99999天)

           blob.png

           -w warndays :提前多少天開始警告(提前3天告訴hadoop用戶需要修改密碼,默認的提醒時間為7天。)       

           blob.png

           -i inactivedays :非活動期限;到什么時候用戶禁用(設置hadoop用戶可以使用1200天)

           blob.png

           –stdin :從標準輸入接收用戶密碼;

            echo " PASSWORD " | passwd –stdin USERNAME

            echo "centos" | passwd –stdin hadoop

            給hadoop用戶創建密碼,密碼為標準輸入進的字符,設置為centos;

           blob.png

      ※:-n -x -w -i 的執行結果顯示:(hadoop用戶)

           blob.png

    b.修改用戶密碼策略

      chage [OPTION]… LOGIN

          -d LAST_DAY :設置密碼最后一次修改的時間距離1970年1月1日的天數,當last_day設置為0時,用戶下次登錄時必須修改密碼。

          root終端:執行chage -d 0 hadoop命令

          hadoop終端顯示的內容:

          blob.png  

          -E, –expiredate EXPIRE_DATE:設置用戶被禁止登錄的時間,時間采取的是距離1970年1月1日的時間,也可以使用YYYY-MM-DD這個格式,賬戶被禁止后只有聯系管理員接觸禁止后才能登錄,當設置chage -E -1 username時,取消設置用戶禁止登錄時間。

          chage -E 2017-10-10 hadoop

          -I, –inactive INACTIVE:設置在用戶被鎖定之前,密碼過期之后設置的還能使用的天數,被鎖定后需和管理員聯系進行解鎖。

          chage -I 10 hadoop

          -m, –mindays MIN_DAYS:更改用戶密碼的最短使用期限

          chage -m 10 hadoop

          -M, –maxdays MAX_DAYS:更改用戶密碼的最長使用期限

          chage -M 1000 hadoop

          -W, –warndays WARN_DAYS:更改用戶密碼的提醒時間啊

          chage -W 4 hadoop 

         –l ,顯示密碼策略,下一次登錄強制重設密碼

三、組管理的命令(組的管理命令和用戶的管理命令差不多,所以不做過多的介紹,直講重要的配置文件。)

    a.創建組

    groupadd [OPTION]… group_name

         -g GID: 指明GID號;默認的組的GID號為500-60000(6),1000-60000(7)

         -r: 創建系統組;組的GID默認小于CentOS 6: ID<500   CentOS 7: ID<1000

    b.修改和刪除組

     組屬性修改:groupmod

     groupmod [OPTION]… group

         -n group_name: 新名字

         -g GID: 新的GID

     組刪除:groupdel

     groupdel GROUP

    c.更改組密碼

     組密碼:gpasswd

     gpasswd [OPTION] GROUP

         -a user: 將user 添加至指定組中;

         -d user: 從指定組中移除用戶user

         -A user1,user2,…: 設置有管理權限的用戶列表

     newgrp 命令:臨時切換基本組;如果用戶本不屬于此組,則需要組密碼

    d.更改和查看組成員

    groupmems [options] [action]

      options:

         -g, –group groupname 組 更改為指定組 ( 只有root)

      Actions:

         -a, –add username 指定用戶加入組

         -d, –delete username 從組中刪除用戶

         -p, –purge 從組中清除所有成員

         -l, –list 顯示組成員列表

     groups  [OPTION].[USERNAME]… 查看用戶所屬組列表

   

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

(1)
sjsirsjsir
上一篇 2016-08-02
下一篇 2016-08-02

相關推薦

  • linux 基礎目錄配置及用途說明

    bin -> usr/bin 一般存放root和一般用戶都可以使用的指令例如:cat, chmod, chown, date, mv, mkdir, cp, bash 等等常用的指令,同時還存放著單人維護模式下還能夠被使用的指令。 boot  這個目錄主要放置開機會使用到的文件,包括linux核心文件以及開機選單和開機所需要的配置文件。 de…

    Linux干貨 2017-08-19
  • 14程序包的編譯安裝

    在有些源代碼程序沒有被編譯成rpm的時候,或者其他人寫了一個源代碼程序,要把它安裝在服務器上要怎么做呢? 那就需要對源代碼進行編譯安裝了。 C代碼編譯安裝三步驟: 1、./configure: (1)通過選項傳遞參數,指定啟用特性、安裝路徑等;執行時會參考用戶的指定以及makefile.in文件生成makefile (2) 檢查依賴到的外部環境,如依賴的軟件…

    Linux干貨 2016-11-27
  • LAMP實戰

    說明:本實驗在單主機搭建。下面的步驟只需要你復制粘貼,即可完成實驗。 1、安裝httpd mkdir /tools cd /tools #獲取軟件包 wget -c http://mirror.bit.edu.cn/apache//httpd/httpd-2.4.16.tar.gz wget http://m…

    Linux干貨 2015-10-08
  • http協議及httpd特性詳解

    前言 隨著互聯網的迅猛發展和網絡的普及,各類網站層出不窮,網站也成為企業宣傳和實力展現的主要途徑之一,說到網站就不得不說一下web服務了,現在比較流行的web服務還是當屬Apache即httpd。本文將詳解http協議及httpd的特性。 http協議詳解 http協議 http: Hyper Text Transfer Protocol 超文本傳輸協議 傳…

    Linux干貨 2015-04-13
  • 第九周練習

    1、寫一個腳本,判斷當前系統上所有用戶的shell是否為可登錄shell(即用戶的shell不是/sbin/nologin);分別這兩類用戶的個數;通過字符串比較來實現; #!/bin/bash # nologin=$(awk -F: '$NF=="/sbin/nologin"{print $NF}…

    Linux干貨 2016-12-21
  • rsyslog將日志記錄于MySQL中,并用loganalyzer進行分析日志

    1、首先來安裝lamp環境的支持,與其相關的軟件包      # yum -y install rsyslog-mysql mariadb-server php php-mysql php-gd httpd       說明:rsyslog-mysql在數據庫中生成一個庫文件,但這個文件需…

    Linux干貨 2016-10-23
欧美性久久久久