一 用戶配置文件
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用戶和用戶組管理就總結到這裡,如有問題,歡迎指正,謝謝。