用戶和組的管理
Linux系統是一個多用戶操作系統.任何一個受使用系統資源的用戶.都必須首先向系統管理員申請一個賬號,然後以這個賬號的身份進入系統。用戶賬號一方面可以幫助系統管理員對使用系統的用戶進行跟蹤,並控制他們對系統資源的訪問,另一方面也可以幫助用戶組織文件.併爲用戶提供安全性保護;實現用戶賬號管理主要有用戶賬號添加、刪除與修改.以及用戶口令的管理和用戶組的管理等工作。
下面我們列出Linux系統裏用戶和組的定義以及進行用戶和組的管理操作時所用到的一些命令:
Cisco開發的AAA認證體系:
Authentication:認證,覈實身份是否正確。
Authorization:授權,對已經覈實身份的用戶進行資源分配。
Accounting:審計,監管資源被使用情況。
多用戶,多任務的系統:
能夠實現資源使用和完成任務的主體是:應用程序進程
安全上下文:secure context
進程是以其發起者的身份來運行的:可理解爲,進程的所有者就是發起者,會將發起者的信息標誌在進程上。
當進程試圖訪問資源時,安全上下文會比對進程的所有者和資源者的所有者的關係。首先查看進程的所有者是不是資源的所有者,如果是,就按照屬主的權限使用資源,如果不是,則判斷進程的所有者是否屬於資源所屬組,如果是,按照屬組的權限使用資源。
如果不是,則直接使用資源的其他人訪問權限來使用資源。
用戶賬戶:就是計算機操作者在操作系統中的身份映射;在滿足了認證條件之後的身份映射;
用戶分類:
超級用戶(管理員):root
普通用戶:
系統用戶:爲了保證安全,必須讓那些運行在後臺的進程或服務類進程以非管理員的身份運行。 這類用戶一般不需要登錄到系統。
登錄用戶:能夠正常使用整個系統資源的用戶
用戶的標識:
用戶登錄名稱:爲操作者準備的簡單易記的字符串標識。
用戶的ID:爲計算機系統準備的數字標識。
超級用戶:ID號0
系統用戶:
Centos5、6:1~499
Centos7:1~999
登錄用戶:
Centos5、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進行顯示