用戶和組的管理linux
系統中,建立用戶和羣組的目的,就是對系統資源進行權限的統一分配管理。比如說,在一個公司內的資源,不一樣級別的在職員工對資源的利用權限須要進行統一分配; 算法
如何避免權限分配後的濫用呢?shell
用戶進行權限使用的時候,都必須遵照Cisco公司開發的AAA認證體系,即:安全
Authentication:認證,覈實身份是否正確app
Authorization: 受權,對已經覈實身份的用戶進行資源分配dom
Accounting: 審計,監管資源被使用的狀況;ide
進行資源認證的必要性最主要來源於計算機系統資源的有限性;在系統中,可以實現資源使用和完成任務的主體是:程序進程;linux做爲一個多用戶、多任務的操做系統,進程是以其發起者的身份運行的:能夠理解爲,進程的全部者就是發起者;在進程上會將發起者標記在進程上;ui
當進程試圖訪問資源的時候,安全上下文會去比對進程的全部者和資源的全部者的關係;加密
首先查看進程的全部者是否是資源的全部者:spa
若是是,就按照屬主的權限使用資源;
若是不是,則判斷進程的全部者是否屬於資源所屬組:
若是是 按照屬組的權限使用資源;
若是不是,則直接進入資源的其餘人訪問權限來使用資源;
所以這裏引出了用戶的概念:
1、用戶
1.用戶帳戶:就是計算機操做者在操做系統中的身份映射;//在知足了認證條件以後的身份映射;
2.分類:
超級用戶(管理員):root
普通用戶:
系統用戶:爲了保證安全,必須讓那些運行在後臺的進程或者服務類進程,以非管理員的身份運行;通常不須要登陸到系統
登陸用戶:可以正常使用整個系統資源的用戶;
3.用戶的標識
1)用戶登陸名稱:爲操做者準備的簡單易記的字符串標識
2)用戶ID:爲計算機系統準備的數字標識;
超級用戶:0;
系統用戶:CentOS 五、6:1-499;CentOS 7:1-999;
登陸用戶:CentOS 五、6:500-60000;CentOS 7:1000-60000 6W+的標識符是用戶自定義的標識;
3)名稱解析:名字<--->UID ; 解析庫:/etc/passwd
系統利用解析庫完成認證機制:即驗證登陸用戶是不是輸入的用戶;
認證庫:
用戶的認證信息庫;/etc/shadow
組的認真信息庫:/etc/group
採用密碼認證機制
設置密碼的通常性策略;
1.儘可能使用隨機字符串做爲密碼;
2.密碼長度不要少於8字符;
3.至少包括:大小寫字母、數字、標點符號四類中的三類;
4.不按期更換密碼;
在linux中,保存到認證庫中的密碼信息是通過加密的方式保存的:
hash單向加密算法;抽取原始數據是特徵信息,數據指紋;
單向加密算法的特徵:
1.只要數據相同,加密結果就必然相同
2.不管數據多大,加密結果定長輸出
3.雪崩(蝴蝶)效應:原始信息修改一丁點,加密後的結果大不一樣
4.不可逆
經常使用的單向加密算法:
md5(Message Digest 5): 128bit定長輸出;
shal(Secure Hash Algorithm) 160bit定長輸出;sha224\256\384\512
salt:隨機數
/dec/random :僅僅只是從熵池中返回隨機數;若是熵池中隨機數耗盡,則進程被阻塞;
/dev/urandom:先試圖從熵池中返回隨機數,若是熵池耗盡,則利用僞隨機數生成器生成僞隨機數;
而最終認證字符串是:算法+salt+密碼
2、羣組
用戶組:能夠將具備某些相同或類似屬性的用戶聯繫在一塊兒以便集中受權的這樣一種容器;
組的類別:
管理員組
普通用戶組:
系統組:
登錄組:
組的標識方法:
組名:方便操做者使用的組的標識
組的ID(GID):爲系統提供組標識
管理員組:0
系統組:CentOS 五、6:1-499;CentOS 7 :1-999;
登錄組:CentOS 五、6:500-60000 CentOS 7:1000-60000;
解析庫:/etc/group 認證庫:/etc/gpasswd
組也須要密碼保護;
若是組沒有設置密碼保護,則不能隨時加入
以用戶爲核心,來對組進行分類:
用戶的主要組(基本組):primary group,對於用戶,這樣的組必需要有且只能有一個;
用戶的附加組(附屬組,額外組):addition group。這樣的組對於用戶來講,能夠沒有,能夠有多個;
根據組所容納的用戶來分:私有組和公共租;
私有組:組名和用戶登陸名相同,而且組中只有此用戶;
公共租:組織能夠包含其餘多個不一樣用戶;
注意:默認狀況下,用戶的主要組都是其私有組;
用戶和組的管理(主要使用命令完成):
組管理相關:
groupadd groupdel groupmems groupmod groups
用戶管理:
useradd userdel usermod userhelper users
認證管理相關:
passwd gpasswd chage
其餘相關管理:
chsh finger su id
/etc/passwd文件:
格式:name:password:UID:GID:GECOS:directory:shell
name:登陸名
password:密碼字段,現使用了shadow機制的系統中,同經常使用"x"做爲佔位符;
UID: 用戶的id
GID:用戶的主要組的id
GECOS:comment,註釋類的信息,如今通常都會用來存放用戶的說明信息或者全名;
directory:用戶的家目錄路徑(通常是絕對路徑);
shell:用戶的默認登陸shell 的絕對路徑
/etc/group文件:
格式: group_name:password:GID:user_list
group_name:組名;
password:組密碼佔位符,默認爲空;
GID:組的ID
user_list:以該組爲附加組的用戶的列表;
/etc/shadow文件:
格式:login name:encrypted password … …
login name:用戶的登陸名;
encrypted password:加密了的密碼
格式: $算法$salt+$真正意義的加密密碼;
若是該位置!,則代表用戶的密碼被禁用;
若是該位置*,則代表該用戶是系統用戶不能登陸
若是該位置爲空:則代表用戶能夠無數如密碼便可登陸,不推薦
date of last password change:
相對時間概念,1970.1.1到最後一次修改密碼的時間
mimimum password age:
在多長時間內沒法修改密碼,默認是0 ,意即 隨時能夠改密碼,
maximum password age:
在多長時間事後密碼過時,默認99999;意爲永久有效;
password warning period:
密碼過時以前的友善提醒天數,默認7天;
password inactivity period
密碼過時以後的寬限期,默認爲-1,意思是永久寬限
Account expiration date:
一個用戶帳戶密碼過時的日期,是一個絕對期限;
reserved field
保留字段,以備之後使用;
/etc/gpasswd
組的管理命令:
1.groupadd:新建組帳戶。
-g gid:在建立組帳戶的時候,指定組帳戶的GID,若是不使用該選項,系統會選擇在組解析文件中出現的不大於60000的最大GID加1;
-r :建立系統組,意思就是建立一個GID在1-999/1-499之間的組;
2.groupmod:修改組的相關屬性信息;
-g gid:修改組ID
-n 修改組名
3.groupdel:刪除組帳戶
注意:若是某個組是某個用戶的主要組或私有組,則該組沒法刪除;
用戶管理命令:
1.useradd:添加用戶帳戶;
/etc/default/useradd
/etc/login.defs
/etc/ske1;
以上三個文件和目錄可以幫助管理員在未指定任何選項時,也能建立用戶,併爲用戶賦予默認的屬性
【選項】
-c,--comment ‘COMMENT’在建立用戶時爲用戶添加註釋信息,通常爲全民
-d,--home /PATH/TO/HOME_DIR:在建立用戶時,爲用戶指定的家目錄的絕對路徑,被指定的目錄應該是實現不存在的目錄;
-g,--gid GROUP :在建立用戶時,爲用戶指定主組;
-G, --groupsGROUP1[,GROUP2,...[,GROUPN]]]:每一個組都用逗號隔開,沒有中間的空格。建立用戶時,爲用戶添加附加組;
-m,--create-home:建立用戶時 ,強制性爲用戶建立家目錄
-M:建立用戶時,不會建立用戶的家目錄,即便在/etc/login.defs裏CREATE_HOME的值爲yes也不建立;
-r,--system :建立系統用戶;
-u,--uid:建立用戶時,爲用戶指定UID,這個UID能夠超過60000;
-s,--shell /PATH/TO/SHELL :建立用戶時,爲用戶指定默認shell;
-D,--default 顯示或修改用戶默認屬性值;
-s,--shell /PATH/TO/SHELL :修改 /etc/default/useradd文件中SHELL的默認值;
2.usermod: 修改用戶帳戶信息:
選項:
-c,--comment 'COMMENT' 修改用戶的註釋信息
-g,--gid GROUPNAME 修改用戶的主要組
-G,--groupsGROUP1[,GROUP2,...[,GROUPN]]]:修改用戶的附加組爲列表中的組(覆蓋)
-a,--append: 與-G選項同時使用,給用戶添加心的附加組;
-d,--homeHOME_DIR :修改用戶的家目錄;
若是給了-m選項,將舊的家目錄的數據移動至新的家目錄中;
-l:更改用戶的登陸名
-s, --shellSHELL:修改用戶的登陸shell
-u, --uidUID 修改uid
-L,--lock 鎖定用戶密碼
-U,--unlock 解鎖用戶密碼;
3.userdel:刪除用戶帳戶
-r, --remove
用戶主目錄中的文件將隨用戶主目錄和用戶郵箱一塊兒刪除。在其它文件系統中的文件必須手動搜索並刪除。
用戶認證相關:
1.passwd:設置和查看用戶的口令信息-密碼;
passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays] [-S] [--stdin] [username]
若是省略用戶名,意味着修改當前登陸用戶的密碼;若是指定用戶名,更改指定用戶的密碼,且只能root使用;
【選項】:
-l,--lock
-u,--unlock
相比較usermod裏的-L -U 其優先級更高
若是使用usermod -L鎖定的用戶密碼,能夠用passwd -u解鎖
而使用passwd -l鎖定的用戶密碼,不能夠用usermod -U解鎖;
-d,--delete :刪除用戶密碼,將/etc/shadow文件中的第二字段清空~!
-S,--status :查看用戶密碼的狀態
--stdin :藉助管道,將輸入數據流看成標準輸入信息送給passwd命令
echo "PASSWORD" |passwd --stdin USERNAME
組認證相關:
gpasswd:
gpasswd 【選項】 groupname
-a,--adduser 向名爲group的組中添加用戶
-d,--deleteuser 從名爲 group 的組中移除用戶 user。
其餘命令:
su : 切換用戶身份;
su USERNAME
部分切換,半切換;即切換用戶時,不會從新讀取目標用戶的配置文件,所以用戶並無登錄行爲,因此工做環境不初始化;
su - USERNAME == su -l USERNAME
登陸式切換,徹底切換;即切換用戶時,會從新讀取目標用戶的配置文件,而且初始化工做環境;
-c:並不會切換用戶身份,而是以目標用戶的身份執行某命令
用su命令從root切換至普通用戶時,無需密碼;反過來,就必須給出目標用戶的正確密碼不然切換失敗;
進行切換後不要連續切換,而是要用exit命令返回以前的用戶;
newgrp:臨時更改當前登陸用戶的主要組;exit返回以前的狀態;
id:顯示真實的有效的用戶和組的ID;
所謂真實的:就是在/etc/passwd定義的用戶的UID&GID
所謂有效的:就是指當前生效的用戶的UID&GID
【選項】
-u,--user,只顯示用戶的有效的uid
-g, 只顯示用戶的gid
-G 顯示用戶的全部組的gid
-n 顯示用戶和組的名字而不是id號