1. 程式人生 > >用戶組和權限管理的說明

用戶組和權限管理的說明

用戶密碼 冒號 gpa shadow文件 創建組 讀取 執行命令 屬性 ems

用戶、組和權限

用戶user

?令牌token,identity
?Linux用戶:Username/UID
?管理員:root, 0
?普通用戶:1-60000 自動分配
系統用戶:1-499, 1-999 (CentOS7)
對守護進程獲取資源進行權限分配
登錄用戶:500+, 1000+(CentOS7)
交互式登錄

組group

?Linux組:Groupname/GID
?管理員組:root, 0
?普通組:
系統組:1-499, 1-999(CENTOS7)
普通組:500+, 1000+(CENTOS7)
組的類別

?Linux組的類別

用戶的主要組(primary group)
用戶必須屬於一個且只有一個主組

組名同用戶名,且僅包含一個用戶,私有組
用戶的附加組(supplementary group)
一個用戶可以屬於零個或多個輔助組

用戶和組的配置文件

?Linux用戶和組的主要配置文件:
/etc/passwd:用戶及其屬性信息(名稱、UID、主組ID等)
/etc/group:組及其屬性信息
/etc/shadow:用戶密碼及其相關屬性
/etc/gshadow:組密碼及其相關屬性

passwd文件格式

?login name:登錄用名(wang)
?passwd:密碼 (x)
?UID:用戶身份編號 (1000)
?GID:登錄默認所在組編號 (1000)
?GECOS:用戶全名或註釋
?home directory:用戶主目錄 (/home/wang)

?shell:用戶默認使用shell (/bin/bash)

shadow文件格式

?登錄用名
?用戶密碼:一般用sha512加密
?從1970年1月1日起到密碼最近一次被更改的時間
?密碼再過幾天可以被變更(0表示隨時可被變更)
?密碼再過幾天必須被變更(99999表示永不過期)
?密碼過期前幾天系統提醒用戶(默認為一周)
?密碼過期幾天後帳號會被鎖定
?從1970年1月1日算起,多少天後帳號失效

密碼加密

?加密機制:
加密:明文--> 密文
解密:密文--> 明文
?單向加密:哈希算法,原文不同,密文必不同
相同算法定長輸出,獲得密文不可逆推出原始數據
雪崩效應:初始條件的微小改變,引起結果的巨大改變

md5: message digest, 128bits
sha1: secure hash algorithm, 160bits
sha224: 224bits
sha256: 256bits
sha384: 384bits
sha512: 512bits
?更改加密算法:
authconfig --passalgo=sha256 --update
密碼的復雜性策略
?足夠長
?使用數字、大寫字母、小寫字母及特殊字符中至少3種
?使用隨機密碼
?定期更換,不要使用最近曾經使用過的密碼
group文件格式
?群組名稱:就是群組名稱
?群組密碼:通常不需要設定,密碼是被記錄在 /etc/gshadow
?GID:就是群組的 ID
?以當前組為附加組的用戶列表(分隔符為逗號)
gshdow文件格式
?群組名稱:就是群的名稱
?群組密碼:
?組管理員列表:組管理員的列表,更改組密碼和成員
?以當前組為附加組的用戶列表:多個用戶間用逗號分隔

用戶創建:useradd

?useradd [options] LOGIN
-u UID
-o 配合-u 選項,不檢查UID的唯一性
-g GID 指明用戶所屬基本組,可為組名,也可以GID
-c "COMMENT“ 用戶的註釋信息
-d HOME_DIR 以指定的路徑(不存在)為家目錄
-s SHELL 指明用戶的默認shell程序,可用列表在/etc/shells文件中
-G GROUP1[,GROUP2,...] 為用戶指明附加組,組須事先存在
-N 不創建私用組做主組,使用users組做主組
-r 創建系統用戶 CentOS 6: ID<500,CentOS 7: ID<1000
-m 創建家目錄,用於系統用戶
-M 不創建家目錄,用於非系統用戶

創建用戶: useradd

?默認值設定:/etc/default/useradd
?顯示或更改默認設置
useradd -D
useradd –D -s SHELL
useradd –D –b BASE_DIR
useradd –D –g GROUP

新建用戶的相關文件和命令

?/etc/default/useradd
?/etc/skel/*
?/etc/login.defs
?newusers passwd格式文件 批量創建用戶
?chpasswd 批量修改用戶口令

用戶屬性修改

?usermod [OPTION] login
-u UID: 新UID
-g GID: 新主組
-G GROUP1[,GROUP2,...[,GROUPN]]]:新附加組,原來的附加組將會被
覆蓋;若保留原有,則要同時使用-a選項
-s SHELL:新的默認SHELL
-c ‘COMMENT‘:新的註釋信息
-d HOME: 新家目錄不會自動創建;若要創建新家目錄並移動原家數據,
同時使用-m選項
-l login_name: 新的名字
-L: lock指定用戶,在/etc/shadow 密碼欄的增加 !
-U: unlock指定用戶,將 /etc/shadow 密碼欄的 ! 拿掉
-e YYYY-MM-DD: 指明用戶賬號過期日期
-f INACTIVE: 設定非活動期限

刪除用戶

?userdel [OPTION]... login
-r: 刪除用戶家目錄

查看用戶相關的ID信息

?id [OPTION]... [USER]
-u: 顯示UID
-g: 顯示GID
-G: 顯示用戶所屬的組的ID
-n: 顯示名稱,需配合ugG使用

切換用戶或以其他用戶身份執行命令

?su [options...] [-] [user [args...]]
?切換用戶的方式:
su UserName:非登錄式切換,即不會讀取目標用戶的配置文件,不改變
當前工作目錄
su - UserName:登錄式切換,會讀取目標用戶的配置文件,切換至家目
錄,完全切換
?root su至其他用戶無須密碼;非root用戶切換時需要密碼
?換個身份執行命令:
su [-] UserName -c ‘COMMAND‘
?選項:-l --login
su -l UserName 相當於 su - UserName

設置密碼

?passwd [OPTIONS] UserName: 修改指定用戶的密碼
?常用選項:
-d:刪除指定用戶密碼
-l:鎖定指定用戶
-u:解鎖指定用戶
-e:強制用戶下次登錄修改密碼
-f:強制操作
-n mindays:指定最短使用期限
-x maxdays:最大使用期限
-w warndays:提前多少天開始警告
-i inactivedays:非活動期限
--stdin:從標準輸入接收用戶密碼
示例:echo "PASSWORD" | passwd --stdin USERNAME

修改用戶密碼策略

?chage [OPTION]... LOGIN
-d LAST_DAY
-E --expiredate EXPIRE_DATE
-I --inactive INACTIVE
-m --mindays MIN_DAYS
-M --maxdays MAX_DAYS
-W --warndays WARN_DAYS
-l 顯示密碼策略
?示例:
chage -d 0 tom 下一次登錄強制重設密碼
chage -m 0 –M 42 –W 14 –I 7 tom
chage -E 2016-09-10 tom

創建組

?groupadd [OPTION]... group_name
-g GID 指明GID號;[GID_MIN, GID_MAX]
-r 創建系統組
CentOS 6: ID<500
CentOS 7: ID<1000

修改和刪除組

?組屬性修改:groupmod
groupmod [OPTION]... group
-n group_name: 新名字
-g GID: 新的GID

?組刪除:groupdel
groupdel GROUP

更改組密碼

?組密碼:gpasswd
?gpasswd [OPTION] GROUP
-a user 將user添加至指定組中
-d user 從指定組中移除用戶user
-A user1,user2,... 設置有管理權限的用戶列表
?newgrp命令:臨時切換主組
如果用戶本不屬於此組,則需要組密碼

更改和查看組成員

?groupmems [options] [action]
options:
-g, --group groupname 更改為指定組 (只有root)
Actions:
-a, --add username 指定用戶加入組
-d, --delete username 從組中刪除用戶
-p, --purge 從組中清除所有成員
-l, --list 顯示組成員列表
?groups [OPTION].[USERNAME]... 查看用戶所屬組列表

修改文件的屬主和屬組

?修改文件的屬主:chown
chown [OPTION]... [OWNER][:[GROUP]] FILE...
用法說明:
OWNER
OWNER:GROUP
:GROUP,冒號也可用 . 替換
-R: 遞歸
chown [OPTION]... --reference=RFILE FILE...
?修改文件的屬組:chgrp
chgrp [OPTION]... GROUP FILE...
chgrp [OPTION]... --reference=RFILE FILE...
-R 遞歸

修改文件權限

?chmod [OPTION]... OCTAL-MODE FILE...
-R: 遞歸修改權限
?chmod [OPTION]... MODE[,MODE]... FILE...
MODE:
修改一類用戶的所有權限
u= g= o= ug= a= u=,g=
修改一類用戶某位或某些位權限
u+ u- g+ g- o+ o- a+ a- + -
?chmod [OPTION]... --reference=RFILE FILE...
參考RFILE文件的權限,將FILE的修改為同RFILE

新建文件和目錄的默認權限

?umask值 可以用來保留在創建文件權限
?新建文件的默認權限: 666-umask,如果所得結果某位存在執行(奇數)權
限,則將其權限+1
?新建目錄的默認權限: 777-umask
?非特權用戶umask是 002
?root的umask 是 022
?umask: 查看
?umask # 設定
示例:umask 002
umask u=rw,g=r,o=
?umask –S 模式方式顯示
?umask –p 輸出可被調用
?全局設置: /etc/bashrc 用戶設置:~/.bashrc

設定文件特定屬性

?chattr +i 不能刪除,改名,更改
?chattr +a 只能追加內容
?lsattr 顯示特定屬性

Linux文件系統上的特殊權限

?SUID, SGID, Sticky
?三種常用權限:r, w, x user, group, other
?安全上下文
?前提:進程有屬主和屬組;文件有屬主和屬組
(1) 任何一個可執行程序文件能不能啟動為進程,取決發起者對程序文件是否擁有
執行權限
(2) 啟動為進程之後,其進程的屬主為發起者,進程的屬組為發起者所屬的組
(3) 進程訪問文件時的權限,取決於進程的發起者
(a) 進程的發起者,同文件的屬主:則應用文件屬主權限
(b) 進程的發起者,屬於文件屬組;則應用文件屬組權限
(c) 應用文件“其它”權限

訪問控制列表

?為多用戶或者組的文件和目錄賦予訪問權限rwx
mount -o acl /directory
getfacl file |directory
setfacl -m u:wang:rwx file|directory
setfacl -Rm g:sales:rwX directory
setfacl -M file.acl file|directory
setfacl -m g:salesgroup:rw file| directory
setfacl -m d:u:wang:rx directory
setfacl -x u:wang file |directory
setfacl -X file.acl directory
?ACL文件上的group權限是mask 值(自定義用戶,自定義組,擁有組的最大權
限),而非傳統的組權限
?getfacl 可看到特殊權限:flags
?通過ACL賦予目錄默認x權限,目錄內文件也不會繼承x權限
?base ACL 不能刪除
?setfacl -k dir 刪除默認ACL權限
? setfacl –b file1清除所有ACL權限
?getfacl file1 | setfacl --set-file=- file2 復制file1的acl權限給file2
訪問控制列表
?mask只影響除所有者和other的之外的人和組的最大權限
Mask需要與用戶的權限進行邏輯與運算後,才能變成有限的權限(Effective
Permission)
用戶或組的設置必須存在於mask權限設定範圍內才會生效 setfacl -m
mask::rx file
?--set選項會把原有的ACL項都刪除,用新的替代,需要註意的是一定要包含
UGO的設置,不能象-m一樣只是添加ACL就可以
?示例:
setfacl --set u::rw,u:wang:rw,g::r,o::- file1
?備份和恢復ACL
?主要的文件操作命令cp和mv都支持ACL,只是cp命令需要加上-p 參數。但是
tar等常見的備份工具是不會保留目錄和文件的ACL信息
getfacl -R /tmp/dir1 > acl.txt
setfacl -R -b /tmp/dir1
setfacl -R --set-file=acl.txt /tmp/dir1
setfacl --restore acl.txt
getfacl -R /tmp/dir1

用戶組和權限管理的說明