詳解用戶,組,權限管理
M21-陸東貴
測試環境:CentOS 7.2
內容介紹:
我們要使用操作系統進行工作,就需要人機交互操作,這時候計算機就需要創建用戶,通過用戶來實現操作,而且隨著用戶的增加需要給用戶分組,這時候就需要對文件進行權限管理。
需要使用的工具:
用戶相關工具:useradd; userdel; usermod;id;su等;
組相關工具:groupadd; groupdel; groupmod等;
權限管理工具:chmod; chown; chgrp;umask等;
一、用戶類別:
管理員:root,管理員用戶標識UID:0
普通用戶:(系統用戶和登錄用戶)用戶標識UID:1-65535
系統用戶:用戶標識UID:1-999
登錄用戶:用戶標識UID:1000-60000
二、組類別:
1、組類別1:管理員組; 普通用戶組(系統組,登錄組)
組標識GID與用戶標識UID的數據一致,這里多介紹;
2、組類別2:用戶的基本組;用戶的附加組;
3、組類別3:
私有組:組名同用戶名,且只包含一個用戶;
公共組:組內包含了多個用戶;
三、密碼認證信息:通過比對事先存儲的與登錄時提供的信息是否一致;
密碼:password; /etc/shadow存放用戶密碼信息;/etc/gshadow存放組密碼;
(一)密碼使用策略 :
1、使用隨機密碼;2、最短長度不低于8位;3、建議使用大寫字母、小寫字母、數字和標點符號四類中的至少三類;4、定期更換;
(二)加密算法:
1、對稱加密:加密和解密使用同一個密碼;
2、非對稱加密:加密和解密使用的是一對秘鑰;(公鑰 — public key; 私鑰– private key)
3、單向加密:只能加密,不能解密,提取數據特征碼;
4、算法 : md5; sha1; sha224; sha256; sha384; sha512
四、用戶信息庫及用戶密碼信息庫詳解;
(一)、用戶信息庫:/etc/passwd;
name:password:UID:GID:GECOS:directory:shell
name: 用戶名;
password: 可以是加密的密碼,也可以是占位符;
UID:用戶標識;root為0;系統用戶為1-999;普通用戶為1000-60000
GID:用戶所屬的主組的ID號;
GECOS:注釋信息;
Directory:用戶的家目錄;
Shell: 用戶的默認shell,登錄時默認的shell程序;
(二)、用戶密碼信息:
第一字段:登錄名,必須是有效的賬戶名,且已經存在于系統中;
第二字段:加密了的密碼;
密碼分三部分,由$分隔;例如:$6$Z48cQG6P$RMmzMjp63eSz3vA8
$6$:6代表加密算法–sha512(1代表md5;2代表sha1等)
$Z48cQG6P$: Z48cQG6P代表添加的隨機數
第三個$后的內容:就是加密后秘串
第三字段:最后一次更改密碼的日期;
第四字段:密碼的最短使用時間;
第五字段:密碼的最長使用期限;
第六字段:密碼警告時間段;
第七字段:密碼禁用期;
第八字段:賬戶過期日期;
第九字段:保留字段;
五、linux用戶和組管理的常用工具的使用方法;
(一)組管理相關工具;
1、groupadd命令:創建組;
使用方法:groupadd [選項] group
選項:-g GID :指定GID;
-r: 創建系統組;
2、groupmod命令:修改組屬性;
用法:groupmod [選項] GTOUP
選項:-g GID: 修改GID;
-n new_name: 修改組名;
示例:修改lufei3組的id號為1001
3、groupdel命令:刪除組;
(二)、用戶相關工具;
1、useradd命令:創建一個新用戶或更新默認新用戶信息
用法:useradd [選項] 登錄
選項:-u: 指定UID
-g: 指定基本組ID,此組要事先存在;
-c: 指明注釋信息,注釋信息要用””括起來;
-G GROUP1 [,GROUP2,]]: 指明用戶所屬的附加組,多個組之間用,分隔;
-d: 指定路徑為用戶的家目錄;
-s: 指定用戶的默認shell;
-r: 創建一個系統用戶;
-m: 如果用戶的家目錄不存在,則創建家目錄;
-M: 不創建用戶家目錄;
-f: 密碼過期后,賬戶被徹底禁用之前的天數;
示例1:創建一個用戶名為lufei1,UID為1005,GID為1000,注釋信息“user is”,登錄shell: 、/bin/shell;
示例2:創建一個用戶名為lufei2,主組默認,附加組為lufei和gdm ,家目錄為:/tmp/home/
示例3:創建一個系統用戶lufei3,無需家目錄,無需登錄shell;
2、usermod命令:修改一個用戶的賬戶;
用法:usermod [選項] 登錄
選項:-u: 修改用戶的ID為此處指定的新UID;
-g: 修改用戶所屬的基本組;
-G: 修改用戶所屬的附加組;
-a: 將用戶追加到新的附加組,只能和-G一起使用;
-c: 修改注釋信息;
-d: 修改用戶的家目錄,用戶原來的文件不會轉移至新的位置;
-m: 用于將原來家目錄內容移動到新的位置,只能和-d一起使用;
-l: 修改用戶名;
-s: 修改用戶的默認shell;
-L , -U: 鎖定和解鎖用戶密碼;在用戶原來的密碼字符串之前添加一個“!”;
示例1:修改用戶lufei2 的UID為1002(原先為1006),組ID為1000(原先為1006),追加附加組為1001;添加注釋信息為:my name is;修改其家目錄為/home/lufei3;
3、userdel命令:刪除用戶賬戶和相關文件;
用法:userdel [選項] 登錄名
選項:-r: 刪除用戶一并刪除其家目錄;
(三)、密碼相關工具詳解;
1、passwd命令:
用法:passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays] [-S] [–stdin] [username]
(1)、passwd: 修改用戶自己的密碼;
(2)、passwd username: 修改指定用戶的密碼;
選項:-l, -u: 加密和解密用戶密碼;
-d: 清除用戶密碼串;
-d: 清除用戶密碼串;
-e DATE: 過期期限,日期;
-i DAYS: 非活動期限;
-n DAYS: 密碼的最短使用期限;
-x days: 密碼的最長使用期限;
-w days: 警告期限;
–stdin: 用法:echo “password”|passwd –stdin username;直接修改密碼無需交互;
示例:給用戶添加密碼的兩種方式:交互式和非交互式
2、gpasswd命令:給組添加密碼;用法:gpasswd [選項] group;
選項:-a username: 向組中添加用戶;
-d username: 從組中移除用戶;
3、newgro命令:臨時切換指定組為基本組;
用法:newgrp [-] [group]
-: 會模擬用戶重新登錄以實現重新初始化其工作環境;
4、chage命令:更改用戶密碼過期信息;用法:chage [選項] 登錄名
選項:-l:列出用戶的以及密碼的有效期限
-m:修改密碼的最小天數
-M:修改密碼的最大天數
-I:密碼過期后,鎖定帳號的天數
-d:指定密碼最后修改的日期
-E:賬戶過期時間,0表示立即過期,-1表示永不過期
-W:密碼過期前,開始警告天數
示例:
5、id命令:顯示用戶的真實和有效的ID
用法:id [option]…[username]
選項:-u: 僅顯示有效的UID;
-g: 僅顯示用戶的基本組ID;
-G: 僅顯示用戶所屬的所有組的ID;
-n: 顯示名字而非ID;
6、su 命令:切換用戶
登錄式切換:會通過讀取目標用戶的配置文件來重新初始化;
su – username 或 su -l username
非登錄式切換:不會讀取目標用的配置文件進程初始化;
su username
注意:管理員可無密碼切換至其他任何用戶;
六、權限管理:
使用ls –l 查看一個文件的長格式時;在最左側有一串字符,
例如:rwxrwxrwx:
左三位:定義user(owner)的權限;
中三位:定義group的權限;
右三位:定義other的權限;
(一),三位權限位對應文件和目錄的意義;
1、文件:
r: read: 可獲取文件的數據;
w: write: 可修改文件的數據;
x: excute: 可將此文件運行為進程;
2、目錄:
r: 可使用ls命令獲取其下的所有文件列表;
w: 可修改此目錄下的文件列表;即創建或刪除文件;
-x: 可cd至此目錄中,且可使用ls –l來獲取所有文件的詳細屬性信息;
3、進程對文件的訪問權限應用模型:進程的屬主與文件的屬主是否相同;如果相同,則應用屬主權限;否則,則檢查進程的屬主是否屬于文件屬組,如果是,則應用屬組權限;否則,就只能應用other的權限;
4、權限的組合機制:
字符標識方法: — –x -w- -wx r– r-x rw- rwx
二進制標識方法: 000 001 010 011 100 101 110 111
八進制標識方法: 0 1 2 3 4 5 6 7
可以簡單認為 r=4; w=2; x=1; 所以在修改權限時就可以使用數字修改,更直觀;
例如:rwxr-xr-x = 755;說明:左三位rwx權限相加4+2+1=7;
中三位r-x權限相加4+0+1=5;
右三位r-x權限相加4+0+1=5;
(二)、權限管理命令:
1、命令說明:chmod命令:權限管理;
使用語法:
chmod [OPTION]… MODE[,MODE]… FILE…
chmod [OPTION]… OCTAL-MODE FILE…
chmod [OPTION]… –reference=RFILE FILE…
選項:
-R:遞歸修改,一般只和授權表示法一起使用;
三類用戶:
u: 屬主; g: 屬組;o: 其他人; a: 所有
(1),第一種語法使用方法:
chmod [OPTION]… MODE[,MODE]… FILE…
賦權表示法:u= ; g= ; o = ; a= ;
權限相同可以一起寫
權限不相同,只能分開寫,要用,分隔開;
示例:
授權表示法:直接操作一類用戶的一個權限位r, w, x;
u+, u-; g+, g-; o+, o-; a+, a-;
示例:
(2)、第二種語法使用方法:
chmod [OPTION]… OCTAL-MODE FILE…
八進制權限位法:
示例:
(3)、第三種語法使用方法:
chmod [OPTION]… –reference=RFILE FILE…
參考一個文件來修改另一個文件,應用型修改;
示例:
2、chown命令:修改文件的屬主和屬組;
語法格式:
chown [OPTION]… [OWNER][:[GROUP]] FILE… 常用方法
chown [OPTION]… –reference=RFILE FILE…
示例:
3、chgrp命令:和chown用法相同,這里不再多解釋;
4、umask命令:文件的權限反向掩碼,這掩碼:默認是022;
文件:666-umask
目錄:777-umask
注意:之所以文件用666去減,表示文件默認不能擁有執行權限;如果減的結果又執行權限,則需要將其加1;
umask:023
666-023=644
777-023=754
umask: 查看當前umask;
umask MASK: 設置umask;
注意:此類設定僅對當前shell進程有效;
七、linux系統上的特殊權限:SUID, SGID ,STICKY
安全上下文:
(1)、進程以某用戶的身份運行,進程是發起此進程用戶的代理,因此以此用戶的身份和權限完成所有操作;
(2)、權限匹配模型:
a、判斷進程的屬主,是否為被訪問文件的屬主,如果是,則應用屬主的權限;否則進入第二步;
b、判斷進程的屬主,是否屬于被訪問文件的屬組;如果是,則應用屬組的權限;否則進入第三步;
c、應用other權限
SUID:
默認情況下,用戶發起的進程,進程的屬主是其發起者;因此,其以發起者的身份運行;(注意:這時的文件的屬主和進程的屬主是兩回事,不是相同的)
SUID的功用:用戶運行某程序時,如果此程序擁有SUID權限,那么程序運行為進程時,進程的屬主不是發起者,而是程序文件自己屬主;
管理文件的SUID 權限:chmod u+ | -s file…
展示位置:屬主的執行權限位
如果屬主原本有執行權限,顯示為小寫s; 否則,顯示為大寫S;
SGID:
功用:當目錄屬組有寫權限,且有SGID權限時,那么所有屬于此目錄的屬組,且以屬組身份在此目錄中新建文件或目錄時,新文件的屬組不是用戶的基本組而是此目錄的屬組
管理文件的SGID權限:chmod g+| -s file…
展示位置:屬組的執行權限位
如果屬組原本有執行權限,顯示為小寫s; 否則,顯示為S;
Sticky:
功用:對于屬組或全局可寫的目錄,組內的所有用戶或系統上的所有用戶對在此目錄中都能創建新文件或刪除所有的已有文件,如果為此類用戶設置的sticky權限,則每個用戶可以創建文件,無法刪除或修改其他用戶創建的文件,只能刪除或修改自己創建的文件;
管理文件sticky權限:chmod o+ | -t file…
展示位置:其他用戶的執行權限位
如果其他用戶原本有執行權限,顯示為小寫t; 否則,顯示為大寫T;
系統上的/tmp和/var/tmp目錄默認均有sticky權限;
原創文章,作者:陸 東貴,如若轉載,請注明出處:http://www.www58058.com/54328