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