用戶和組
Cisco開發並建立了AAA認證體系:
Authentication:認證,核實使用者身份;
Authorization:授權,對已經核實身份的使用者進行資源分配;
Accounting:審計,監管資源被使用的情況;
其發起者;每個進程上都會標記上其所有者的身份信息;
當進程試圖訪問資源的時候,安全上下文會比對進程的所有者和資源的所有者之間的關系:
首先,查看進程的所有者是否和資源的所有者為同一用戶,如果是,就按照所有者擁有的權限來使用資源;
如果不是,則判斷進程的所有者是否屬於該資源所屬組的成員;如果是,按照所屬組的權限來使用資源;
如果不是,就按照最為普通的其他用戶的權限來使用資源;
用戶賬戶:實現操作者和計算機交互式操作的基礎,是操作者的身份在滿足了驗證條件之後的計算機系統中的映射;
用戶賬戶分類:
超級用戶(管理員):root
普通用戶:
系統用戶(非登錄用戶):
為了保證安全,往往會讓某些進程或服務必須以非管理員的用戶身份運行;這類非管理員用戶,稱為系統用戶;此類用戶一般不允許登錄到系統的;
登錄用戶
能夠通過登錄行為驗證用戶身份進而獲得資源訪問權限並可以對資源進行操作的用戶,可以稱為登錄用戶;
用戶賬戶的標識方式:
用戶登錄名稱:
為操作者提供的簡單易記的字符串標識;
用戶的數字ID(UID):
為計算機操作系統提供的標準的數字標識符號,0~2^32-1
超級用戶:
用戶名:root
UID:0
普通用戶:
系統用戶:
CentOS 6-:1~499
CentOS 7+:1~999
登錄用戶
CentOS 6-:500+
CentOS 7+:1000+
註意:60000+的UID通常需要用戶自定義標識;
名稱解析:
用戶名 <--> UID
用戶名解析庫:/etc/passwd
操作系統中的認證組件通過解析庫實現認證機制,即驗證登錄用戶是否為已經存在的用戶;
用戶的認證庫:/etc/shadow
通過此前的解析庫認定用戶是存在的,再經過認證庫的認證,來證明登錄用戶就是其聲明的用戶;
默認的認證機制:密碼認證;
密碼復雜性要求:
1.盡量避免使用有規律的或者來源於字典中的字符串作為密碼;
2.密碼要足夠長,一般不得少於6個字符;
3.密碼要足夠復雜,其中應該至少包括大寫字母,小寫字母,數字及其他符號中的三類;
4.不定期更換,每隔一段時間進行密碼更換;
在Linux中,保存到認證庫的密碼是經過單向加密算法處理過的;
能夠加密密碼的算法:
MD:
MD5,Message Digest Version 5,消息摘要算法第5版;
128位定長輸出;
SHA:Secure Hash Algorithm,安全的哈希算法;
sha1:160加密輸出
sha224:
sha256:
sha384:
sha512:默認的加密算法;
salt:通過隨機算法計算得到的隨機數;
隨機數的生成裝置:
/dev/random:
僅僅從熵池中返回隨機數;如果熵池中隨機數耗盡,進程會被阻塞;
/dev/urandom:
首先試圖從熵池中返回隨機數,如果熵池中隨機數耗盡,則利用偽隨機數生成器生成偽隨機數;
在認證庫中的密碼的最終形態:算法+salt+加密字符串;
算法:$1~$6
salt:$隨機字符串
加密字符串:$單向加密的結果
組賬戶:將具有某些相同或相似屬性的用戶聯系在一起以便可以集中授權的容器;
組的分類:
超級用戶組
普通用戶組:
系統用戶組
登錄用戶組
組賬戶的標識方法:
組賬戶名稱:
組賬戶ID(GID):
超級用戶組:0
系統用戶組:
CentOS 6-:1~499
CentOS 7+:1~999
登錄用戶組:
CentOS 6-:500+
CentOS 7+:1000+
組名解析:
解析庫:/etc/group
認證庫:/etc/gshadow
組也需要使用密碼加密保護;
用戶賬戶和組賬戶之間的關系:
在Linux中,每個用戶必須至少屬於一個組;
用戶賬戶的GID標識被稱為用戶的主要組(基本組),Primary Group;每個用戶必須要有主要組,而且只能有一個;
在主要組的基礎之上,用戶可以與其他的組賬戶存在邏輯關系,此類組稱為用戶的附加組(附屬組,額外組),Addtion Group;對於用戶來說,此類組可以沒有,也可以有多個;
用戶和組的管理命令:
組賬戶的管理命令:
groupadd、groupdel、groupmod
用戶賬戶的管理命令:
useradd、userdel、usermod
認證相關的命令:
passwd、gpasswd
其他的相關命令:
chage,chsh,finger,su,id
與用戶和組相關的命令:
1.groupadd
groupadd - 創建一個新組
格式:groupadd [Options...] group
常用選項:
-g GID:指定要創建的組的GID;
-r:將組創建為系統組,此時應該保證GID在系統組範圍內;
[root@localhost ~]# tail -1 /etc/group wtt:x:1699:
2.groupdel
groupdel - 刪除一個組
格式:groupdel [Options...] group
[root@localhost ~]# groupdel wtt [root@localhost ~]# tail -10 /etc/group groupw:x:1001: centos:x:1111:qhdlink,fedora varnish:x:1112:qhdlink qhdlink:x:1113: distro:x:1114:fedora peguin:x:1115:fedora fedora:x:5001: mydisk:x:808: wcdmw:x:1369: group5:x:5002:
註意:如果某個組是某個用戶的主要組,則該組不能刪除;
[root@localhost ~]# groupadd group5 [root@localhost ~]# useradd -g group5 user123 [root@localhost ~]# groupdel group5 groupdel:不能移除用戶“user123”的主組
3.groupmod
groupmod - modify a group definition on the system
格式: groupmod [Options...] group
常用選項:
-g GID:修改指定組的GID;
-n GROUP_NAME:修改指定組的組帳戶名稱;
[root@localhost ~]# tail -1 /etc/group group5:x:5002: [root@localhost ~]# groupmod -g 1399 group5 [root@localhost ~]# tail -1 /etc/group group5:x:1399: [root@localhost ~]# groupmod -n ggg group5 [root@localhost ~]# tail -1 /etc/group ggg:x:1399:
4.useradd
useradd - 創建一個新用戶或更新默認新用戶信息
格式:useradd [選項] username
useradd -D [選項]
常用選項:
-c, --commentCOMMENT:為用戶添加註釋信息;
-d, --homeHOME_DIR:為用戶指定家目錄的路徑;此目錄不能事先存在;
-e, --expiredateEXPIRE_DATE:用戶密碼的過期的絕對時間;
-f, --inactiveINACTIVE:為用戶指定密碼使用達到最大時間之後的寬限期;
-g, --gidGROUP:為用戶指明GID;如果不寫此選項,系統會創建一個與用戶名相同的組並且將之設置為誒此用戶的主要組;
-G, --groupsGROUP1[,GROUP2,...[,GROUPN]]]:為用戶添加附加組;
-m, --create-home:必須為用戶創建家目錄;
-M:不為用戶創建家目錄;在創建系統用戶時常用此選項;
-r, --system:創建系統用戶;
-s, --shellSHELL:為用戶指定默認的shell;
-u, --uidUID:為用戶指定UID;
[root@localhost ~]# groupadd wc1 [root@localhost ~]# groupadd wc2 [root@localhost ~]# groupadd wc3 [root@localhost ~]# useradd wcca -c "自定義組" -d /wchome -g wc1 -G wc2,wc3 -s /bin/bash [root@localhost ~]# tail -1 /etc/passwd wcca:x:5005:5005:自定義組:/wchome:/bin/bash [root@localhost ~]# tail -1 /etc/shadow wcca:!!:17478:0:99999:7::: [root@localhost ~]# tail -3 /etc/group wc1:x:5005: wc2:x:5006:wcca wc3:x:5007:wcca
5.userdel
userdel - 刪除用戶賬戶和相關文件
格式:userdel [選項] username
常用選項:
-r, --remove:刪除用戶的同時刪除用戶的家目錄及用戶郵箱文件;
6.usermod
usermod - 修改一個用戶賬戶
格式:usermod [選項] username
常用選項:
-c, --commentCOMMENT:修改用戶的註釋信息;
-d, --homeHOME_DIR:修改用戶的家目錄;(一般不修改)
-e, --expiredateEXPIRE_DATE:修改用戶密碼過期的絕對日期;
-f, --inactiveINACTIVE:修改用戶密碼過期之後的寬限期;
-g, --gidGROUP:修改用戶的主要組(GID);
-G, --groupsGROUP1[,GROUP2,...[,GROUPN]]]:修改用戶的附加組為此列表中的組,如果同時使用了-a選項,則保留原有的附加組,將此列表中的組追加至用戶的附加組列表;
-l, --loginNEW_LOGIN:修改用戶的登錄名;
-s, --shellSHELL:修改用戶的登錄shell;
-u, --uidUID:修改用戶的UID;
-L, --lock:鎖定用戶;
-U, --unlock:解鎖被usermod -L鎖定的用戶;
[root@localhost ~]# usermod -L wcca [root@localhost ~]# tail -1 /etc/shadow wcca:!$6$Sbizxdhy$t2GFCHMC5fLLplDphqDaitLbFNy/wOFLVqAWhTaFBS3Y6b73h5Y3WHcEMCiuTcD8FVCyVyIiwdGwkixFqri5O0:17478:0:99999:7:::
[root@localhost ~]# usermod -U wcca [root@localhost ~]# tail -1 /etc/shadow wcca:$6$Sbizxdhy$t2GFCHMC5fLLplDphqDaitLbFNy/wOFLVqAWhTaFBS3Y6b73h5Y3WHcEMCiuTcD8FVCyVyIiwdGwkixFqri5O0:17478:0:99999:7:::
可見 usermod命令鎖定和解鎖用戶,是在shadow密碼位前面添加一個"!",使得密碼失效
7.passwd
passwd - update user‘s authentication tokens更新用戶的認證令牌
格式:passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays] [-S] [--stdin] [username]
常用選項:
-l, --lock:鎖定用戶;
-u, --unlock:解鎖用戶;
--stdin:通過標準輸入接受密碼,可以用於管道;
-d, --delete:刪除用戶的密碼,也可以用於解除用戶鎖定;
-e, --expire:直接設置用戶密碼過期;
-n, --minimum DAYS:用戶密碼的最短使用時長;默認值為0;
-x, --maximum DAYS:用戶密碼的最長使用時長;默認值為99999;
-w, --warning DAYS:用戶密碼過期之前多少天開始發送警告信息;
-i, --inactive DAYS:用戶密碼過期之後的寬限期;
-S, --status:查看用戶密碼的狀態信息;
註意:如果不在passwd後面加任何參數則修改當前用戶的密碼,修改密碼只能通過根用戶修改
[root@localhost ~]# echo 147|passwd --stdin wcca 更改用戶 wcca 的密碼 。 passwd:所有的身份驗證令牌已經成功更新。
[wcca@localhost ~]$ passwd 更改用戶 wcca 的密碼 。 為 wcca 更改 STRESS 密碼。 (當前)UNIX 密碼: 12313passwd: 鑒定令牌操作錯誤
[root@localhost ~]# passwd -l wcca 鎖定用戶 wcca 的密碼 。 passwd: 操作成功 [root@localhost ~]# tail -1 /etc/shadow wcca:!!$6$Sbizxdhy$t2GFCHMC5fLLplDphqDaitLbFNy/wOFLVqAWhTaFBS3Y6b73h5Y3WHcEMCiuTcD8FVCyVyIiwdGwkixFqri5O0:17478:0:99999:7::: [root@localhost ~]# passwd -u wcca 解鎖用戶 wcca 的密碼。 passwd: 操作成功 [root@localhost ~]# tail -1 /etc/shadow wcca:$6$Sbizxdhy$t2GFCHMC5fLLplDphqDaitLbFNy/wOFLVqAWhTaFBS3Y6b73h5Y3WHcEMCiuTcD8FVCyVyIiwdGwkixFqri5O0:17478:0:99999:7:::
passwd與usermod的鎖定相似,在shadow密碼位前加"!!"
8.chage
chage - 更改用戶密碼過期信息
格式:chage [選項] username
常用選項:
-d, --lastday 最近日期 將最近一次密碼設置時間設為“最近日期”
-E, --expiredate 過期日期 將帳戶過期時間設為“過期日期”
-h, --help 顯示此幫助信息並推出
-I, --inactive INACITVE 過期 INACTIVE 天數後,設定密碼為失效狀態
-l, --list 顯示帳戶年齡信息
-m, --mindays 最小天數 將兩次改變密碼之間相距的最小天數設為“最小天數”
-M, --maxdays 最大天數 將兩次改變密碼之間相距的最大天數設為“最大天數”
-R, --root CHROOT_DIR chroot 到的目錄
-W, --warndays 警告天數 將過期警告天數設為“警告天數”
9.chsh :登錄shell
chsh - change your login shell == usermod -s
格式:chsh [-s shell] [-l] [-u] [-v] [username]
[root@localhost ~]# chsh -l /bin/sh /bin/bash /sbin/nologin /usr/bin/sh /usr/bin/bash /usr/sbin/nologin /bin/tcsh /bin/csh [root@localhost ~]# chsh -s/bin/bash Changing shell for root. Shell changed.
10.finger 用戶信息的查看程序
finger — user information lookup program
格式:finger [-lmsp] [user ...] [user@host ...]
11.id
id - print real and effective user and group IDs
格式:id [OPTION]... [USER].0
常用選項:
-u:顯示用戶的有效UID;
-g:顯示用戶的有效GID;
-n:顯示名稱;
uid=0(root) gid=0(root) 組=0(root) 環境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 [root@localhost ~]# id -u 0 [root@localhost ~]# id -g 0
12.su
su - run a command with substitute user and group ID
格式:su [options...] [-] [user [args...]]
常用選項:
-, -l, --login:以後面的用戶身份登錄到系統;
-c "COMMAND":以前面指定的用戶身份運行COMMAND;不進行身份登錄切換
用戶和組