權限詳解

                                                    權限

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

umask值 可以用來保留在創建文件權限

新建FILE權限: 666-umask

如果所得結果某位存在執行(奇數)權限,則將其權限+1 

新建DIR權限: 777-umask

非特權用戶umask是 002

root的umask 是 022

umask: 查看

umask #: 設定

umask 002 :設定umask爲002

umask –S 模式方式顯示

umask -S:顯示當前用戶創建目錄時的默認權限

umask –p 輸出可被調用 ?

umask -p:輸出碼號和umask這個名字

umask -p >>.bashrc:將輸出直接顯示出來重定向到配置文件中

umask u=rwx,g=rw,o=rwx:直接設置新創建目錄時的默認權限(實質上是umask的碼號發生了改變)

全局設置: /etc/bashrc 用戶設置:~/.bashrc

Linux文件系統上的特殊權限

SUID, SGID, Sticky

三種常用權限:r, w, x user, group, other

安全上下文

前提:進程有屬主和屬組;文件有屬主和屬組

(1) 任何一個可執行程序文件能不能啓動爲進程,取決發起者 對程序文件是否擁有執行權限

(2) 啓動爲進程之後,其進程的屬主爲發起者,進程的屬組爲 發起者所屬的組

(3) 進程訪問文件時的權限,取決於進程的發起者

  (a) 進程的發起者,同文件的屬主:則應用文件屬主權限 

  (b) 進程的發起者,屬於文件屬組;則應用文件屬組權限 

  (c) 應用文件“其它”權限

可執行文件上SUID權限

任何一個可執行程序文件能不能啓動爲進程:取決發起者對程序文件是否擁有執行權限

suid只能作用在二進制程序上,不能作用在script上

執行suid權限的程序時,此用戶將繼承此程序的所有者權限

SUID設置在目錄上無意義

權限設定:

chmod u+s FILE... chmod u-s FILE...

chmod u+s `which nano`:將nano二進制文件程序加上suid權限,這表示當普通用戶執行nano命令時自動繼承nano所有者的所有權限(暫時變成nano的所有者),如果被繼承的所有者對/etc/shadow文件有執行權限,那麼這個普通用戶就可以對/etc/shadow文件進行修改;否則就不可以

chmod 4755 /usr/bin/nano:和上一個命令的作用一樣

chmod u-s /usr/bin/nano:將nano二進制文件的suid權限去掉;如果將nano文件的執行權限x去掉,那麼相應的權限位將顯示S(表示有故障),連執行nano都不可以了,更不要說操作/etc/shadow文件了

chmod 755 /usr/bin/nano:和上一個命令具有相同的功能

可執行文件上SGID權限

任何一個可執行程序文件能不能啓動爲進程:取決發起者對程序文件是否擁有執行權限

chmod g+s /usr/bin/cat:將cat二進制文件程序加上sgid權限,這表示當普通用戶執行nano命令時自動繼承cat所屬組的所有權限(暫時變成cat的所屬組),如果被繼承的所屬組對/app/shadow文件有執行權限,那麼這個普通用戶就可以對/app/shadow文件進行修改;否則就不可以;去掉權限如suid一樣

權限設定: chmod g+s FILE... chmod g-s FILE...

作用在二進制程序上,執行sgid權限的程序時,此用戶將繼承此程序的所屬組權限

作用在目錄上:在此目錄新的文件的所屬組,將自動繼承目錄的所屬組

chmod g+s /app/project/:設置目錄的sgid,使得在目錄中創建文件自動繼承目錄的屬組作爲文件的屬組

chmod 1777 /app:將目錄/app的權限設置爲粘滯位sticky權限,這樣
非文件所有者的普通用戶是無法刪除此目錄下的文件的;

chmod 777 /app:將sticky權限解除

chmod 7777 /app:將suid、sgid和sticky權限全部進行設置;注意全部設置後不能用777進行還原;只能用chmod u-s,g-s,o-t /app命令進行還原

chattr +i /app:不能進行增刪等權限操作即使是管理員也不行

chattr -i /app:解除鎖定

lsattr /app -d:查詢/app目錄是否被鎖定

chattr +a /app/m:設置m文件只能追加不能修改,刪除,清空

chattr -A anaconda-ks.cfg:將文件的訪問時間鎖定,不進行刷新,但是如果用touch強制刷新還是可以的

tune2fs -l /dev/sda3:centos6(ext4)上查看是否支持acl

mask限制了除所有者和其他用戶外所有組和用戶的權限;先設置其他後改mask那麼就會多餘權限失效;如果先設置mask,那麼在超過mask的權限後mask會自動更改以適應其他的權限

chmod g=r m

ACL權限生效順序:所有者,(自定義用戶,所屬組|自定義組) 不能超過mask權限,other

訪問控制列表

ACL:Access Control List,實現靈活的權限管理

除了文件的所有者,所屬組和其它人,可以對更多的用戶設置權限

CentOS7 默認創建的xfs和ext4文件系統具有ACL功能

CentOS7 之前版本,默認手工創建的ext4文件系統無ACL功 能,需手動增加

tune2fs –o acl /dev/sdb1 

mount –o acl /dev/sdb1  /mnt/test 

ACL生效順序:所有者,自定義用戶,自定義組,其他人

爲多用戶或者組的文件和目錄賦予訪問權限rwx

setfacl -m group::rw m:

setfacl -m mask::r m

getfacl m:查看文件的特殊權限

• mount -o acl /directory

• getfacl file |directory

getfacl m:查看有哪些用戶和組對文件m加了acl權限

• setfacl -m u:wang:rwx file|directory

setfacl -m u:wang:rw m:授予用戶wang對文件m的讀寫權限

• setfacl -Rm g:sales:rwX directory

setfacl -Rm g:opts:rwx /app:將目錄遞歸的設置acl的組的權限,目錄內已經建立的文件也會生效

• setfacl -M file.acl file|directory

• setfacl -m g:salesgroup:rw file| directory

setfacl -m g:opts:r m:授予opts組對文件m的讀權限

• setfacl -m d:u:wang:rx directory

setfacl -Rm d:u:mage:rwx /app:默認將/app目錄下新建立的文件設置成mage對它有讀寫執行權限;在設置權限之前建立的文件opts組對它沒有執行權限;

setfacl -Rm d:g:opts:rwx /app:默認將/app目錄下新建立的文件設置成opts組對它有讀寫執行權限;在設置權限之前建立的文件opts組對它沒有執行權限;

• setfacl -x u:wang file |directory

setfacl -x u:wang m:將wang用戶對m文件的權限收回

setfacl -x d:u:wang /app:撤銷wang用戶默認權限,前面要加d

• setfacl -X file.acl directory

setfacl -X mage.acl m:將作用於文件m的的權限刪除

ACL文件上的group權限是mask 值(自定義用戶,自定義組 ,擁有組的最大權限),而非傳統的組權限

getfacl 可看到特殊權限:flags

通過ACL賦予目錄默認x權限,目錄內文件也不會繼承x權限,文件會顯示x權限被mask限制了;但是直接針對文件設置acl的x權限就不會被限制,會生效;

setfacl -k  dir 刪除默認ACL權限 

setfacl -k /app:刪除/app默認的acl權限

setfacl –b file1清除所有ACL權限

setfacl -b f1:清空所有權限,包括默認權限

getfacl file1 | setfacl --set-file=- file2 複製file1 的acl權限給file2

getfacl f1|setfacl --set-file=- f2:將f1的acl權限複製給f2,f2原本的權限就被覆蓋;

mask隻影響除所有者和other的之外的人和組的最大權限

Mask需要與用戶的權限進行邏輯與運算後,才能變成有限的權限
(Effective Permission) 也就是就是mask限定最大權限

用戶或組的設置必須存在於mask權限設定範圍內纔會生效

setfacl -m mask::rx file :設置mask

chmod g=rx file:這個命令也可以設定mask;文件或者目錄加acl權限後,(ll命令查看)他的屬組權限顯示的是mask的權限,而不是他的真實的屬組權限;

--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 :將文件acl.txt權限信息進行進行重新設置

setfacl --restore acl.txt :恢復的時候是根據權限存儲文件的中的文件路徑進行的,找不到就無法恢復;acl.txt文件最好在當前路徑下

getfacl -R /tmp/dir1:遞歸查看目錄和文件的acl權限信息
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章