linux 特殊權限chattr(文件系統級別的權限) Attr 權限和 ACL訪問控制列表 ...

Attr 權限 和 ACL 訪問控制列表


  • Attr 權限裏的 “a” 權限和 “i” 權限
a :全名append only    
   只允許追加數據,不允許任何用戶改動文件(超級用戶也不行) 
   甚至不能正常的刪除文件
   只能讀取文件內容,只能用 “echo” 追加內容
   chattr +a xxx  #增加 a 權限
   chattr -a xxx  #取消 a 權限
   lsattr   #查看權限
[root@deng-120 /test]# touch abc    #自行創建一個 abc 文件
[root@deng-120 /test]# chattr +a abc/   #給 abc 加上 “a” 權限
[root@deng-120 /test]# lsattr       #查看 “a” 權限
-----a---------- ./abc      
[root@deng-120 /test]# echo "hello" >> abc  #可用“echo”把內容追加到 abc 文件中
[root@deng-120 /test]# vim abc      #編輯文件 

abc保存退出的時候會發現無法保存,只能退出不做修改;表示 “a” 權限只能對文件的追加而不能進行修改
這裏寫圖片描述

i :全名immutable  
    不允許對這個文件進行任何的修改(超級用戶也不行)
    不能正常的刪除文件
    只能讀取文件內容,不能用 “echo” 追加內容
    chattr +i xxx  #增加 i 權限
    chattr -i xxx  #取消 i 權限
    lsattr  #查看權限
[root@deng-120 /test]# chattr +i abc    #給 abc 加上 “i” 權限
[root@deng-120 /test]# lsattr       #查看 “i” 權限
----i----------- ./abc
[root@deng-120 /test]# echo "hello" >> abc  #用“echo”把內容追加到 abc 文件中
-bash: abc: 權限不夠        

權限不夠,表示 “i” 權限的特性就是不允許做任何的修改刪除,只能讀取

  • ACL:訪問控制列表

使用語法: setfacl -[選項] [權限設置] 操作對象
查看語法: getfacl 加路徑

-m   設置一個ACL權限
-x   取消一個ACL權限
-b   清除所有的 ACL 權限

舉個栗子:允許用戶 rosen1 對 “/test/abc” 文件有讀和寫的權限;用戶 rosen2 對 “/test/abc” 文件沒有任何權限,其他人只有讀的權限(用戶自行創建)

[root@deng-120 /test]# setfacl -m u:rosen1:rw- /test/abc    # rosen1 讀和寫權限
[root@deng-120 /test]# setfacl -m u:rosen2:--- /test/abc    # rosen2 沒有任何權限
[root@deng-120 /test]# chown zhang3 abc     #修改所有者爲zhang3
[root@deng-120 /]# getfacl /test/abc 
# file: test/abc    #文件所在的路徑
# owner: zhang3     #文件附加所有者
# group: root       #文件所屬組
user::rw-           #用戶權限
user:rosen1:rw-     # rosen1 讀和寫權限
user:rosen2:---     # rosen2 沒有任何權限
group::r--          #用戶所屬組權限
mask::rw-           #除了 root 集體控制附加所有者的最大權限
other::r--          #其他人只讀權限

mask 值作用:除了 “root 用戶” 權限之外,其他的 ACL 用戶和組(包括默認組),都會被mask 作用到

修改 “mask” 值: setfacl  -m  m:rwx /test/abc
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章