image.png
1用戶權限
何為用戶權限呢?**
用戶權限是指用戶在執行目錄或者文件時所擁有的權限。
權限分為讀,寫,執行,其對于的英文字母為 r,w,x。
相同的權限對文件和目錄有不一樣的意思
對于文件來說:
r:可使用文件查看工具獲得其內容 (如 cat ,less)
w:可以修改其內容 (如nano,vim)
x:可以把此文件提交給內核啟動一個進程(process)
對于目錄來說:
r:可以使用ls來查看此目錄中的文件列表
w:可在其目錄下創建文件,并且可以刪除不是其創建的文件
x:可以ls -l來查看其目錄中文件列表,可以cd進入此目錄
創建權限和修改權限
chmod [OPTION]... MODE[,MODE]... FILE...
chmod [OPTION]... OCTAL-MODE FILE...
chmod [OPTION]... --reference=RFILE FILE...
[OPTION]
三類用戶:
u:屬主
g:屬組
o:其它
a: 所有
MODE表示法:
-R 表示遞歸
賦權表示法:直接操作一類用戶的所有權限位rwx;
u=
g=
o=
a=
授權表示法:直接操作一類用戶的一個權限位r,w,x;
u+, u-
g+, g-
o+, o-
a+, a-
例如 我要讓其他用戶可以讀/etc/passwd的文件。方法:先把/etc/passwd文件復制到/app目錄下,這個目錄我已經事先建立好。
image.png
其他修改方法也一樣,在這里就不一一測試了。
2 特殊權限
linux系統的特殊權限有三個:SUID、SGID、Sticky
這三種特殊權限有何作用呢?
首先我們從權限的角度分析,一個文件或目錄能否操作,是取決于用戶的屬主和屬組的權限。而對于other用戶來說,其操作一個文件或目錄,是以進程的屬主或屬組的權限來訪問的。因此,我們要用一種特殊的方法來操作一下特定的文件或目錄就需要用到特殊權限。
理解特殊權限的含義,先介紹下linux系統安全上下文:
- A 任何一個可以執行程序文件能不能啟動為進程,取決于發起者對程序是否擁有執行權限。
- B 啟動進程之后,其進程的屬主為發起者的屬主,進程的屬組為發起者的屬組。
- C進程訪問文件時的權限,取決于進程的發起者
-(1)進程的發起者,同文件的屬主,則應用文件屬主權限
-(2)進程的發起者,屬于文件的屬組,則應用文件屬組權限
-(3)應用文件“其他“權限
SUID
權限設定:
chmod u+s file
chmod u-s file
默認情況下:用戶發起的進程,進程的屬主是其發起者;因此,其以發起者的身份在運行;
- SUID的功能:用戶運行某程序時,如果此程序擁有SUID權限,那么程序-
運行為進程時,進程的屬主不是發起者,而程序文件自己的屬主。
例如:我cp /etc/cat文件 到/app/目錄下,并命名為cat,對cat程序 增加s權限(對文件附加s權限,前提是該文件為二進制可執行文件)
image.png
切換到tom用戶下執行該文件,要先把cat文件的屬主改成tom。
image.png
在tom用戶下執行cat命令,這樣做會非常危險,tom用戶可以擁有root的所有權限了,所有一般情況下不這樣使用。
image.png
SGID
-
SGID功能:當目錄屬組有寫權限,且有SGID權限時,那么所有屬于此目錄的屬組,且以屬組身份在此目錄中新建文件或目錄時,新文件的屬組不是用戶的基本組,而是此目錄的屬組;
權限設定:
chmod g+s file
chmod g-s file
例如:在/app/目錄下創建一個test目錄,并把它的屬主和屬組改成group1:group1image.png
對group1組增加s權限,需要先把tom用戶加入到group
組里面
image.png
切換到tom用戶下,執行創建文件a.txt文件,其屬主已經改成tom了。
image.png
sticky
權限設定:
chmod t+s dir
chmod t-s dir
- 功用:對于屬組或全局可寫的目錄,組內的所有用戶或系統上的所有用戶對在此目錄中都能創建新文件或刪除所有的已有文件;如果為此類目錄設置Sticky權限,則每個用戶能創建新文件,且只能刪除自己的文件。
sticky在生產環境中用得比較多,避免了同組的其他用戶刪除自己創建的文件。注意:sticky對目錄有效,對文件無效。
總結
suid
作用二進制可執行程序上,切換次程序所有者的身份
sgid
作用于二進制可執行程序上,繼承了此程序所屬組的權限
作用于目錄上,在該目錄下新創建文件所屬組繼承目錄的所屬組
sticky
作用于目錄,該目錄的文件,只有被所有者或者root刪除
3 ACL
ACL 英文access constrol list 俗稱訪問控制列表
跟很多網絡設備廠商里面的acl一樣,其功能也一樣。
- 功能:除了文件的所有者,所屬組和其它人,可以對更多的用戶設
置權限。
CentOS7 默認創建的xfs 和ext4 文件系統具有ACL 功能
CentOS7 之前版本,默認手工創建的ext4 文件系統無ACL功能, 需手動增加
tune2fs –o acl /dev/sdb1
mount –o acl /dev/sdb1 /mnt/test
ACL 生效 順序:所有者,自定義用戶,自定義組,其他
設置ACL的方法
setfacl -m u:tom:rwx file|directory
setfacl -Rm g:jerry:rwX directory
setfacl -M file.acl file|directory
setfacl -m g:jerrygroup:rw file| directory
setfacl -m d:u:wang:rx directory 新建的目錄,默認繼承wang用戶擁有acl權限
setfacl -x u:wang file |directory
setfacl -X file.acl directory
查看acl策略的方法
getfacl file |directory
setfacl -k dir 刪除默認ACL 權限
setfacl –b file1 清除所有ACL 權限
** getfacl file1 | setfacl --set-file=- file2 復制file1
的 的acl 權限給file2** -代表前面輸出的參數 ,權限繼承
備份和恢復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
例如:在/app目錄下創建b.txt ,并把其創建acl。
setfacl -m u:tom:--- /app/b.txt
image.png
image.png
切換到tom用戶 打開b.txt文件,提示無權限。
image.png
注意:設置acl權限于mask有關系,mask
相對于一條邊界線,任何用戶不能超越,只能比它低,這個用處在于:統一把一下高的權限通過設置mask來降低權限。
設置方法:
setfacl -m mask::rx file
mask 只影響除所有者和other 的之外的人和組的最大權限
Mask 需要與用戶的權限進行邏輯與運算后,才能變成有限的
權限
--set 選項會把原有的ACL 項都刪除,用新的替代,需要注
意的是一定要包含UGO 的設置,不能象-m 一樣只是添加
ACL 就可 以
示例:
setfacl --set u::rw,u:wang:rw,g::r,o::- file1
acl對原來的屬主屬組其他沒有權限刪除。