2021-05-12 14:32:11
Linux使用者和使用者組管理
Linux使用者和使用者組管理
一 使用者組態檔
1 使用者資訊檔案 /etc/passwd
我們先開啟這個檔案看一下
這裡涉及到一些格式,我們還記得用man可以檢視設定資訊的幫助
man 5 passwd
這裡看到:分割的每一項都有做詳細說明,我們來總結下這裡
第1個欄位:使用者名稱稱
第2個欄位:密碼標誌,我們可以看到都是x,那麼真實的密碼在哪裡呢,我們來看/etc/shadow檔案
這裡我們看到root對應的第二個欄位就是root的密碼,顯然是經過加密的,那麼為什麼密碼不直接放在passwd中呢,我們看下兩個檔案的詳細許可權
對於passwd的,一般使用者還是可以可讀的,但是對於shadow,就什麼許可權都沒有了,只有root可以檢視,這樣做是為了更安全些。
第3個欄位:UID(使用者ID)
我們可以發現在passwd中除了root使用者我們認識,還有很多其他的我們沒見過的,這些叫系統使用者(偽使用者),不能登入,只是在做系統呼叫服務的時候用到,我們不用管它們即可
0:超級使用者
1-499 系統使用者(偽使用者)
500-65535 普通使用者
第4個欄位:GID(使用者初始組ID)
這裡我們要區分下初始組和附加組
初始組:就是指使用者一登入就立刻擁有這個組的相關許可權,每個使用者的初始組只能有一個,一般就是和這個使用者的使用者名稱相同的組名作為這個使用者的初始組
附加組:指使用者可以加入多個其它的使用者組,並擁有這些組的許可權,附加組可以有多個
第5個欄位:使用者說明,這個一般就是描述資訊
第6個欄位:家目錄
普通使用者:/home/使用者名稱/
超級使用者:/root/
第7個欄位:登入之後的shell
二 影子檔案 /etc/shadow
我們開啟這個檔案來看一下
第1個欄位:使用者名稱
第2個欄位:加密密碼,加密演算法是SHA512加密演算法,如果是“!!”“*”代表沒有密碼,不能登入
第3個欄位:密碼最後一次修改日期,我們看到root的這個欄位是17105,這個是使用1970年1月1日作為標準時間,每過一天,時間戳+1
第4個欄位:兩次密碼的修改間隔時間(和第3個欄位相比),就是說多少天後可以修改這個密碼,我們看到root使用者的這個欄位是0
第5個欄位:密碼有效期(和第3個欄位相比),我們看到root使用者的這個欄位是99999,基本上是永久有效
第6個欄位:密碼到期前的警告天數(和第5個欄位相比),也就說比如我們在第5個欄位設定了一個密碼有效期,比如10天,然後我們這個欄位設定是7,那麼就是還剩7天到期的時候,就會有警告了。
第7個欄位:密碼過期後的寬限天數(和第5個欄位相比)
0代表密碼過期後立即失效,-1代表永遠不會失效
第8個欄位:賬號失效的時間(要用時間戳表示),如果這個欄位設定了失效時間,前面設定的有效期就沒用了。
第9個欄位:保留
那麼我們剛才一直在說時間戳,接下來我們看下時間戳的換算公式
1 把時間戳換算為日期
date -d “1970-01-01 16066 days”
我們把16066的時間戳轉換為日期
2 把日期轉換為時間戳
三 組資訊檔案/etc/group和組密碼檔案/etc/gshadow
1 組資訊檔案/etc/group
我們開啟這個檔案看一下
第1個欄位:組名
第2個欄位:組密碼標誌
第3個欄位:GID
第4個欄位:組中附加使用者
2 組密碼檔案/etc/gshadow
第1個欄位:組名
第2個欄位:組密碼
第3個欄位:組管理員使用者名稱
第4個欄位:組中附加使用者
兄弟連沈超老師說不推薦組密碼方式管理,一般用root管理,所以這裡了解即可
四 使用者管理相關檔案
1 使用者的家目錄
普通使用者 :/home/使用者名稱/,所有者和所屬組都是此使用者,許可權是700
超級使用者:/root/,所有者和所屬組都是root,許可權是550
2 使用者的郵箱
/var/spool/mail/使用者名稱/
比如我們建立一個使用者fuqiang,然後到這個路徑下檢視,就會發現這個路徑下自動生成了這個新使用者的郵箱
3 使用者模板目錄
/etc/skel/
我們看下這個目錄
我們看到這個目錄下的內容和/home/使用者名稱下的內容是一樣的,也就是說,在建立使用者的時候,在/home/使用者名稱下,就會自動生成這些模板目錄下的檔案
五 使用者管理命令
1 使用者新增命令useradd:
useradd 選項 使用者名稱
選項:
-u UID 手動指定使用者的UID,我們知道普通使用者的UID是從500,自動往後排的,如果我想設定一個吉利的數位,比如888,就可以用這個選項
-d 家目錄,比如我們不想放在/home下,就可以用這個選項改
-c 使用者說明
-g 組名:手工指定使用者的初始組,這個一般不建議修改
-G 組名:手工指定使用者的附加組
-s shell:手工指定使用者的登入shell,預設是/bin/bash
那麼如果我們不加任何選項,預設是怎麼樣的呢,比如我現在新增一個fq的使用者
我們來檢視一下跟使用者相關的檔案資訊
我們可以看到預設的這些資訊
那麼使用者預設值檔案在哪裡呢,
2 修改使用者密碼passwd:
passwd 選項 使用者名稱
-S 查詢使用者密碼的密碼狀態,僅root使用者可用
2016-11-03 使用者密碼設定時間
0 密碼修改間隔時間
99999 密碼有效期
7 警告時間
-1 密碼不失效
-l 暫時鎖定使用者,僅root使用者可用,鎖定使用者,這個使用者就不能登入了,其實就是修改shadow檔案中對應密碼的欄位,前面加!!
-u 解鎖使用者,僅root使用者可用
還可以使用字串作為使用者的密碼
echo “123 ”| passwd -stdin fq
這個主要用於shell程式設計,批次建立使用者
3 修改使用者資訊 usermod:
usermod 選項 使用者名稱
-u UID 修改使用者的UID
-G 組名 修改使用者的附加組
-L 鎖定使用者
-U 解鎖使用者
這個命令格式跟useradd類似,只不過useradd是新增,這個是修改已有
4 修改使用者密碼狀態 chage
chage 選項 使用者名稱
-d日期 修改密碼最後一次更改日期(shadow第3個欄位)
-m天數 兩次密碼修改間隔(4欄位)
-M 天數 密碼有效期(5欄位)
-W天數 密碼過期前有效期(6欄位)
-I 天數 密碼過期後寬限天數(7欄位)
-E 日期 賬號失效日期(8欄位)
其實這樣也都可以手工修改shadow檔案
chage -d 0 fq
把fq的密碼最後一次更改日期歸0 ,這樣使用者一登入就要修改密碼
5 刪除使用者userdel
userdel 選項 使用者名稱
-r 刪除使用者的同時刪除使用者家目錄
當然除了這種方式外,我們也可以手工刪除使用者,就是上面說的涉及到使用者的各個檔案去刪除即可
6 檢視使用者id
id 使用者名稱
比如我執行usermod -G root fuqiang,然後再用id檢視
我們看到fuqiang使用者多了一個附加組
7 切換使用者身份su
我們一般用su 直接加使用者名稱進行切換,但是這樣使用者的環境變數會有問題,具體可用env命令檢視,會發現有些環境並沒有切換過去
加選項 - 會連同使用者的環境變數一起切換
-c 僅執行一次命令,而不切換使用者
比如:su -root -c “useradd user3”
六 使用者組管理命令
1 新增使用者組groupadd 選項 組名
-g GID 指定組ID
我們先新增一個fuqianggroup的組 groupadd -g 600 fuqianggroup
然後到/etc/group下看看
可以看到這個組已經新增成功了
2 修改使用者組groupmod 選項 組名
-g GID 指定組的GID
-n 修改組名
比如我想把剛剛建立的fuqianggroup組修改為fqgroup
再來看下/etc/group
發現修改成功了
3 刪除使用者組groupdel 組名
注意:這樣只能刪除附加組,如果想刪除初始組,必須把初始組的使用者也刪掉才行。
4 把使用者填加到組裡或者從組中刪除 gpasswd 選項 組名
-a 使用者名稱:把使用者加入組
-d 使用者名稱:把使用者從組中刪除
我想把fuqiang這個使用者新增到剛才的fqgroup中
gpasswd -a fuqiang fqgroup
再把它刪除
gpasswd -d fuqiang fqgroup
好了,Linux使用者和使用者組管理就總結到這裡,如有問題,歡迎指正,謝謝。
本文永久更新連結地址:http://www.linuxidc.com/Linux/2016-11/137261.htm
相關文章