用戶和組的管理
用戶賬戶
組賬戶
權限的分配
Cisco:開發的AAA認證體系:
Authentication:認證,覈實身份是否正確
Authorization:授權,對一直覈實身份的用戶進行資源分配
Accounting:審計,監管資源被使用的情況
多用戶、多任務的系統:
能夠實現資源使用和完成任務的主體是:應用程序進程
安全上下文:secure context
進程是已發起者的身份運行的:可以理解爲,進程的所有者就是發起者;會將發起者的信息標記在進程上
當進程試圖去訪問資源的時候,安全上下文會比對進程的所有者和資源的所有者的關係
首先查看進程的所有者是不是資源的所有者,如果是,就按照屬主的權限使用資源;如果不是,則判斷進程的所有者是否屬於資源所屬組,若果是,按照屬組的權限使用資源;如果不是,則直接使用資源的其他人訪問權限來使用資源
用戶賬戶:就是計算機作者在操作系統中的身份映射;在滿足了認證條件之後的映射
用戶分類:
超級用戶(管理員):root
普通用戶:
系統用戶:爲了保證安全,必須讓那些運行在後臺的進程或者服務類進程以非管理員的身份運行;這類用戶一般不需要登錄到系統
登錄用戶:能夠正常使用整個系統資源的用戶
用戶的標識:
用戶的登錄名稱:爲操作者準備的簡單易記的字符串標識
用戶的ID:
爲計算機系標準的數字標識:
超級用戶:0
系統用戶:
centos5、6:1-499
centos7:1-999
登錄用戶:
centos5、6:500-60000
centos7:1000-60000
60000以上的標識符爲用戶自定義標識
名稱解析:
名字<-->UID
解析庫:/etc/passwd
系統利用解析庫完成認證機制:驗證登錄用戶是否是你聲稱的那個人
認證庫:
用戶的認證信息庫/etc/shadow
組的認證信息庫/etc/group
採用密碼認證機制:
在Linux中,保存到認證庫的密碼信息是經過加密保存的
hash單向加密算法:抽取原始數據的特徵信息,也稱數據指紋
單向加密算法的特徵:
1、只要數據相同,其加密結果必然相同
2、無論數據多大,其加密結果定長輸出
3、雪崩效應
4、不可逆
單向加密常用算法:
1、md5:message digest,消息摘要,128bit定長輸出
2、sha1:Secure Hash Algorithm,安全的哈希算法,160bit定長輸出
3、sha224
4、sha256
5、sha384
6、sha512
salt:隨機數
/dev/random:僅僅只是從熵池中返回隨機數,如果熵池隨機數耗盡,則進程被阻塞
/dev/urandom:先試圖從熵池中返回隨機數,如果熵池耗盡,則利用僞隨機數生成器生成僞隨機數
最終驗證的字符串:算法+sait+密碼在認證庫中存放的信息:$6$salt$crytped_password
用戶組:將具有某些相同或相似屬性的用戶聯繫在一起以便集中授權的容器
組類別:
管理員組:
普通用戶組:
系統組:
登錄組:
組的標識方法:
組名:方便操作者使用的
組的ID:爲系統提供組標識:
管理員組:
系統組:
centos5、6:1-499
centos7:1-999
登錄組:
centos5、6:500-60000
centos7:1000-60000
解析庫:/etc/group
組也需要認證,組也有認證庫:/etc/gpasswd
組也需要密碼保護:
如果組沒有設置密碼保護的話,則不能隨時加入
以用戶爲核心來對組進行分類:
用戶的主要組(基本組):primary group,對於用戶來講,這樣的組必須要有而且只能有一個
用戶的附加組(附屬組,額外組):Addition Group,這樣的組對於用戶來說,可以沒有,也可以有多個
根據組所容納的用戶來分:
私有組:組名與用戶登錄名相同,並且組中只有此用戶
公共組:組中可以包含其他多個不同用戶
注意:默認情況下,用戶的主要組都是其私有組
/etc/passwd
name:password:UID:GID:CECOS:directory:shell
name:登錄名
password:密碼字段,現做在使用了shadow機制的系統中,通常使用“x”作爲佔位符
UID:用戶的ID
GID:此用戶主要組的ID
AGECOS:comment,註釋類的信息,現在一般都會用來存放用戶的說明信息或全名
directory:用戶的家目錄的絕對路徑
shell:用戶的默認登錄shell的絕對路徑
/etc/group
group_name:組名
password:組密碼佔位符,默認爲空
GID:組的ID
user_lsit:以該組爲附加組的用戶的列表
/etc/shadow:
login name:encrypted password:date of last password change:minimum password age:
login name:用戶的登錄名
encrypted password:加密了的密碼
格式:$算法$salt$真正用戶的加密密碼
如果該位置爲!,則表明用戶的密碼被禁用
如果該位置爲*,則表明該用戶爲系統用戶,不能登錄
如果該字段爲空,則表明用戶可以無需輸入密碼即可登錄系統,不推薦使用
date of last password change:
相對時間概念,相對於1970,1,1到最後一次修改密碼的那天的天數
minimum password age:
在多長時間內無法修改密碼,默認值爲0,意即:隨時可以修改密碼,如果是非0的其他數字,意思是在這麼長的天數裏不能修改密碼
maximum password age:
在多長時間後密碼過期,默認爲99999,意思是永久有效
password warning period:
密碼過期之前的友善提醒天數,默認爲7天
password inactivity period:
密碼過期之後的寬限期,默認爲-1,意思是永久寬限期
account expiration date:
一個用戶賬戶密碼過期的日期,這是一個絕對的過期期限,xxxx/xx/xx
reserved field:
保留字段,以備以後使用
/etc/gpasswd:
group_name:encrypted password:administrrators:number
用戶和組的管理:
主要是用命令來完成:
組管理相關的命令:
groupadd:新建組賬戶,添加組
-g:在創建賬戶的時候,指定組賬戶的GID;如果不使用該選項指定,系統會選擇再組解析文件中出現在的不大於60000最大GID+1
-r:創建系統組,意思就是創建一個GID在1-999(1-499)之間的組
groupdel:
groupmod:修改組的相關屬性信息
-g:修改組賬戶的ID,
-n:修改組名
用戶管理相關的命令:
useradd:添加用戶賬戶
/etc/default/useradd
/etc/login.defs
/etc/skel
以上三個文件和目錄能夠幫助管理員在未指定任何選項時,也能創建用戶,併爲用戶賦予默認的屬性
選項:
-c:--comment `COMMENT`:在創建用戶時爲用戶添加註釋信息,一般爲全名
-d:--home /PATH/TO/HOME_DIR:在創建用戶的時候爲用戶指定家目錄的絕對路徑,被指定的目錄應該是實現不存在的目錄
-G:--groups GROUP1[,GROUP2,...[,GROUPN]]:在創建用戶時,爲用戶添加附加組
-g:--gid GROUPNAME:在創建用戶時,爲用戶指定主組
-m:--create-home:在創建用戶時,強制性爲用戶創建家目錄
-M:在創建用戶時,不會創建用戶的家目錄。即使在/etc/login
defs中CREATE_HOME的值爲yes也不創建
-r:--system:創建系統用戶
-u:--uid UID:在創建用戶的時候,爲用戶指定UID,這個UID可以超過60000的限制
-s:--shell /PATH/TO/SHELL:在創建用戶時,爲用戶指定默認shell,使用絕對路徑
-D:--defaults:顯示或修改用戶的默認屬性值
-s:--shell /PATH/TO/SHELL:修改/etc/default/useradd文件中shell的默認值
userdel:刪除用戶賬戶
-r:刪除用戶的同時,刪除用戶的家目錄
usermod:
-c:--comment `COMMENT`:修改用戶的註釋信息
-g:--gid GROUPNAME:修改用戶的主要組
-G:--group GROUP1[,GROUP2,...[,GROUPN]]:修改用戶的附加組爲列表中的組
-a:--append:與-G選項同時使用,給用戶添加新的附加組
-d:--home /PATH/TO/HOME_DIR:修改用戶的家目錄
-m:--move-home:與-d選項同時使用,將舊的家目錄中的數據移動至新家目錄之中
-l:--login NEW_LOGIN:更改用戶賬戶的登錄名
-s:--shell /PATH/TO/SHELL:修改用戶賬戶的登錄shell
-u:--uid UID:修改用戶的UID
-L:--lock:鎖定用戶密碼
-U:--unclock:解鎖用戶密碼
認證管理相關命令:
passwd:設置和查看用戶的密碼信息
passwd [-k] [-l] [-u] [-f] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays] [-S] [--stdin] [username]
1、如果省略用戶名,意味着更改當前登錄用戶的密碼
2、如果指定用戶名,更改指定用戶的密碼,只能root使用
選項:
-l:--lock:鎖定用戶密碼
-u:--unclock:解鎖用戶密碼
相比較usermod -L、-U而言,其優先級更高
如果使用usermod -L鎖定的用戶密碼,可以使用passwd -u解鎖
而是用passwd -l鎖定的用戶密碼,無法使用passmod -U解鎖
-d:--delete:刪除用戶密碼,將/etc/shadow文件中第二字段清空
-S:--status:查看用戶的密碼狀態
--stdin:藉助於管道將輸入數據流當做標準輸入信息送給passwd命令
echo "PASSWORD" | --stdin USERNAME
組認證相關命令:
gpasswd:
選項:
-a:--adduser:向名爲group的組中添加用戶user
-d:--deleyeuser:從名爲group的組中移除用戶user
其他相關管理命令:
chage:
功能:修改帳號和密碼的有效期限
用法:chage[-l][-m mindays][-M maxdays][-I inactive][-E expiredate][-W warndays][-d lastdays]username
參數:
-l:列出用戶的以及密碼的有效期限
-m:修改密碼的最小天數
-M:修改密碼的最大天數
-I:密碼過期後,鎖定帳號的天數
-d:指定密碼最後修改的日期
-E:有效期,0表示立即過期,
-1表示永不過期
-W:密碼過期前,開始警告天數
chsh:
chsh 用於改變用戶的登錄shell.如果沒有在命令行上指定shell,chsh能夠做出提示
-s,--shell指定用戶的登錄shell
-l,--list-shells顯示/etc/shells中的shell列表,然後退出
-u,--help顯示使用方法,然後退出
-v,--version顯示版本信息,然後退出
finger:
finger命令用來查詢一臺主機上的登錄賬號的信息,通常會顯示用戶名、主目錄、停滯時間、登錄時間、登錄Shell等信息,使用權限爲所有用戶。
格式 finger [選項] [使用者] [用戶@主機]
參數
-s:顯示用戶註冊名、實際姓名、終端名稱、寫狀態、停滯時間、登錄時間等信息
-l:除了用-s選項顯示的信息外,還顯示用戶主目錄、登錄Shell、郵件狀態等信息,以及用戶主目錄下的.plan、.project 和.forward文件的內容
-p:除了不顯示.plan文件和.project文件以外,與-l選項相同。
su:切換用戶身份
su USERNAE:部分切換,半切換,再切換用戶的時候,不會重新讀取用戶的配置文件,因此,用戶並沒有登錄行爲,所以,工作環境不初始化
su - USERNAME:登錄式切換,完全切換,再切換用戶的時候,重新讀取目標用戶的配置文件並且初始化工作環境,相當於“su -l USERNAME”
-c:並不會切換用戶身份,而是以目標用戶的身份執行命令
進行用戶切換的時候,不要連續切換,而是用exit命令返回之前的用戶
newgrp GROUPNAME:臨時更改當前用戶的主要組,使用exit返回之前的狀態
id:先是真實有效的用戶和組的ID
真實的ID:在/etc/passwd定義的用戶的UID和GID
有效的ID:當前生效的用戶的UID和GID
選項:
-g:只顯示用戶有效的GID
-u:只顯示用戶有效的UID
-G:顯示用戶所有組的ID
-n:以名稱來代替ID進行顯示