用戶和組的管理算法
Linux系統是一個多用戶操做系統.任何一個受使用系統資源的用戶.都必須首先向系統管理員申請一個帳號,而後以這個帳號的身份進入系統。用戶帳號一方面能夠幫助系統管理員對使用系統的用戶進行跟蹤,並控制他們對系統資源的訪問,另外一方面也能夠幫助用戶組織文件.併爲用戶提供安全性保護;實現用戶帳號管理主要有用戶帳號添加、刪除與修改.以及用戶口令的管理和用戶組的管理等工做。shell
下面咱們列出Linux系統裏用戶和組的定義以及進行用戶和組的管理操做時所用到的一些命令:安全
Cisco開發的AAA認證體系:app
Authentication:認證,覈實身份是否正確。dom
Authorization:受權,對已經覈實身份的用戶進行資源分配。ide
Accounting:審計,監管資源被使用狀況。ui
多用戶,多任務的系統:加密
可以實現資源使用和完成任務的主體是:應用程序進程spa
安全上下文:secure context操作系統
進程是以其發起者的身份來運行的:可理解爲,進程的全部者就是發起者,會將發起者的信息標誌在進程上。
當進程試圖訪問資源時,安全上下文會比對進程的全部者和資源者的全部者的關係。首先查看進程的全部者是否是資源的全部者,若是是,就按照屬主的權限使用資源,若是不是,則判斷進程的全部者是否屬於資源所屬組,若是是,按照屬組的權限使用資源。
若是不是,則直接使用資源的其餘人訪問權限來使用資源。
用戶帳戶:就是計算機操做者在操做系統中的身份映射;在知足了認證條件以後的身份映射;
用戶分類:
超級用戶(管理員):root
普通用戶:
系統用戶:爲了保證安全,必須讓那些運行在後臺的進程或服務類進程以非管理員的身份運行。 這類用戶通常不須要登陸到系統。
登陸用戶:可以正常使用整個系統資源的用戶
用戶的標識:
用戶登陸名稱:爲操做者準備的簡單易記的字符串標識。
用戶的ID:爲計算機系統準備的數字標識。
超級用戶:ID號0
系統用戶:
Centos五、6:1~499
Centos7:1~999
登陸用戶:
Centos五、6:500~60000
Centos7:1000~60000
60000+的標識符爲自定義標識。
名稱解析:名字<-->ID
解析庫: /etc/passwd
系統利用解析庫完成認證機構、;驗證登陸用戶是不是你聲稱的那我的。
認證庫:
用戶的認證信息庫:/etc/shadow
組的認證信息庫:/etc/group
採用密碼認證的機制:
設置密碼的通常性策略:
1.儘可能使用隨機字串做爲密碼;
2.密碼的長度不要少於8字符;
3.密碼中儘可能包括大寫字母、小寫字母、數字和標點符號四類字符中的三類;
4.不按期更換,每隔一段時間換一個密碼 推薦42天內改密碼
在Linux中,保存到認證庫中的密碼信息是通過加密保存的。
hash單向加密算法:抽象原始數據的特徵信息,數據指紋;
單向加密算法的特徵:
1.只要數據相同,其加密結果就必然相同。
2.不管數據多大,其加密結果定長輸出。
3.雪崩效應.
4.不可逆
單向加密經常使用的算法:
1.md5:message digest ,消息摘要,128bit定長輸出;
2.sha1:安全的哈希算法,160bit定長輸出;
3.sha224
4.sha256
5.sha384
6.sha512
salt:隨機數
/dev/random:僅僅只是從熵池中返回隨機數,若是熵池隨機數耗盡則進程被阻塞。
/dev/urandom:先試圖從熵池中返回隨機數,
若是熵池耗盡,則利用僞隨機數生成器生產僞隨機數。
最終驗證字符串:算法+salt+密碼
在認證庫中存放的信息:$6$salt$cryped_password
用戶組:將具備某些相同或類似屬性的用戶聯繫在一塊兒以便集中受權的容器;
組類別:
管理員組:
普通用戶組:
系統組:
登陸組;
組的標識方法:
組名:方便操做者使用可以的;
組的ID(GID):爲系統提供組標識;
管理員組:0
系統組:Centos5/6:1~499 Centos7:1~999
登陸組:Centos5/6:500~60000 Centos7:1000~60000
解析庫: /etc/group
組也須要認證,組也有認證庫:/etc/gpasswd
組也須要密碼保護:
若是組沒有設置密碼保護的話,則不能隨時加入;
以用戶爲核心來對組進行分類;
用戶的主要組(基本組):primary group ,對於用戶來講這樣的組必需要有並且只能有一個。
用戶的附加組(附屬組,額外組):Addition Group ,這樣的組對於用戶來講,能夠沒有,也能夠有多個。
根據組所容納的用戶來分:
私有組:組名與用戶登陸名相同,而且組中只有此用戶;
公共組:組中能夠包含其餘多個不一樣用戶
注意:默認狀況下,用戶的主要組都是其私有組;
用戶和組的管理:
主要使用命令來完成:
組管理相關的命令:
groupadd 、 groupdel 、 groupmod
用戶管理相關的命令:
useradd 、 userdel 、 usermod
認證管理相關的命令:
passwd 、 gpasswd 、 chage
其餘的相關管理命令:
chsh 、 finger 、 su 、 id
兩個解析庫: /etc/passwd、、/etc/group
兩個認證庫;/etc/shatow 、 /etc/gshadow
/etc/passwd:
name:password:UID:GID:GECOS:directory:shell
name:登陸名
passwd:密碼字段,現作在使用了shadow機制的系統中,一般使用「x」做爲佔位符;
UID:用戶的ID
GECOS:comment,註釋類的信息,如今通常都會用來存放用戶的說明信息或全名;
shell:用戶的默認登陸shell的絕對路徑。
/etc/group:
group_name:password:GID:user_list
group_name:組名
password:組密碼佔位符,默認爲空
GID:組的ID
user_lsit:以改組爲附加組的用戶的列表
/etc/shadow:
login name:encrypted password: date of last password change:minimum password age:maximum password age:password warning period:password inactivity period:account expiration date:reserved field:
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:administrators:members
組管理命令:
groupadd:新建組帳戶,添加組;
-g gid:在建立組帳戶的時候,指定組帳戶的GID;若是不使用該選項指定,系統會選擇在組解析文件中出如今的不大於60000最大GID加1.。
-r:建立系統組;意思就是建立一個GID在1~999(1~499)之間的組;
groupmod:修改組的相關屬性信息;
groupmod 【選項】GROUP
-g gid :修改組帳戶的ID;
-n NEW_GROUPNAME:修改組名;
groupdel:刪除組帳戶
groupdel 【選項】GROUPNAME
注意:若是某個組是某個用戶主要組或私有組,則該組沒法刪除;
用戶管理的命令:
useradd:添加用戶帳戶
useradd【選項】登陸名
/etc/default/useradd
/etc/login.defs
/etc/skel
以上三個文件和目錄可以幫助管理員在未指定任何選項時,也能建立用戶,併爲用戶賦予默認的屬性;
選項:
-c,--comment:在建立用戶時爲用戶添加註釋信息,通常爲全名。。
-d,--home/PATH/TO/HOME_DIR:在建立用戶的時候爲用戶指定家目錄的絕對路徑,被指定的目錄應該是事先不存在的目錄。。
-g,--gid GROUPNAME:咋子建立用戶時,爲用戶指定主組。
-G,--groups GROUP1[,GROUP2...N]:在建立用戶時,爲用戶添加附加組;
-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的默認值
usermod:修改用戶帳戶信息
usermod【選項】登陸名
選項:
-c,--comment 「COMMENT」修改用戶的註釋信息;
-g,--gid GROUPNAME:修改用戶的主要組;
-G,--groups GROUP1[,GROUP......n]:修改用戶的附加組爲列表中的組;
-a,--append:與-G選項同時使用,給用戶添加新的附加組;
-d,--home/PATH/TO/HOME_DIR:修改用戶的家目錄;;
-m,--move 與-d選項同時使用,將舊的家目錄中的數據移動至新家目錄之中
-l:--login NEW_LOGIN:更改用戶帳戶的登陸名
-s:--shell /PATH/TO/SHELL:修改用戶帳戶的登陸shell
-u:--uid UID:修改用戶的UID
-L:--lock:鎖定用戶密碼
-U:--unclock:解鎖用戶密碼
用戶認證相關命令:
passwd:設置和查看用戶的密碼信息;
passwd [-k] [-l] .....................
1.若是省略用戶名,意味着更改當前登錄用戶的密碼;
2.若是指定用戶名,更改指定用戶的密碼,只能root使用;
選項;
-l, --lock:鎖定用戶密碼;
-u,--unlock:解鎖用戶密碼;
相比較usermod -L|-U而言,其優先級更高;
若是使用usermod -L鎖定的用戶密碼,可使用usermod -U解鎖;
而使用passwd -l鎖定的用戶密碼,沒法使用usermod -U解鎖;
-d,--delete:刪除用戶密碼,將/etc/shadow文件中的第二段清空;
-S,--status:查看用戶的密碼狀態;
--stdin:藉助於管道將輸入數據流當作標準輸入信息送給passwd命令;
echo「PASSWORD」|passwd --stdin USERNAME
組認證相關命令:
gpasswd[選項] groupname
選項:
-a,--adduser:向名爲group的組中添加用戶user。
-d,--deleteuser:從名爲group的組中移除用戶user。
其餘命令:
su:切換用戶身份
su USERNAME:
部分切換,半切換;在切換用戶的時候,不會從新讀取目標用戶的配置文件,所以,用戶並無登陸行爲,因此,工做環境不初始化。
su - USERNAME:
登陸式切換,徹底切換,在切換用戶的時候,從新獲取目標用戶的配置文件而且初始化工做環境;至關於su -l USERMANE
-c COMMAND:並不會切換用戶身份,而是以目標用戶的身份執行某命令;
使用su命令的時候,從root切換到其餘普通用戶
id:先是真實有效的用戶和組的ID
真實的ID:在/etc/passwd定義的用戶的UID和GID
有效的ID:當前生效的用戶的UID和GID
選項:
-g:只顯示用戶有效的GID
-u:只顯示用戶有效的UID
-G:顯示用戶全部組的ID
-n:以名稱來代替ID進行顯示