Linux是一個多用戶多任務的操作系統,可以滿足多個用戶可以同時登陸系統,並且可以發起多個進程在系統中運行。爲了考慮到每個用戶自身的隱私,因此不同的用戶可以訪問的文件是不同的。
要實現用戶賬號的管理,要完成的工作主下幾個方面:
1.用戶賬號的添加、刪除和修改
2.用戶組的添加、修改和刪除
3.密碼(口令)的管管理
一、用戶賬號的添加、刪除和修改(useradd usermod userdel)
①用戶的類別
管理員:具有使用系統所有權限的超級用戶
普通用戶:即一般用戶,其使用系統的權限受限
系統用戶:保障系統運行的用戶,用於運行服務程序
登錄用戶:系統資源的正常使用者,權限受限
②用戶標識 UID(UserID)
可以理解爲用戶的“***”,大多數linux系統採用16bits二進制數字來表示UID,範圍 爲0-65535。
管理員:0
系統用戶:
CentOS 5,6:1-499
CentOS7 1-999
普通用戶:
CneOS 5/6 :500+
CentOS 7:1000+
③用戶組:
組類別:
管理員組
普通用戶組
系統組
普通組
④組標示:GID(GroupID)
管理員組
普通用戶組
系統組
CentOS 5,6:1-499
CentOS7 1-999
登錄組:
CneOS 5/6 :500+
CentOS 7:1000+
⑤組的分類:
1.以用戶爲核心
用戶的主組:基本組
用戶的附加組:額外組
2.根據組內容納的用戶來劃分
私有組:與用戶名相同,且只有此用戶
公共組:組內包含了多個用戶
⑥添加用戶 useradd
useradd [OPTION] name
-c:註釋信息
-d: /PATH/TO/HOME_DIR ,指定一個路徑作爲家目錄,目標路徑不能實現存在,否則會有警告,不會複製skel的文件給用戶。
-g:用戶的基本組組名或GID
-G:用戶所屬的附加組(額外組)列表,如果有多個用戶彼此間用逗號隔開,中間沒有空格
-k:從哪裏複製樣本目錄
[root@localhost ~]# useradd -c "test" -d /home/sam -g testgroup -G lin sam [root@localhost ~]# id sam uid=1005(sam) gid=1002(testgroup) groups=1002(testgroup),1001(lin)
-m:強制創建家目錄
-M:不創建用戶主目錄,即使系統在 /etc/login.defs 中的設置 (CREATE_HOME) 爲yes
[root@localhost ~]# useradd -M test1 [root@localhost ~]# ls /home lin marry sam
-r:創建一個管理用戶 , 默認不在/home創建家目錄,而是/root
[root@localhost ~]# useradd -r test2 [root@localhost ~]# tail -1 /etc/passwd test2:x:991:986::/home/test2:/bin/bash
-s:指明用戶默認shell,默認爲空,讓讓系統根據 /etc/default/useradd 中的 SHELL變量選擇默認的登錄shell
-u:指明用戶 ID 。數值必須唯一,並且非負。除非使用了 -o 選項。默認使用大於等於/etc/login.defs中UID_MIN,
[root@localhost ~]# useradd -s /bin/csh -u 1999 test3 [root@localhost ~]# tail -1 /etc/passwd test3:x:1999:1999::/home/test3:/bin/csh
-D:顯示創建用戶時的默認設置;相當於查看cat/etc/default/user
-s 設置默認shell
-e, --expiredate:用戶賬號過期期限,過期會鎖定,日期以YYYY-MM-DD
-f, --inactive INACTIVE:密碼過期後,賬戶被徹底禁用之前的天數。0 表示 立即禁用,-1 表示禁用這個功能(不會被鎖定)
[root@localhost ~]# useradd -s /bin/sh -e 2019-10-10 -f 10 test4 [root@localhost ~]# tail -1 /etc/shadow test4:!!:16873:0:99999:7:10:18179: [root@localhost ~]# tail -1 /etc/passwd test4:x:2001:2001::/home/test4:/bin/sh
4.修改用戶權限usermod:
usermod [options] name
-c:註釋信息,
[root@localhost ~]# tail -1 /etc/passwd test4:x:2001:2001::/home/test4:/bin/sh [root@localhost ~]# usermod -c test4 test4 [root@localhost ~]# tail -1 /etc/passwd test4:x:2001:2001:test4:/home/test4:/bin/sh
-d:修改家目錄路徑,一般應該同時使用-m選項以保證原家目錄中的文件會移動到新目錄中
-e:改變賬號過期時間。
-g:改變基本組
[root@localhost mnt]# usermod -e 2018-08-03 -g root test4
-G:修改所屬的附加組id,修改時會覆蓋原有的附加組,一同使用
[root@localhost mnt]# usermod -G 1118 test4
-a,表示爲用戶添加新的附加組
-l:修改當前用戶的用戶名
-s:修改shell
[root@localhost mnt]# usermod -s /bin/tcsh test4
-u:基本ID號。 UID
[root@localhost mnt]# usermod -u 1876 test4
-L:用來鎖定用戶密碼,會在用戶加密的密碼之前防止一個"!"
-U:用來解鎖用戶密碼,這將會移除加密的密碼之前的!
5.刪除用戶賬號usedel:
[root@localhost mnt]# userdel test3
-r:同時刪除用戶郵箱/var/spool/mail (生產環境中不要-r,mv到其他地 方等過段日子真的不需要再刪除)
二、用戶賬號的添加、刪除和修改
①添加組groupadd
groupadd [OPTION] groupname
-g:指明GID
[root@localhost mnt]# groupadd -g 1666 test
-r,--system:系統組; CentOS5 中是 1-499 CentOS7中1-999
[root@localhost mnt]# groupadd -r test3
②修改組groupmod
-g:修改GID
[root@localhost mnt]# groupmod -g 1667 test
-n:修改組名
③刪除組groupdel
[root@localhost mnt]# groupdel test
三、密碼口令的管理
①加密機制
密碼:加密存放,使用單向加密機制;
單向加密:僅能加密,不能解密;用於提取數據特徵碼
數據相同:加密結果相同
定長輸出:無論原始數據多大輸出結果一樣。
雪崩效應:輸出數據有一點變化,數據產生巨大變化
常用的加密方式:
md5 sha512
①passwd
passwd [option] [用戶名]
1.passwd:修改自己密碼
2.passwd username:修改指定用戶的密碼
[root@localhost mnt]# passwd test4 Changing password for user test4. New password: BAD PASSWORD: The password is a palindrome Retype new password: passwd: all authentication tokens updated successfully.
選項:
-l:鎖定密碼
[root@localhost mnt]# passwd -l test4 [root@localhost mnt]# cat /etc/shadow | grep "test4" test4:!!$6$nTSiuoBG$UD.XtnRtQNVt2UCMKHlHj/sf65A97dt4xg3miyet5mTivzv0ZICrRcZK5kZkW9NntNfO/dYH.TpfOjA8HNbbp1:16873:0:99999:7:10:17746:
#啊感嘆號代表鎖定
-u:解鎖密碼
[root@localhost mnt]# passwd -u test4 Unlocking password for user test4. passwd: Success
-f:強制
-d:清除密碼
[root@localhost mnt]# passwd -d test4 Removing password for user test4. passwd: Success
-e:賬號過期期限
stdin:從標準輸入接收密碼
echo "GOODB" |passwd --stdin USERNAME
當Linux啓動後,我們輸入賬號密碼正確後就登錄系統,錯誤的話會提示無法登錄那麼系統是如何判斷輸入的用戶名是以前在系統上創建的,並且輸入的密碼是正確的?
首
其實Linux中有個文件/etc/passwd,存放的就是用戶的信息。我們先來看看這個文件裏面放置着什麼內容吧。
[root@localhost mnt]# cat /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin
用戶名:用戶口令:用戶標識UID:組標識GID:註釋:家目錄:默認shell
1.用戶名:用於區分不同的用戶。在同一系統中註冊名是唯一的
2.用戶口令:系統用口令來驗證用戶登錄的合法性,開啓系統之門的鑰匙,超級用戶 root可以修改任何一個用戶的密碼,普通用戶也可以修改自己的密碼。
#注意:由於考慮到/etc/passwd這個文件任何一個用戶都可以查看,處於安全的考慮,通常將passwd文件中的口令字使用一個“x”來代替,而/etc /shadow作爲真正的口令放在/etc/shadow中,不能被普通用戶讀取的,只有超級用戶纔有權讀取。
3.用戶標識UID:
用於區別不同的用戶,對用戶進行的編號,和“***”差不多吧
4.組標識GID:
具有相似屬性的多個用戶可以被分配到同一個組內,方便系統管理
5.註釋:
包含用戶相關信息,例如全名電話住址
6.家目錄:
用戶登錄系統後默認的家目錄,管理員root的工作目錄爲/root
7.默認shell:
Shell是當用戶登錄系統時運行的程序名稱系統支持的shell在/etc/shell中
③用戶組管理:gpasswd
gpasswd [OPTION] group
選項:
-a USERNAME:把用戶添加至組中
[root@localhost mnt]# gpasswd -a test4 root Adding user test4 to group root
-d USERNAME:從此組中移除此用戶
[root@localhost mnt]# gpasswd -d test4 root Removing user test4 from group root