1. 程式人生 > >Linux下的使用者管理

Linux下的使用者管理

使用者的概念

  • 使用者:安全設定, 想要使用作業系統的某些功能就必須稱為作業系統的使用者,不同的使用者有不同的管理許可權
  • 組:同一個組下的使用者可以共享許可權
  • 初始組:每個使用者在建立的時候就具有的組
  • 附加組:額外新增的組,獨立於初始組

使用者存在的形態:

  • 系統中使用者存在形式就是一個表格和表格中呼叫的配置檔案,系統通過表格中的資訊來確定使用者所具有的許可權。

系統中使用者的配置檔案

使用者

/etc/passwd
  • linux中儲存使用者的資訊的檔案

這裡寫圖片描述
這個檔案中儲存的就是使用者資訊的表格,一共有7列,每列的含義如下:

使用者名稱稱 密碼 使用者id 組id 使用者說明資訊 使用者家目錄 使用者預設使用的shell
root x 0 0 root /root /bin/bash

密碼:

  • 密碼列只寫個x是因為出於安全性的考慮密碼儲存在其他檔案中,這一列的功能已經棄用,所以密碼位全部都是x

linux系統中使用者的分類

  • 主要分為3類:
    • 超級使用者:就是常說的root,UID為0,超級使用者預設擁有系統中所有的許可權。
    • 系統使用者:UID為1~499。預設無法通過系統使用者登陸。
    • 普通使用者:UID一般為500~65534,普通使用者的許可權會受到基本許可權的限制,也會受到管理員的限制,普通使用者預設情況下是不能訪問系統關鍵檔案和目錄的。
    • 在普通使用者中還有個nobody使用者,UID為65534,該使用者的許可權會受到進一步的限制,一般用於來賓賬戶。

/etc/group
  • 儲存使用者組資訊
    這裡寫圖片描述
    這個檔案中儲存的是系統中使用者組的資訊,每列含義如下:
組名稱 組密碼 組id 附加組成員
dialout x 20 liu

家目錄

/home/username
  • /home下的目錄是使用者的家目錄,家目錄的目錄名預設是使用者的使用者名稱
    這裡寫圖片描述

環境配置

/etc/skel .*
  • 使用者的骨資訊(使用者環境配置模板,在使用者建立時會自動被複制到家目錄),/etc/skel
    目錄下的配置模板檔案預設都是隱藏的。
    這裡寫圖片描述

檢視使用者

指令 引數 使用物件 作用
whoami 檢視當前使用者的名稱
id username 檢視使用者的id資訊
-u username 檢視使用者的uid
-g username 檢視使用者的gid
-G username 檢視使用者所在的所有組的id
-n username 以名稱顯示資訊

whoami:顯示當前使用者的名字

這裡寫圖片描述

id :顯示使用者的id資訊包含使用者的UID,初始組和附加組
這裡寫圖片描述

也可以通過指令逐條檢視:
id -u檢視使用者UID
這裡寫圖片描述

id -g檢視使用者的初始組
這裡寫圖片描述

id -G檢視使用者的所有組
這裡寫圖片描述

id -Gn以名稱顯示使用者的所有組
這裡寫圖片描述

監控命令

指令 引數 使用物件 作用
watch ‘指令’ 每隔2秒執行引號中的指令
-n 1 ‘指令’ 每間隔1秒執行
  • watch執行的指令中有多條指令的情況下使用分隔開。

為了方便檢視使用者配置檔案的變化執行以下指令來實時顯示/etc/passwd/etc/group/home/檔案和目錄的變化

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

echo指令會輸出後面引數中的內容,在這裡的作用是列印一個分割線。

顯示效果如下:
這裡寫圖片描述

建立使用者

/etc/login.defs
  • 此檔案中包含建立使用者時的預設配置資訊
指令 引數 作用
useradd 用預設配置建立使用者
-u UID 指定uid建立使用者
-g UID 指定初始組id建立使用者,這個初始組必須是存在的
-G GID 指定附加組id建立使用者,這個附加組必須是存在的,建立的使用者同時有附加組和初始組,初始組為預設
-c “Stirng” 指定說明文字建立使用者
-d /mnt/username 指定家目錄建立使用者
-s /bin/tcsh 指定shell建立使用者

這裡寫圖片描述
建立後的目錄變更效果:
這裡寫圖片描述.

可以看到添加了一個新使用者liu,uid為9999,gid為1000,並且有一個附加組72

  • 此時就可以通過su切換到新的使用者
    這裡寫圖片描述

  • 建立使用者的時候引數都是可選的,如果不指定會用配置檔案中預設的配置建立使用者
    這裡寫圖片描述
    通過預設配置建立使用者:
    這裡寫圖片描述

刪除使用者

指令 引數 作用
userdel 刪除使用者身份
userdel -r 刪除使用者身份及使用者涉及的配置檔案
  • 一般在刪除使用者的時候都使用userdel -r的方式刪除,只執行userdel不會刪除使用者的家目錄及一些配置檔案
  • 如果忘記加-r則需要手動刪除使用者的家目錄

刪除上一步建立的hello使用者:
這裡寫圖片描述

可以看到hello使用者的配置檔案以及家目錄都被刪除了:
這裡寫圖片描述

系統中預裝的shell

  • 在指定shell建立使用者的時候只能指定系統中已有的shell
  • /etc/shells中包含的就是系統中已有的shell的資訊。
    使用以下指令檢視系統中已有的shell
cat /etc/shells

這裡寫圖片描述

注意:

/sbin/nologin
/usr/sbin/nologin

這兩個shell沒有互動介面,用這兩個shell建立的使用者不能對系統進行操作,使用這兩個shell的使用者為系統使用者

建立組

指令 引數 作用
groupadd 建立組
-g GID 使用指定id建立組
groupdel 刪除組

直接使用groupadd建立一個組
這裡寫圖片描述

可以看到組id是從1000開始累加的

這裡寫圖片描述

指定id建立組groupadd -g 1009
這裡寫圖片描述
這裡寫圖片描述

刪除組groupdel
這裡寫圖片描述
這裡寫圖片描述
注意:

建立組的時候可以指定gid建立組,刪除時候需要通過名字刪除

使用者的修改

指令 引數 作用
usermod -l newname 修改使用者的名字
-u UID 修改uid
-g GID 修改使用者的初始組id,初始組必須為已存在的
-G GID 修改附加組,會清空原來所有的附加組,附加組也必須是已存在的。
-aG GID 追加附加組
-G “” gid為空會清空附加組
-c “String” 修改說明文字,為空可以清除說明文字
-d /home/lee 修改家目錄指向,這個修改只是修改了配置檔案裡面的目錄地址,並沒有修改目錄本身
-md /home/lee 修改家目錄指向並修改目錄本身的名字
-s /bin/tcsh 修改shell

修改上文中建立的linux使用者
這裡寫圖片描述
更改使用者名稱為test,uid為2222,gid為72,清空附加組:
這裡寫圖片描述
修改家目錄的指向並修改家目錄本身的名字為test:
這裡寫圖片描述
可以看到家目錄名稱和路徑配置都更改了:
這裡寫圖片描述

使用者的切換

su - username   
  • 切換到指定使用者
  • 高階使用者切換到低階使用者不用密碼
  • 低階使用者切換到高階使用者,或者切換到平級使用者,需要密碼

注意:
1. 使用者切換後需要退出(exit)再切換到下一個使用者,來回切換shell會出錯
2. su -,表示切換使用者身份及使用者環境,不加-只是切換使用者並沒有切換目錄
這裡寫圖片描述

使用者的認證資訊

/etc/shadow     
  • 該檔案中存放的是使用者的認證資訊一共有9列。
    這裡寫圖片描述

如:daemon:*:17661:0:99999:7:::

每列的引數:

舉例 引數名 注意點
daemon 使用者名稱
* 密碼 md5對稱加密
17661 密碼最後被修改的時間 單位為天,是距離1970年1月1日至今的天數
0 密碼最短有效期 單位是天
99999 密碼最長有效期 有效期結束前必須改密碼否則帳號就會被凍結
7 密碼過期警告 還剩多少天過期的時候警告
密碼非活躍期 有效期到期後的緩衝時間,緩衝期內不會凍結賬號
帳號到期時間 是一個時間點,如果指定,到達這個時間點就會被凍結
未設定使用者自定義

對於有密碼的賬戶密碼部分為MD5對稱加密如:
liu:$6$KdTQMNRu$V52ST1Kbkdc7uZO0PztBrp354QO60gkHtKev2X8sK2yiVxWTtZb8jaLR7zuQS6VPnPdDGcbzQFDbET8WbT2eY1:17747:0:99999:7:::

  • 對稱加密:加密和解密使用同一個東西,就像指紋識別,MD5
  • 非對成加密:加密和解密用不同的東西,就像鎖和鑰匙

注意:
密碼最後被修改的時間:如果設定為0,則使用者登陸時會被強制要求修改密碼

修改密碼最後被修改的時間為0:

  • 需要使用超級使用者才能更改
  • chage -d 0 username
  • passwd -e username

修改hello11使用者的最後修改時間為0:
這裡寫圖片描述
執行chage -d 0 hello11:
這裡寫圖片描述

修改配置檔案中的引數

修改密碼:

指令 引數 解釋
passwd username 超級使用者才能執行,可以設定任意密碼
passwd 普通使用者修改自己,普通使用者修改密碼會要求密碼有一定強度
passwd -d username 清空密碼
passwd -l username 凍結賬戶,強度更高
passwd -u username 解鎖
usermod -L username 凍結
usermod -U username 解鎖,對於passwd執行的凍結需要解2次

現在有一個使用者名稱為test的使用者:
這裡寫圖片描述

使用passwd test修改test的密碼:
這裡寫圖片描述

  • 修改密碼的時候密碼是隱藏的。

修改後test的認證資訊中就能看到加密的密碼:
這裡寫圖片描述

使用passwd -l test凍結test

這裡寫圖片描述
此時在test的認證資訊中密碼前面多了個!表示賬戶被凍結:
這裡寫圖片描述

使用passwd -u test解除凍結:
這裡寫圖片描述
這裡寫圖片描述

修改最短有效期

指令 引數 作用
chage -m 1 username 修改最短有效期為1天
passwd -n 1 username 修改最短有效期為1天

修改最長有效期

指令 引數 作用
chage -M 30 username 修改最長有效期為30天
passwd -x 40 username 修改最長有效期40天

這裡寫圖片描述
這裡寫圖片描述

修改非活躍天數

指令 引數 作用
chage -I 2 username 修改賬戶過期後的緩衝天數為2天
passwd -i 0 username 修改非活躍天數為0

這裡寫圖片描述
這裡寫圖片描述

修改過期警告

指令 引數 作用
chage -W 2 username 距離賬戶過期還有2天的時候提醒
passwd -w 3 username 距離賬戶過期還有3天的時候提醒

修改帳號到期時間

指令 引數 作用
chage -E 2018-11-11 username 修改賬號到期時間為2018-11-11

這裡寫圖片描述
這裡寫圖片描述

使用者權力下放

  1. 配置檔案 /etc/sudoers
  2. 配置命令
    • 使用visudo 命令編輯,該命令提供程式碼檢查
    • 在100行處新增配置資訊
      這裡寫圖片描述
  3. 使用hostname指令檢視當前主機名
    這裡寫圖片描述
  4. 為普通使用者新增命令許可權:格式為使用者名稱稱 主機名稱=(執行程式身份)命令
    • 命令需要為絕對路徑
    • 當執行命令的時候需要使用者驗證
    • 給test普通使用者新增useradd命令許可權:test localhost=(root) /usr/sbin/useradd
      這裡寫圖片描述
    • 以這種方式新增,執行命令的時和會要求進行使用者身份驗證.
  5. 取消使用者驗證的方式:使用者名稱稱 主機名稱=(執行者身份) NOPASSWD:命令1, 命令2
    • 當執行命令時不要使用者驗證
    • 同時新增userdel命令
    • test localhost=(root) NOPASSWD:/usr/sbin/useradd, /usr/sbin/userdel
      這裡寫圖片描述
  6. 配置之後命令執行的時候需要加sudo
    • sudo作用就是執行命令的時候檢查配置檔案
      這裡寫圖片描述