1. 程式人生 > >Linux基礎命令(三)

Linux基礎命令(三)

########################
####1.使用者和使用者組理解####
########################

一  基本概念

使用者:就是系統"使用者"的身份,比如shell視窗中可以切換使用者

檔案所有者:狹義的理解為檔案的創造者(這個可以改變)------>應用隱私(祕密、情書等)

使用者組:使用者所屬的團體(組)----->抱團取暖(社團、協會等)----->戶口本(裡面有許多成員)

應用團隊開發時,可以資源共享,組內的成員可以互相修改對方的資料,但是其他組的成員無法修改和檢視

其他組角色扮演(成年男性既是兒子也是父親也是老師也是丈夫),說深一點(萬花叢中過片葉不粘身

)

二  戶資訊涉及到的系統配置檔案(很重要,去理解裡面的資訊!)

(1)/etc/passwd               ###使用者資訊

檢視幫助資訊:  man  passwd

欄位分析:

使用者名稱:系統中的所以使用者(包括系統使用者和自定義的使用者)

密碼標示x表示有密碼,相應的資訊轉至"/etc/shadow"檢視

使用者id(uid--->u):id 為0的是超級使用者,自定義使用者id 從1000之後增加

補充知識點:"?搜尋"

使用者組id(gid-->g):使用者初始組id , 每個使用者只能有一個初始組(自成一組)

註釋(c):使用者描述資訊

家目錄

(d-->):決定了使用者登入之後進入的預設位置

命令直譯器(shell-->s):使用者登入後{預設}的直譯器shell,理解為衣服的牌子(七匹狼、海瀾之家等)

需求1:如何檢視shell的種類呢?

操作:/etc/shells記錄了當前使用者使用的shell的名字

思考1:系統中除了root和student使用者之外還有很多其他使用者

說明:這些使用者是系統使用者,系統執行的後臺程序使用者(執行必備),不需要程序互動登陸

(2)/etc/shadow       ###使用者認證資訊(主要是密碼密文資訊--使用者密碼策略檔案)

幫助文件:省略

特點:由若干個欄位組成,欄位之間用“:

隔開

欄位分析:

       1. 使用者名稱:該密碼對應的使用者

       2. 使用者密碼:相關說明   

  1. 如果為空,則對應使用者沒有密碼口令,登入時不需要口令;
  2. 星號*代表使用者帳號被鎖定
  3. 雙歎號!!表示這個密碼已經過期了
  4. $6$開頭的,表明是用SHA-512加密(128位的密碼串密文----->root、student);
  5. $1$表明是用MD5加密;
  6. $2$ 是用Blowfish加密;
  7. $5$ 是用 SHA-256加密;

       3. 修改日期: 最後一次修改密碼的時間,linux 下的時間戳表示

       解釋:表示的是從某個時刻起,到使用者最後一次修改口令時的天數時間起點對不同的系統可能不一樣

  4. 修改間隔: 兩次密碼修改之間最少的間隔時間,單位天

        解釋:兩次密碼修改的間隔時間,要過多少才可以更改密碼,預設是0,即不限制密碼的有效期(隨時隨地修改)

        解釋:既然是密碼修改,如果在此期限內則不能修改密碼,該密碼的最短有效期(過了這個期限密碼一旦修改就不能此密碼登陸)

       5. 密碼有效期: 不修改密碼的前提下,該密碼的有效期,單位為天, 預設99999 可表示永久有效

       6. 告時間(提醒): 系統開始警告使用者使用者密碼正式失效(包括活躍期)之間的天數(倒計時),登入之後會有提示,單位為天

       7. 寬限時間(非活躍期): 密碼到期之後的寬限時間,0 表示立即失效,-1 表示永不失效, n 表示幾天後失效, 單位為天-->一般7天

       8. 賬號失效時間(帳號到期日): 到期之後,賬號失效,無論密碼策略是什麼,linux 下的時間戳表示

       9. 保留欄位

(3)/etc/group                   ###使用者的所有組資訊

    組織結構:組名稱:組密碼:組id:附加組成員

    組名:

        組名是使用者組的名稱,由字母或數字構成。特點:與/etc/passwd中的登入名一致,組名不應重複。

    口令標示:

        x表示有密碼,密碼在/etc/gshadow ---->存放的是使用者組加密後的口令字。

    組標識號(組id):

        組標識號與使用者標識號類似,也是一個整數,被系統內部用來標識組,別稱GID.

    組內使用者列表(當前組的使用者):

        屬於這個所有使用者列表,每個使用者之間用,號分割;本欄位可以為空;如果欄位為空表示使用者組為GID的使用者名稱

        補充:這個使用者組可能是使用者的主組,也可能是附加組

(4)/etc/gshadow              ###認證資訊

    欄位分析

       1. 組名:保持一致
       2. 組密碼: SHA 512 加密後的密碼串, 不常用,容易有安全漏洞(常為空)---->瞭解
       3. 管理員(組長):組的管理員,管理員有密碼之後,就可以對組內的使用者進行管理(許可權管理)---->有用處
       4. 使用者列表(小組成員): 組下包含的使用者列表

(5)/home/username        ###使用者家目錄

(6)/etc/skel/.*                   ###使用者骨架檔案

注意: /etc/skel/ 這個目錄中的所有檔案或目錄在使用者新建的過程中會被複制到使用者的家目錄裡,這個目錄中預設存在的隱藏檔案是使用者的預設配置檔案

說明:建立使用者時候,沒有指定相關資訊則可以自成一組!

補充:使用者就是系統"使用者"的身份,在系統中使用者儲存為若干竄字元+若干個系統配置檔案


##################
####2.使用者管理####
##################

1.使用者建立(預定義一些資訊)
 useradd        引數    使用者名稱字
                        -u    ##指定使用者uid
                        -g    ##建立使用者的同時指定使用者初始組資訊(gid),這個組必須已經存在--->useradd -g uid 使用者名稱
                        -G   ##指定附加組,這個組必須存在(對應的id)
                        -c    ##使用者說明(註釋)
                        -d    ##使用者家目錄(一旦切換登陸進入的目錄)
                        -s    ##使用者所使用的shell,/etc/shells記錄了使用者能使用shell的名字

說明:如果不指定相關資訊,則自成一組且id是從1000(第一次建立)開始,
2.使用者刪除
userdel     -r    使用者名稱稱

說明:-r表示刪除使用者資訊及該使用者的系統配置(很重要!!!)

原因:1是佔記憶體,2不知道檔案是啥資訊(粒度控制不好,不知道檔案的作用),3可能會引起系統的紊亂!

3.立(見名知意)
groupadd    -g           ##建立組
groupdel    組名字    ##刪除組

做以上實驗的監控命令

watch -n 1 'tail -n 3 /etc/passwd /etc/group;echo ===;ls -l /home;echo ===;ls -l /mnt'

說明:每秒動態監控/etc/passwd 和/etc/group系統配置檔案的後三行資訊,並將輸入的資訊送往標準輸出(控制檯)!

4.使用者id(的)資訊檢視
id    引數    使用者
        -u     ##使用者uid
        -g     ##使用者初始組id
       -G     ##使用者所有所在組id(包括其他組--次組)
        -n     ##顯示名稱而不是id數字
        -a     ##顯示所有資訊(預設--->不指定引數時)

5.使用者資訊更改(天賦固然重要,但後天努力更重要!)
usermod    引數    使用者
                    -l    ##更改使用者名稱稱
                   -u    ##更改uid
                   -g    ##更改gid------> usermod -g gid 使用者
                  -G    ##更改附加組gid(特點:每次都會覆蓋)
                -aG    ##新增附加組(特點:可以新增多個)
                   -c    ##更改說明(註釋)------> usermod -c '註釋的內容'  指定使用者
                   -d    ##更改家目錄
                   -s    ##更改shell
                   -L    ##凍結帳號(或者passwd -l)---->涉及到使用者的許可權問題
                   -U    ##解鎖

說明:passwd -l 凍結強度要比usermod -U 凍結強度高

6. 小結

1. 使用者組密碼配置檔案不常用,設定組密碼容易出現安全漏洞

2. 沒有設定密碼的使用者,不能遠端登入

3. 鎖定使用者: 只需在passwd 檔案中密碼位前新增!即可(疑問???)

4. 每個使用者建立的時候,都會建立一個與其同名的使用者組,並作為此使用者的初始組

5. 檢視使用者的初始組:passwd檢視初始組id, group 中檢視組名稱

######################
####3.使用者權力下放####
######################

說明普通使用者本身沒有許可權去建立一個使用者

需求:在系統中超級使用者(權力的掌控者)可以下放普通使用者能執行的操作(rwx)給普通使用者->使之成為VIP使用者(較普通使用者而言)

sudo:superuser do

下放權力配置檔案:/etc/sudoers

2.下放權力的方法

首先超級使用者(root)必須先執行visudo------>會再進入編輯/etc/sudoers模式;注意:不是直接 vim /etc/sudoers

檢視其資訊此命令的資訊:-rwxr-x---. 1 root root 118152 Jun 28  2016 /usr/sbin/useradd ------>普通使用者是沒有執行的許可權(x)

格式:獲得許可權使用者    主機名稱=(獲得到的使用者身份)    命令
            ------> :set nu------>:99------>I編輯模式------>test    desktop0.example.com=(root)    /usr/sbin/useradd
解釋:test使用者(待執行命令使用者)能在主機名為desktop0.example.com的主機上以超級使用者身份執行/usr/sbin/useradd這條命令

3.執行下放許可權命令

測試:切換到test使用者(ctrl+d或者exit)--->sudo(表明是以超級使用者的許可權去執行相應的命令)  命令(useradd 使用者)

說明:會去讀取配置檔案的資訊(驗證),如果第一次執行sudo需要輸入當前使用者密碼,以後不需要了!

需求1:使用者呼叫sudo命令的時候不需要自己密碼

設定:root使用者在/etc/sudoers中設定如下:

test(被賦予許可權的使用者)    desktop0.example.com(在哪臺機器上生效)=(root--->賦予許可權的使用者) NOPASSWD: /usr/sbin/useradd

此時test使用者(普通使用者)呼叫sudo命令的時候不需要自己密碼

思考:僅僅是賦予一些命令執行的許可權嗎?


############################
####4.使用者認證資訊的控制####
############################

  chage     引數    使用者
    -d      ##使用者密碼組後一次修改的時間,如果設定成0,使用者登陸系統後必須修改自己的密碼(級別最高)---->等效於:passwd -e 
    -m     ##最短有效期(單位是天)
    -M     ##最長有效期
    -W     ##警告期
     -I       ##使用者非活躍天數
    -E      ##帳號到期日格式 -E "YYYY-MM-DD"

測試:chage  引數-{d,m,M,W,I,E}  引數 使用者

補充:passwd命令的相關操作!

############################
####5.root密碼忘記####
############################

操作步驟
1.重新啟動系統(虛擬機器的話雙擊----真機則開關鍵)-----注意:如果是
2.在系統啟動階段上下健(方向)停止系統系統引導
3.選擇啟動引導標題(下面有提示),按“E(e)”進行編輯
4.游標移動找到linux16引導條目這一行,end跳到行末尾,從這行最後刪除到ro選項,並把ro改為"rw空格rd.break"選項
5.ctrl+x啟動設定過後的系統引導條目(下面有提示)
6.進入系統後執行chroot /sysroot切換到真實的系統環境------>which whoami(判斷當前的使用者--->非必須)
7.鍵入paswd----->提示修改密碼----->兩次鍵入密碼----passwd root修改超級使用者(root)密碼
8.建立檔案 "touch /.autorelabel"讓系統從新掃描所有檔案(很重要)
9.exit兩次使系統自動重新啟動

補充:系統會開始去載入檔案,以百分比的形式顯示進度,剩下的就是測試了!