1.文件權限
文件權限主要是針對三類對象進行定義的:
owner:屬主,u
group:屬組,g
other:其他,o
每個文件針對每個類定義了三種權限:
readable: r
writable: w
excutable:x
三種文件權限:
r: 可使用文件查看類工具獲取其內容
w: 可修改其內容
x: 可以把此文件提請內核啟動為一個進程
三種目錄權限:
r: 可以使用ls查看此目錄中文件列表
w: 可在此目錄中創建文件,也可刪除此目錄中的文件
x: 可以使用ls -l查看此目錄中文件列表,可以cd進入此 目錄
X:只給目錄x權限,不給文件x權限
2.目錄權限:
[root@iZ11yrfw9g3Z ~]# ll -d luyubo
drwxr-xr-x 2 root root 4096 Aug 4 13:48 luyubo
d表示文件類型
rwxr-xr-x 每三個一組
rwx表示所屬用戶權限
r-x表示所屬組的權限
r-x表示其他用戶權限
2表示引用連接數
root表示所屬用戶
root表示所屬組
4096表示文件大小
Aug 4 13:48表示時間
luyubo表示目錄
3.chmod命令:
用法:chmod [選項]… 模式[,模式]… 文件…
或:chmod [選項]… 八進制模式 文件…
或:chmod [選項]… –reference=參考文件 文件…
修改一類用戶的所有權限: u= g= o= ug= a= u=,g=
修改一類用戶某位或某些位權限 u+ u- g+ g- o+ o- a+ a- +
將每個文件的模式更改為指定值。
-c, –changes類似 –verbose,但只在有更改時才顯示結果
–no-preserve-root不特殊對待根目錄(默認)
–preserve-root禁止對根目錄進行遞歸操作
-f, –silent, –quiet去除大部份的錯誤信息
-v, –verbose為處理的所有文件顯示診斷信息
–reference=參考文件使用指定參考文件的模式,而非自行指定權限模式
-R, –recursive以遞歸方式更改所有的文件及子目錄
–help 顯示此幫助信息并退出
–version顯示版本信息并退出
chown 設置文件的所有者
[root@localhost ~]# chown luyubo luyubo
4.chgrp命令使用方法
用法:chgrp [選項]… 用戶組 文件…
或:chgrp [選項]… –reference=參考文件 文件…
將每個指定文件的所屬組設置為指定值。
如果使用 –reference 則將每個文件的所屬組設置為與指定參考文件相同。
-c, –changes類似 –verbose,但只在有更改時才顯示結果
–dereference影響符號鏈接所指示的對象,而非符號鏈接本身(默認值)
-h, –no-dereference會影響符號鏈接本身,而非符號鏈接所指示的目的地
(當系統支持更改符號鏈接的所有者時,此選項才有用)
–no-preserve-root 不特殊對待"/"(默認值)
–preserve-root不允許在"/"上遞歸操作
-f, –silent, –quiet去除大部份錯誤信息
–reference=RFILE使用參考文件的所屬組,而非指定值
-R, –recursive 遞歸處理所有的文件及子目錄
-v, –verbose 為處理的所有文件顯示診斷信息
chgrp 設置文件的屬組信息
[root@localhost ~]# chgrp luyubo luyubo
5.默認權限介紹
umask值 可以用來保留在創建文件權限
新建FILE權限: 666-umask 如果所得結果某位存在執行(奇數)權限,則將其權限+1
新建DIR權限: 777-umask
非特權用戶umask是 002 權限是:775
root的umask 是 022 權限是:755
因為root權限太大,風險是很大的,所以默認權限是低于普通用戶的
umask: 查看當前mask值 #執行結果是:022
umask #: 例如 umask 023 權限是754
umask –S 模式方式顯示 #大s以字母方式顯示
umask –p 輸出可被調用 #執行結果是:umask 022
全局設置: /etc/bashrc 用戶設置:~/.bashrc
6.Linux文件系統上的特殊權限
1.SUID,SGID,Sticky
三種常用權限:r, w, x user, group, other
安全上下文
前提:進程有屬主和屬組;文件有屬主和屬組
(1) 任何一個可執行程序文件能不能啟動為進程:取決發起者 對程序文件是否擁有執行權限
(2) 啟動為進程之后,其進程的屬主為發起者;進程的屬組為 發起者所屬的組
(3) 進程訪問文件時的權限,取決于進程的發起者
(a) 進程的發起者,同文件的屬主:則應用文件屬主權限
(b) 進程的發起者,屬于文件屬組;則應用文件屬組權限
(c) 應用文件“其它”權限
2.SUID:
1.任何一個可執行程序文件能不能啟動為進程:取決發起者對 程序文件是否擁有執行權限
2.啟動為進程之后,其進程的屬主為原程序文件的屬主
3.SUID只對二進制可執行程序有效
4.SUID設置在目錄上無意義
權限設定: chmod u+s FILE… chmod u-s FILE…
例如:設置二進制程序echo的屬主權限
[root@localhost ~]# chmod u+s /bin/echo
3.SGID:
1.任何一個可執行程序文件能不能啟動為進程:取決發起者對 程序文件是否擁有執行權限
2.啟動為進程之后,其進程的屬主為原程序文件的屬組
3.權限設定: chmod g+s FILE… chmod g-s FILE…
例如:設置二進制程序echo的屬組權限
[root@localhost ~]# chmod g+s /bin/echo
4.SUID:user,占據屬主的執行權限位 s:屬主擁有x權限 S:屬主沒有x權限
4.目錄SGID:
1.默認情況下,用戶創建文件時,其屬組為此用戶所屬的主組
2.一旦某目錄被設定了SGID,則對此目錄有寫權限的用戶在此 目錄中創建的文件所屬的組為此目錄的屬組
3.通常用于創建一個協作目錄
4.權限設定: chmod g+s DIR… chmod g-s DIR…
例如:設置/data/testdir/目錄內所有新建文件為g1組。
[root@localhost data]# chgrp g1 testdir/
[root@localhost data]# chmod g+s testdir/
5.SGID:group,占據屬組的執行權限位 s:group擁有x權限 S:group沒有x權限
5.Sticky位:
1.具有寫權限的目錄通常用戶可以刪除該目錄中的任何 文件,無論該文件的權限或擁有權
2.在目錄設置Sticky位,只有文件的所有者或root可 以刪除該文件
3.sticky設置在文件上無意義
4.權限設定: chmod o+t DIR… chmod o-t DIR…
5.例如:我們bo目錄加上t權限:
[root@localhost home]# chmod o+t bo/
[root@localhost home]# ll -d bo/
drwxrwxrwt 2 root root 4096 8月 4 20:58 bo/
切換用戶至tom嘗試刪除目前內的文件是沒有權限,但是我們的權限是777,這就是sticky的作用
6.Sticky: other,占據other的執行權限位 t: other擁有x權限 T:other沒有x權限
7.文件特定屬性
1.chattr +i 不能刪除,改名,更改
2.chattr +a 只能增加
3.lsattr 顯示特定屬性
8.訪問控制列表acl
1.ACL:Access Control List,實現靈活的權限管理
2.除了文件的所有者,所屬組和其它人,可以對更多的用戶設 置權限
3.CentOS7.0默認創建的xfs和ext4文件系統有ACL功能。
4.CentOS7.X之前版本,默認手工創建的ext4文件系統無ACL功能。需手動增加:tune2fs –o acl /dev/sdb1 mount –o acl /dev/sdb1 /mnt
5.ACL生效順序:屬主,自定義FACL屬主,屬組,自定義FACL屬組,其他人
6.ACL命令:
getfacl 查看acl
setfacl -x刪除權限
setfacl -b徹底清空文件上面的acl
setfacl -d設置默認acl權限,新建文件生效
setfacl -k刪除設置默認acl權限
setfacl -m u:::rw file設置所有者權限
setfacl -m m:::rw file設置mask 權限
設置mask,只影響除所有者和other,其他權限不能比mask高,或者相等
設置acl之后 所屬組權限就不是組權限了,就是mask權限了
7.ACL文件上的group權限是mask 值(自定義用戶,自定義組 ,擁有組的最大權限),而非傳統的組權限
8.getfacl 可看到特殊權限:flags
9.默認ACL權限給了x,文件也不會繼承x權限。 ?base ACL 不能刪除
10.setfacl -k dir 刪除默認ACL權限
11.setfacl -b file1清除所有ACL權限
12. mask只影響除所有者和other的之外的人和組的最大權限 Mask需要與用戶的權限進行邏輯與運算后,才能變成有限的權限 (Effective Permission) 用戶或組的設置必須存在于m ask權限設定范圍內才會生效。 setfacl -m mask::rx file
13. –set選項會把原有的ACL項都刪除,用新的替代,需要注意的 是一定要包含UGO的設置,不能象-m一樣只是添加ACL就可以.
例如:
[root@localhost home]# setfacl --set u::rw,u:tom:rw,g::r,o::- bo/
9.備份和恢復ACL
1.主要的文件操作命令cp和mv都支持ACL,只是cp命令需要 加上-p參數。但是tar等常見的備份工具是不會保留目錄 和文件的ACL信息
[root@localhost data]# getfacl -R testdir/ > acl.txt
[root@localhost data]# setfacl -R -b testdir/
[root@localhost data]# setfacl -R --set-file=acl.txt testdir/
[root@localhost data]# getfacl -R testdir/
原創文章,作者:鬧鐘哥,如若轉載,請注明出處:http://www.www58058.com/29302
可以嘗試著寫清楚特殊權限的實際應用場景,這才是我們學習特殊權限的意義所在。