Linux文件權限與訪問控制
阿新 • • 發佈:2018-04-05
Linux學習Linux文件權限與訪問控制
訪問文件用戶3類:
文件所有者
同組成員
其他人
權限
--- --- --- (rwx) 依次對應3類用戶
file:6rw 4r 0 x1
dir: 7rwx 5r-x 0
默認權限
umask內部命令 用來生成數字 umask+default =file666/dir777 umask +數字 修改umask值 umask 本質含義取消對應權限 原理計算: 666 666 125 125 110110110 541 001010101 542 對於文件偶數不動奇數全加一 對於目錄不必要這麽做,目錄 110100010 執行權限沒有擔心 642 配置文件 個人用戶配置 .bashrc 在文件末尾追加 umask 251 source .bashrc /etc/bashrc 下配置了root和普通用戶的umask默認值 root 022 普通 002 umask -p >> .bashrc 追加umask值到個人配置文件中 -S 模式法 寫了默認權限
命令:
chmod 法一: chmod who opt per file who:u g o(a可以代表ugo) opt:+ - = per: r w x (X s .特殊權限) ps: chmod u+x,g-w,o= file 參考一個文件權限修改另一個文件 chmod --reference=filename1 filename2 filename3 法二:數字法 r:4 w:2 x:1 chmod 764 filename chmod -R a+x dirname 遞歸加執行權限 chmod -R +X dirname X僅僅對目錄加執行,文件不加執行 當文件原有執行權限則會加執行權限 chown -c或——changes:效果類似“-v”參數,但僅回報更改的部分; -f或--quite或——silent:不顯示錯誤信息; -h或--no-dereference:只對符號連接的文件作修改,而不更改其他任何相關文件; -R或——recursive:遞歸處理,將指定目錄下的所有文件及子目錄一並處理; -v或——version:顯示指令執行過程; --dereference:效果和“-h”參數相同; --help:在線幫助; --reference=<參考文件或目錄>:把指定文件或目錄的擁有者與所屬群組全部設成和參考文件或目錄的擁有者與所屬群組相同; --version:顯示版本信息。 chown root:root chown .root file 只改屬組 chown root. file 屬主屬組全改 chgrp
特殊權限:
SUID:作用在繼承二進制程序所有者的x位上,當一個用戶運行該程序,由於存在s權限 則它會繼承該程序的屬主的權限。只適合在二進制可執行程序上。 chmod u+s(-s) 4--- 都表示加s權限。 SGID: 作用在所有者的x位上,當一個用戶運行該程序,由於存在s權限 則它會繼承該程序的屬組的權限 chmod g+s 4--- sticky1:粘滯位。無法刪除別人的文件,即使2人都擁有其目錄的w權限,作用 在文件夾上。 chmod o+t 1--- SUID: user,占據屬主的執行權限位 s: 屬主擁有x權限 S:屬主沒有x權限 ? SGID: group,占據屬組的執行權限位 s: group擁有x權限 S:group沒有x權限 Sticky: other,占據other的執行權限位 t: other擁有x權限 T:other沒有x權限
############################################
chattr
chattr +i(-i) 不能刪除,改名,更改
chattr +a(-a) 只能追加內容
chattr +A(-A)?鎖定atime時間 vi修改文件之後鎖失效
lsattr 顯示特定屬性
############################################
訪問控制列表ACL:
ACL:Access Control List,實現靈活的權限管理
除了文件的所有者,所屬組和其它人,可以對更多的用戶設置權限
CentOS7 默認創建的xfs和ext4文件系統具有ACL功能 後續添加的分區也支持
CentOS7 之前版本,默認手工創建的ext4文件系統無ACL功能,需手動增加
tune2fs –o acl /dev/sdb1
mount –o acl /dev/sdb1 /mnt/test
ACL生效順序:所有者,自定義用戶,自定義組,其他人
若屬於多個組的話,若沒有用戶權限匹配則多個組權限可以累積
#############################################
啟用acl之後組權限已經改變為mask權限
#############################################
為多用戶或者組的文件和目錄賦予訪問權限rwx
mount -o acl /directory
getfacl file |directory 查看文件或者目錄的acl權限
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 值(自定義用戶,自定義組,擁有組的最大權 限),而非傳統的組權限
setfacl -m mask::r file 對文件file設置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需要與用戶的權限進行邏輯與運算後,才能變成有限的權限(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(不一定要全恢復可以選擇其中一個文件或者目錄恢復) 遞歸按照acl.txt文件恢復acl權限,也可以實現單個文件或者目錄的恢復
setfacl --restore acl.txt 恢復acl權限
getfacl -R /tmp/dir1
Linux文件權限與訪問控制