Linux基礎命令-用戶、組和權限

用戶、組和權限

一、解釋Linux的安全模型

1. 介紹安全3A

資源分派:
	Authentication:認證
	Authorization:授權
	Accouting|Audition:審計

二、解釋用戶帳號和組羣帳號的目的

1. 用戶user

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

2. 組group

1.Linux組:Groupname/GID
2.管理員組:root, 0
3.普通組:
	系統組:1-499, 1-999CENTOS7)
	普通組:500+, 1000+CENTOS7

3. 安全上下文

Linux安全上下文
	運行中的程序:進程 (process)
	以進程發起者的身份運行:
		root: /bin/cat
		mage: /bin/cat
	進程所能夠訪問資源的權限取決於進程的運行者的身份

4. 組的類別

Linux組的類別
	用戶的主要組(primary group)
		 用戶必須屬於一個且只有一個主組
		 組名同用戶名,且僅包含一個用戶,私有組
	用戶的附加組(supplementary group)
		 一個用戶可以屬於零個或多個輔助組

三、用戶和組相關文件

1. 用戶和組的配置文件

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

2. passwd文件格式

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

3. shadow文件格式

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

4. 密碼加密

1.加密機制:
 	加密:明文--> 密文
	解密:密文--> 明文
2.單向加密:哈希算法,原文不同,密文必不同
	相同算法定長輸出,獲得密文不可逆推出原始數據
	雪崩效應:初始條件的微小改變,引起結果的巨大改變
		md5: message digest, 128bits
		sha1: secure hash algorithm, 160bits
		sha224: 224bits
		sha256: 256bits
		sha384: 384bits
		sha512: 512bits
3.更改加密算法:
	 authconfig --passalgo=sha256 --update

5. 密碼的複雜性策略

足夠長
使用數字、大寫字母、小寫字母及特殊字符中至少3種
使用隨機密碼
定期更換,不要使用最近曾經使用過的密碼

6. 密碼期限

在這裏插入圖片描述

7. group文件格式

羣組名稱:就是羣組名稱
羣組密碼:通常不需要設定,密碼是被記錄在 /etc/gshadow
GID:就是羣組的 ID
以當前組爲附加組的用戶列表(分隔符爲逗號)

8. gshdow文件格式

羣組名稱:就是羣的名稱
羣組密碼:
組管理員列表:組管理員的列表,更改組密碼和成員
以當前組爲附加組的用戶列表:多個用戶間用逗號分隔

9. 文件操作

vipw和vigr
pwck和grpck

四、用戶和組管理命令

1. 用戶和組管理命令

1.用戶管理命令
	useradd
	usermod
	userdel
2.組帳號維護命令
	groupadd
	groupmod
	groupdel

2. 用戶創建: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 不創建家目錄,用於非系統用戶
默認值設定:/etc/default/useradd
顯示或更改默認設置
	 useradd -D
	 useradd –D -s SHELL
	 useradd –D –b BASE_DIR
	 useradd –D –g GROUP

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

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

4. 用戶屬性修改

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: 設定非活動期限

5. 刪除用戶

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

6. 查看用戶相關的ID信息

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

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

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

8. 設置密碼

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

9. 修改用戶密碼策略

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 0M 42W 14I 7 tom
	chage -E 2016-09-10 tom 

10. 用戶相關的其它命令

chfn 指定個人信息
chsh 指定shell
finger

11. 創建組

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

12. 修改和刪除組

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

13. 更改組密碼

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

14. 更改和查看組成員

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

五、理解並設置文件權限

1. 文件權限

在這裏插入圖片描述

1.文件屬性操作
	chown 設置文件的所有者
	chgrp 設置文件的屬組信息
2.文件的權限主要針對三類對象進行定義
	owner 屬主, u
	group 屬組, g
	other 其他, o
3.每個文件針對每類訪問者都定義了三種權限
	r Readable
	w Writable
	x eXcutable
4.文件:
	r 可使用文件查看類工具獲取其內容
	w 可修改其內容
	x 可以把此文件提請內核啓動爲一個進程
5.目錄:
	r 可以使用ls查看此目錄中文件列表
	w 可在此目錄中創建文件,也可刪除此目錄中的文件
	x 可以使用ls -l查看此目錄中文件元數據(須配合r),可以cd進入此目錄
	X 只給目錄x權限,不給文件x權限

2. 修改文件的屬主和屬組

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

3. 文件權限操作

文件權限操作命令:chmod
文件權限(rwx|X)
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

在這裏插入圖片描述

4. 八進制數字

--- 000 0
--x 001 1
-w- 010 2
-wx 011 3
r-- 100 4
r-x 101 5
rw- 110 6
rwx 111 7
	例如:
	640 rw-r-----
	755 rwxr-xr-x

5. 權限設置示例

chgrp sales testfile
chown root:admins testfile
chmod u+wx,g-r,o=rx file
chmod -R g+rwX /testdir
chmod 600 file
chown mage testfile

六、默認權限

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

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

七、特殊權限

1. Linux文件系統上的特殊權限

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

2. 可執行文件上SUID權限

1.任何一個可執行程序文件能不能啓動爲進程:取決發起者對程序文件是否擁有
	執行權限
2.啓動爲進程之後,其進程的屬主爲原程序文件的屬主
3.SUID只對二進制可執行程序有效
4.SUID設置在目錄上無意義
5.權限設定:
	chmod u+s FILE...
	chmod u-s FILE...
6.任何一個可執行程序文件能不能啓動爲進程:取決發起者對程序文件是否擁有
	執行權限
7.啓動爲進程之後,其進程的屬組爲原程序文件的屬組
8.權限設定:
	chmod g+s FILE...
	chmod g-s FILE...

3. 目錄上的SGID權限

1.默認情況下,用戶創建文件時,其屬組爲此用戶所屬的主組
2.一旦某目錄被設定了SGID,則對此目錄有寫權限的用戶在此目錄中創建的文件
	所屬的組爲此目錄的屬組
3.通常用於創建一個協作目錄
4.權限設定:
	chmod g+s DIR...
	chmod g-s DIR...

4. Sticky 位

1.具有寫權限的目錄通常用戶可以刪除該目錄中的任何文件,無論該文件的權限
	或擁有權
2.在目錄設置Sticky 位,只有文件的所有者或root可以刪除該文件
3.sticky 設置在文件上無意義
4.權限設定:
	chmod o+t DIR...
	chmod o-t DIR...
5.例如:
 	ls -ld /tmp
 	drwxrwxrwt 12 root root 4096 Nov 2 15:44 /tmp

5. 特殊權限數字法

SUID SGID STICKY
	000 0
	001 1
	010 2
	011 3
	100 4
	101 5
	110 6
	111 7
		chmod 4777 /tmp/a.txt

6. 權限位映射

1.SUID: user,佔據屬主的執行權限位
	s:屬主擁有x權限
	S:屬主沒有x權限
2.SGID: group,佔據屬組的執行權限位
	s: group擁有x權限
	S:group沒有x權限
3.Sticky: other,佔據other的執行權限位
	t:other擁有x權限
	T:other沒有x權限

7. 設定文件特定屬性

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

八、FACL

1. 訪問控制列表

1.ACL:Access Control List,實現靈活的權限管理
2.除了文件的所有者,所屬組和其它人,可以對更多的用戶設置權限
3.CentOS7 默認創建的xfs和ext4文件系統具有ACL功能
4.CentOS7 之前版本,默認手工創建的ext4文件系統無ACL功能,需手動增加
	tune2fs –o acl /dev/sdb1
	mount –o acl /dev/sdb1 /mnt/test
5.ACL生效順序:所有者,自定義用戶,自定義組,其他人
6.爲多用戶或者組的文件和目錄賦予訪問權限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
7.ACL文件上的group權限是mask 值(自定義用戶,自定義組,擁有組的最大權
	限),而非傳統的組權限
8.getfacl 可看到特殊權限:flags
9.通過ACL賦予目錄默認x權限,目錄內文件也不會繼承x權限
10.base ACL 不能刪除
11.setfacl -k dir 刪除默認ACL權限
12.setfacl –b file1清除所有ACL權限
13.getfacl file1 | setfacl --set-file=- file2 複製file1的acl權限給file2
14.mask隻影響除所有者和other的之外的人和組的最大權限Mask需要與用戶的權限進行
邏輯與運算後,才能變成有限的權限(Effective Permission)
		用戶或組的設置必須存在於mask權限設定範圍內纔會生效 setfacl -m
		mask::rx file
15.--set選項會把原有的ACL項都刪除,用新的替代,需要注意的是一定要包含
	UGO的設置,不能象-m一樣只是添加ACL就可以
16.示例:
	setfacl --set u::rw,u:wang:rw,g::r,o::- file1
17.備份和恢復ACL
18.主要的文件操作命令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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章