8.3-ACL權限詳解(命令篇)

前言

        我們都知道Linux有三種身份(owner,group,other)搭配三種權限(r,w,x)以及三種特殊權限(SUID,SGID,SBIT),

但是某些時候這些組合不能滿足復雜的權限需求。


例如

      目錄data的權限為:drwxr-x—,所有者與所屬組均為root,在不改變所有者和所屬組的前提下,要求用戶yufei對該

目錄有完全訪問權限(rwx),但又不能讓其他有用完全權限(rwx)。這個要求看似不能實現,這就看出來傳統的權限

管理設置有時候也會力不從心。為了解決這樣的問題,Linux開發出了一套新的文件系統權限管理方法,叫文件訪問

控制列表ACL(Access Control Lists)。這時候,我們就可能通過ACL來實現。


什么是ACL

        ACL是Access Control List的縮寫,主要的目的是在提供傳統的owner,group,others的read,write,execute權限之外的局

部權限設定。ACL可以針對單個用戶,單個文件或目錄來進行r,w,x的權限設定,特別適用于需要特殊權限的使用情況。

簡單來說,ACL就是可以設定特定用戶或用戶組對于一個文件或目錄的操作權限



1.查看當前分區是否支持ACL權限

[root@localhost ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3        19G  3.6G   14G  21% /

[root@localhost ~]# dumpe2fs -l /dev/sda1
...
Default mount options:    user_xattr acl

若沒有acl選項,則用以下命令掛載
mount -o remount,acl /dev/sda1

2.查看acl權限

        getfacl file

[root@localhost ~]# getfacl /root/testdir/a 
getfacl: Removing leading '/' from absolute path names
# file: root/testdir/a
# owner: root
# group: root
user::rw-
group::r--
other::r--

3.設定facl權限

setfacl 選項 類型:用戶:權限 file
        -m 設定acl權限
        -x 刪除指定的acl權限
        -b 刪除所有的acl權限
        -d 設定默認acl權限
        -k 刪除默認acl權限
        -R 遞歸設定acl
eg:    setfacl -m u:tom:rw /testdir            #添加tom用戶對/testdir有讀寫權限 
       setfacl -m g:alice:rw /testdir          #添加alice組對/testdir有讀寫權限

4.刪除acl權限
    setfacl -x u:user 文件名    :刪除指定的acl權限
    setfacl -b 文件名               :刪除文件所有acl權限

[root@localhost ~]# setfacl -x u:tom /testdir/
[root@localhost ~]# setfacl -b /testdir/
[root@localhost ~]# getfacl /testdir/
getfacl: Removing leading '/' from absolute path names
# file: testdir/
# owner: root
# group: root
user::rwx
group::r-x
other::r-x

5.修改mask值

    setfacl -m m:rw /testdir

[root@localhost ~]# setfacl -m mask:w /root/acl/
[root@localhost ~]# getfacl /root/acl/
getfacl: Removing leading '/' from absolute path names
# file: root/acl/
# owner: root
# group: root
user::rwx
user:tom:rw-   #effective:-w-
group::r-x   #effective:---
mask::-w-
other::r-x

 

6.遞歸acl:針對目錄下已存在的文件
      setfacl -R -m u:用戶名:權限 目錄名

[root@localhost ~]# setfacl -R -m u:tom:rw acl/
[root@localhost ~]# getfacl acl/
# file: acl/
# owner: root
# group: root
user::rwx
user:tom:rw-
group::r-x
mask::rwx
other::r-x
[root@localhost ~]# getfacl acl/a 
# file: acl/a
# owner: root
# group: root
user::rw-
user:tom:rw-
group::r--
mask::rw-
other::r--

 

7.默認acl:針對加入到目錄的新文件
      setfacl -m d:u:用戶名:權限  目錄名

新文件沒有acl權限
[root@localhost ~]# touch /root/acl/test.txt
[root@localhost ~]# getfacl /root/acl/test.txt
getfacl: Removing leading '/' from absolute path names
# file: root/acl/test.txt
# owner: root
# group: root
user::rw-
group::r--
other::r--
對目錄使用默認acl權限
[root@localhost ~]# setfacl -m d:u:tom:rw /root/acl/
[root@localhost ~]# touch /root/acl/test2.txt
[root@localhost ~]# getfacl /root/acl/test2.txt
getfacl: Removing leading '/' from absolute path names
# file: root/acl/test2.txt
# owner: root
# group: root
user::rw-
user:tom:rw-
group::r-x   #effective:r--
mask::rw-
other::r--

 備份和恢復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
#getfacl -R /tmp/dir1

 附:用戶對于文件的最終權限要和mask值“相與”才是最后所得權限,“文件所有者”和“其他人”對文件權限不受mask限制。

 

 

 

原創文章,作者:M20-1--孔祥文,如若轉載,請注明出處:http://www.www58058.com/28408

(0)
M20-1--孔祥文M20-1--孔祥文
上一篇 2016-08-04
下一篇 2016-08-04

相關推薦

  • net25 第15周作業

    1、總結sed和awk的詳細用法; SED sed模式空間 默認不編輯源文件,僅對模式空間中的數據做處理:而后,處理結束后,將模式空間打印屏幕 sed [options]’address+command’ file… -n:靜默模式,不再默認顯示模式空間的內容 -i:直接修改原文件 -e script -e script 同時執行多個腳本 -f /pat…

    Linux干貨 2017-05-15
  • N26-第六周作業-邢巖

    馬哥門徒-N26-邢巖      一直以來都用windows 的word來編輯文件,從今天開始,我又學會了新的編輯文件方式了,掩飾不住愉悅的心情!沒錯,就是vim 編輯器,一個神奇的編輯器!讓我來詳細介紹一下這個神器是如何使用的吧。     vim:vim其實就是(VI IMproved) vi增強…

    Linux干貨 2017-02-26
  • liunx的哲學思想

     Linux哲學思想 *一切皆文件(硬件、目錄、普通文件、二進制文件等。) *小型,單一用途的程序 *鏈接程序,共同完成復雜的任務 *避免令人困惑的用戶界面 *配置數據存儲在文本中 解釋:一切皆文件:是 Unix/Linux 的基本哲學之一。不僅普通的文件,目錄、字符設備、塊設備、 套接字等在 Unix/Linux 中都是以文件被對待;它們雖然類型…

    Linux干貨 2017-07-15
  • LInux系統上的文件管理類型以及bash的基礎特性

    LInux系統上的文件管理類型以及bash的基礎特性

    2017-12-12
  • raid5 陣列

    1 fdisk 分區sdb2,sdd1,sde1, 2  新建raid5 [root@localhost ~]# mdadm -C /dev/md5 -a yes  -l 5  -n 3 -x 1 /dev/sdd1 /dev/sde1  /dev/sdf  /dev/sdb2  3   …

    Linux干貨 2017-04-25
  • 馬哥教育21期網絡班—第三周課程+練習

    1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。 who |cut -d" " -f1 |sort -u 2、取出最后登錄到當前系統的用戶的相關信息。 id `who | tail -n …

    Linux干貨 2016-07-12
欧美性久久久久