ACL權限管理練習

ACL簡介;
權限管理練習

在學習了用戶、組和文件對應的User、Group、Others三類用戶以及操作權限Excute、Write和Read后我們知道了在文件或文件夾上我們可以分別對三類用戶設置不同的權限。
舉個例子:

/home/guanyu目錄下的4.txt文件

-rwxrw-r–. 1 guanyu shu 7 Aug 30 10:52 4.txt

User:guanyu擁有rwx權限,
Group:shu組用戶擁有rw權限;
Others:其他用戶擁有r權限。
如果現在Rockets用戶James需要對4.txt取得rw權限,我們會想到以下幾種辦法:
1. 給文件的other類別增加讀和寫的權限. 這樣由于James會被歸為other類別,那么
他也將擁有rw權限。
2. 將James加入到shu group. 那么James會被歸為group類別,那么他將擁有讀寫的權限。
3. 設置suid, 使James能夠以guanyu的身份對4.txt進行操作,從而獲得rw權限。

第一種做法的問題在于所有用戶都將對4.txt擁有讀寫操作,顯然這種做法不可取。
第二種做法的問題在于James被賦予了過多的權限.所有屬于shu組的文件,James都可以擁
有其等同的權限了。
第三種做法雖然可以達到只限定James用戶一人擁有對4.txt文件的rw權限.但是需要
對sudoers文件進行嚴格的格式控制. 而且當文件數量和用戶很多的時候,這種方法就相當地不靈活了。為了方便讓某些其他用戶獲得權限,我們可以單獨設置一種權限管理叫ACL。

一、Access Control List (ACL)接入控制列表簡介

簡單地來說,ACL就是可以設置特定用戶或者用戶組對于一個文件/文件夾的操作權限。ACL 是由一系列的Access Entry所組成的,每一條Access Entry定義了特定的類別可以對文件擁有的操作權限。Access Entry有三個組成部分:Entry tag type,qualifier(optional),權限。
在下面的例子中,Entry tag type , qualifier(optional)u:James,權限rw。

[root@h(Brad) guanyu]# setfacl -m u:James:rw 4.txt
[root@h(Brad) guanyu]#getfacl 4.txt
# file: 4.txt
# owner: root
# group: root
user::rwx
user:James:rw-
group::rw-
mask::rw-
other::r--

需要掌握的命令也只有三個: getfacl, setfacl, chacl。

二、安裝準備、

1.查看ACL安裝情況。使用rpm命令,檢查系統已經安裝acl。

[root@h(Brad) ~]#rpm -qa acl
acl-2.2.49-7.el6.x86_64

2.使用vim編輯/etc/fstab在 /目錄 標簽default后面添加acl標簽。

[root@h(Brad) ~]#vim /etc/fstab
#
# /etc/fstab
Created by anaconda on Mon Aug 28 17:08:51 2017
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=2f1009b9-8157-4711-b605-f8bec7ae0ed6 / ext4 defaults,acl 1 1
UUID=77d9e29e-26d1-440d-a5ed-aa2929977787 /app ext4 defaults 1 2
UUID=8a3fdf1e-c41c-4fe3-ab8f-4269f1532c93 /boot ext4 defaults 1 2
UUID=fb7024d6-6cbc-4b1f-b543-e1637223a20f swap swap defaults 0 0
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
"/etc/fstab" 16L, 899C written

3.在啟用了acl參數之后重新加載/data分區,出現下面的信息代表分區的acl功能已經正常加載。

[root@h(Brad) ~]#mount -o remount /
[root@h(Brad) ~]#cat /etc/mtab |grep /
/dev/sda5 / ext4 rw,acl 0 0

三、操作

1.操作步驟:
1)查看文件權限狀態;
2)用戶James對4.txt有rw權限;
3)用戶組Rockets對4.txt有r權限;
4)設置mask為x;
5)刪除4.txt的acl設定,還原成文件的原來權限。

2.操作:
在這里我們用的的命令有
getfacl:查看文件/目錄的ACL設定內容
-c過濾文件ugo權限。
setfacl:設置文件/目錄的ACL內容
語法:setfacl [-bkRd] [{-m|-x} acl參數] 文件名
-m :設置后續的acl參數
-x :刪除后續的acl參數
-b :刪除所有的ACL設定參數
-R :遞歸設置acl參數
-d :設置預設的acl參數(只對目錄有效,在該目錄新建的文件也會使用此ACL默認值)
-k :刪除預設的ACL參數
1)查看4.txt權限狀態。

[root@h(Brad) guanyu]#ll 4.txt
-rwxrw—-. 1 root root 237 Sep 1 07:06 4.txt
[root@h(Brad) guanyu]#getfacl 4.txt
# file: 4.txt
# owner: root
# group: root
user::rwx
group::rw-
other::r–

2)讓用戶James對4.txt有rw權限

[root@h(Brad) guanyu]#setfacl -m u:James:rw 4.txt
[root@h(Brad) guanyu]#ll 4.txt
-rwxrw—-+ 1 root root 237 Sep 1 07:06 4.txt
[root@h(Brad) guanyu]#getfacl 4.txt
# file: 4.txt
# owner: root
# group: root
user::rwx
user:James:rw-
group::r–
mask::rw-
other::—

這時我們就可以看到James用戶在ACL里面已經擁有了對文件的讀寫權限.在文件權限的最后多了一個+號。當任何一個文件擁有了ACL_USER或者ACL_GROUP的值以后我們就可以稱它為ACL文件.這個+號就是用來提示我們的。
特別強調如果文件有ACL_MASK值,那么文件權限標識中第二組rw-代表的就是mask值而不再是group 權限了。
當一個文件擁有了ACL_USER或者ACL_GROUP的值時ACL_MASK同時也會被定義,user和group的acl設置了mask的最大值。

3)用戶組Rockets對4.txt有r權限;

[root@h(Brad) guanyu]#setfacl -m g:Rockets:r 4.txt
[root@h(Brad) guanyu]#getfacl -c 4.txt
user::rwx
user:James:rw-
group::rw-
group:Rockets:r–
mask::rw-
other::r–

在設置了ACL之后,再設置mask,acl內容和group權限就會被影響。mask的作用是讓用戶/組對某個文件只有某些權限。mask只對其他用戶和組的權限有影響,而對owner和other的權限是沒有任何影響的。在下面的例子中因為設置了mask即acl用戶、用戶組和acl組權限的上限為–x,所以在他們的權限信息后面多了#effectiv,除了x權限其他都被限制。

4) 設置mask為x;

[root@h(Brad) guanyu]#setfacl -m mask:x 4.txt
[root@h(Brad) guanyu]#ll 4.txt
-rwx–xr–+ 1 root root 237 Sep 1 07:06 4.txt
[root@h(Brad) guanyu]#getfacl 4.txt
# file: 4.txt
# owner: root
# group: root
user::rwx
user:James:rw- #effective:—
group::rw- #effective:—
group:Rockets:r– #effective:—
mask::–x
other::r–

5)刪除4.txt的acl設定還原成文件的原來權限。

[root@h(Brad) guanyu]#setfacl -b 4.txt
[root@h(Brad) guanyu]#ll 4.txt
-rwx—r–. 1 root root 237 Sep 1 07:06 4.txt

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/86885

(1)
manbinnmanbinn
上一篇 2017-09-11 08:20
下一篇 2017-09-11 11:18

相關推薦

  • 人志建,則無敵—if、case練習

    馬哥21期網絡班-9周博客作業 1、寫一個腳本,判斷當前系統上所有用戶的shell是否為可登錄shell(即用戶的shell不是/sbin/nologin);分別這兩類用戶的個數;通過字符串比較來實現; #!/bin/bash for i in `cut -d: -f7 /etc/passwd`;&…

    Linux干貨 2016-09-05
  • 流編輯器Sed(Stream Edit)詳解

    流編輯器Sed(Stream Edit)詳解       Grep 、sed 和awk并稱為文本三劍客。使用Grep就可以很好的實現文本查找的功能,而且簡單有效。然而其卻無法直接對其進行編輯,sed的出現便解決了這一問題。 Sed被稱為流編輯器,它是一種新型的非交互式的文本編輯器,它逐行處理文件或輸入,并將結…

    Linux干貨 2016-08-22
  • Mariadb數據庫復制系列(一):主從復制

      實驗一:MySQL主從復制的實現 1、實驗環境 確保各節點之間的時間同步 2、修改主節點的mysql服務配置文件,讓其符合主從架構中主節點的要求 3、查看主節點現有數據情況和二進制日志使用情況 4、對主節點的數據利用xtrabackup進行完全備份 由于兩個從節點是后期加入,故采取備份主節點的數據,還原到從節點上,然后讓從節點從備份時刻的二進制日志的位置…

    2016-11-24
  • 8月20日程序包管理

    程序包管理 概述    API:Application Program Interface應用編程接口    ABI:Application Binary Interface應用二進制接口    Unix-like,  …

    Linux干貨 2016-08-21
  • 馬哥教育21期網絡班—第8周課程+練習—-成長進行時–不退步

    1、請描述網橋、集線器、二層交換機、三層交換機、路由器的功能、使用場景與區別。 網橋:一種網路裝置,負責網路橋接,將網絡的多個網段在數據鏈路層連接起來。 集線器:將多條以太網線或光纖集合連接在同一段物理介質下的裝置。工作在物理層。 二層交換機:工作在數據鏈路層,交換機內部的CPU會在每個端口成功連接時,通過將MAC地址和端口對應,形成一張MAC表。在今后的通…

    Linux干貨 2016-08-24
  • 馬哥教育網絡21期+第三周作業博客

    1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。 [root@localhost ~]# who | cut -d' ' -f1 | sort -u 2、取出最后登錄到當前系統的用戶的相關信息。 [ro…

    Linux干貨 2016-08-01

評論列表(1條)

  • h
    h 2017-09-13 11:14

    內容不錯,注意排版,繼續加油!

欧美性久久久久