Linux系統ACL許可權設定之setfacl和getfacl
Linux系統ACL許可權設定之setfacl和getfacl
若/u01/app目錄許可權被誤操作,那麼在Linux環境中還可以透過getfacl和setfacl來進行操作: ① getfacl -pR /u01/app > /tmp/bk_lhr_perm_u01_rac1.txt ③ setfacl --restore=/tmp/bk_lhr_perm_u01_rac1.txt
一、setfacl——設定檔案訪問控制列表
語法: setfacl [-bkndRLP] { -m|-M|-x|-X ... } file ...
-m, --modify=acl 更改檔案的訪問控制列表
-M, --modify-file=file 從檔案讀取訪問控制列表條目更改
-x, --remove=acl 根據檔案中訪問控制列表移除條目
-X, --remove-file=file 從檔案讀取訪問控制列表條目並刪除
-b, --remove-all 刪除所有擴充套件訪問控制列表條目
-k, --remove-default 移除預設訪問控制列表
--set=acl 設定替換當前的檔案訪問控制列表
--set-file=file 從檔案中讀取訪問控制列表條目設定
--mask 重新計算有效許可權掩碼
-n, --no-mask 不重新計算有效許可權掩碼
-d, --default 應用到預設訪問控制列表的操作
-R, --recursive 遞迴操作子目錄
-L, --logical 依照系統邏輯,跟隨符號連結
-P, --physical 依照自然邏輯,不跟隨符號連結
--restore=file 恢復訪問控制列表,和“getfacl -R”作用相反
--test 測試模式,並不真正修改訪問控制列表屬性
-v, --version 顯示版本並退出
-h, --help 顯示本幫助資訊
二、getfacl ——獲取檔案訪問控制列表
使用方法: getfacl [-aceEsRLPtpndvh] 檔案 ...
-a, --access 僅顯示檔案訪問控制列表
-d, --default 僅顯示預設的訪問控制列表
-c, --omit-header 不顯示註釋表頭
-e, --all-effective 顯示所有的有效許可權
-E, --no-effective 顯示無效許可權
-s, --skip-base 跳過只有基條目(base entries)的檔案
-R, --recursive 遞迴顯示子目錄
-L, --logical 邏輯遍歷(跟隨符號連結)
-P, --physical 物理遍歷(不跟隨符號連結)
-t, --tabular 使用製表符分隔的輸出格式
-n, --numeric 顯示數字的使用者/組標識
-p, --absolute-names 不去除路徑前的 '/' 符號
-v, --version 顯示版本並退出
-h, --help 顯示本幫助資訊
對於Access ACL,也就是對檔案而言的例子
1)例子
首先建立個521M的檔案
[root@centos7 test]# dd if=/dev/zero of=/test/file bs=521M count=1
記錄了1+0 的讀入
記錄了1+0 的寫出
546308096位元組(546 MB)已複製,120.211 秒,4.5 MB/秒
You have new mail in /var/spool/mail/root
[root@centos7 test]#
檢視file(沒有額外屬性)
[root@centos2 test]# getfacl file
# file: file
# owner: root
# group: root
user::rw-
group::r--
other::r--
讓zhangsan使用者對file擁有rw權
[root@centos2 ~]# setfacl -m u:zhangsan:rw- /test/file
[root@centos2 ~]# cd /test/
[root@centos2 test]# ll
總用量 533512
-rw-rw-r--+ 1 root root 546308096 9月 14 22:53 file
注:在檔案permission的最後多了一個+號,當任何一個檔案擁有了ACL_USER或者ACL_GROUP的值以後我們就可以稱它為ACL檔案,這個+號就是用來提示我們的。
[root@centos2 test]# getfacl --omit-header file
user::rw-
user:zhangsan:rw- #可以看到zhangsan使用者在ACL裡面已經擁有了對檔案的讀寫權。
group::r--
mask::rw-
other::r--
讓財務組有file的r許可權
[root@centos2 test]# setfacl -m g:caiwu:r-- file
[root@centos2 test]# getfacl file
# file: file
# owner: root
# group: root
user::rw-
user:zhangsan:rw-
group::r--
group:caiwu:r-- #財務部裡的成員都有了r許可權
mask::rw-
other::r--
這裡需要重點講一下ACL_MASK,因為這是掌握ACL的另一個關鍵,在Linux file permission裡面大家都知道比如對於rw-rw-r--來說, 當中的那個rw-是指檔案組的permission. 但是在ACL裡面這種情況只是在ACL_MASK不存在的情況下成立。如果檔案有ACL_MASK值,那麼當中那個rw-代表的就是mask值而不再是group permission了。
2)例子
檢視 file2.sh 檔案
[root@centos2 test]# ls -lh file2.sh
-rwxrw-r--. 1 root caiwu 0 9月 15 00:10 file2.sh
[root@centos2 test]#
讓使用者zhang也對file2.sh具有和root一樣的permission。
[root@centos2 test]# setfacl -m user:zhang:rwx file2.sh
[root@centos2 test]# getfacl --omit-header file2.sh
user::rwx
user:root:rwx
group::rw-
mask::rwx
other::r--
[root@centos2 test]#
這裡我們看到zhang已經擁有了rwx的permission,mask值也被設定為rwx,那是因為它規定了ACL_USER,ACL_GROUP和ACL_GROUP_OBJ的最大值,現在我們再來看file2的Linux permission,它已經變成了:
[root@centos2 test]# ls -lh file2.sh
-rwxrwxr--+ 1 root caiwu 0 9月 15 00:10 file2.sh
[root@centos2 test]#
那麼如果現在zhang組的使用者想要執行file2.sh的程式會發生什麼情況呢?它會被permission deny。原因在於實際上caiwu組的使用者只有read and write permission,這裡當中顯示的rwx是ACL_MASK的值而不是group的permission。
所以從這裡我們就可以知道,如果一個檔案後面有+標記,我們都需要用getfacl來確認它的permission,以免發生混淆。
下面我們再來繼續看一個例子,假如現在我們設定file2.sh的mask為read only,那麼caiwu組的使用者還會有write permission嗎?
[root@centos2 test]# setfacl -m mask::r-- file2.sh
[root@centos2 test]# getfacl file2.sh
# file: file2
# owner: root
# group: caiwu
user::rwx
user:root:rwx #effective:r--
group::rw- #effective:r--
mask::r--
other::r--
[root@centos2 test]#
這時候我們可以看到ACL_USER和ACL_GROUP_OBJ旁邊多了個#effective:r--,這是什麼意思呢?讓我們再來回顧一下ACL_MASK的定義。它規定了ACL_USER,ACL_GROUP_OBJ和ACL_GROUP的最大許可權。那麼在我們這個例子中他們的最大許可權也就是read only。雖然我們這裡給ACL_USER和ACL_GROUP_OBJ設定了其他許可權,但是他們真正有效果的只有read許可權。
這時我們再來檢視file.sh的Linux file permission時它的group permission也會顯示其mask的值(r--)
[root@centos2 test]# ls -lh file2.sh
-rwxr--r--+ 1 root caiwu 0 9月 15 00:10 file2.sh
[root@centos2 test]#
Default ACL
Default ACL是指對於一個目錄進行Default ACL設定,並且在此目錄下建立的檔案都將繼承此目錄的ACL。
1)例子
在root使用者建立了一個testdir目錄;希望所有在此目錄下建立的檔案都可以被ming使用者所訪問,那麼我們就應該對testdir目錄設定Default ACL。
[root@centos2 /]# setfacl -d -m user:ming:rw testdir/
[root@centos2 /]# getfacl testdir/
# file: testdir/
# owner: root
# group: root
user::rwx
group::r-x
other::r-x
default:user::rwx
default:user:ming:rw-
default:group::r-x
default:mask::rwx
default:other::r-x
注:這裡我們可以看到ACL定義了default選項,ming使用者擁有了default的read, write, excute/search permission。所有沒有定義的default都將從file permission裡copy過來;
在root使用者在testdir目錄下建立一個test.txt檔案。
[root@centos2 /]# touch /testdir/test.txt
[root@centos2 /]# ls -l /testdir/test.txt
-rw-rw-r--+ 1 root root 0 9月 15 00:48 /testdir/test.txt
[root@centos2 /]# getfacl --omit-header /testdir/test.txt
user::rw-
user:ming:rw-
group::r-x #effective:r--
mask::rw-
other::r--
注:我們看到在testdir下建立的檔案ming使用者自動就有了read and write permission
注:這裡還有一個chacl是用來改變檔案和目錄的Access ACL and Default ACL,它的具體引數大家可以去看man page。我只想提及一下chacl -B。它可以徹底刪除檔案或者目錄的ACL屬性(包括Default ACL),比如你即使用了setfacl -x刪除了所有檔案的ACL屬性,那個+號還是會出現在檔案的末尾,所以正確的刪除方法應該是用chacl -B用cp來複制檔案的時候我們現在可以加上-p選項。
這樣在複製檔案的時候也將複製檔案的ACL屬性,對於不能複製的ACL屬性將給出警告。
mv命令將會預設地移動檔案的ACL屬性,同樣如果操作不允許的情況下會給出警告。
需要注意的幾點 如果你的檔案系統不支援ACL的話,你也許需要重新mount你的file system:mount -o remount, acl [mount point] 如果用chmod命令改變Linux file perm
ission的時候相應的ACL值也會改變,反之改變ACL的值,相應的file permission也會改變。
參考: https://www.cnblogs.com/baichuanhuihai/p/7931865.html
About Me
........................................................................................................................ ● 本文作者:小麥苗,部分內容整理自網路,若有侵權請聯絡小麥苗刪除 ● 本文在itpub、部落格園、CSDN和個人微 信公眾號( xiaomaimiaolhr)上有同步更新 ● 本文itpub地址: http://blog.itpub.net/26736162 ● 本文部落格園地址: http://www.cnblogs.com/lhrbest ● 本文CSDN地址: https://blog.csdn.net/lihuarongaini ● 本文pdf版、個人簡介及小麥苗雲盤地址: http://blog.itpub.net/26736162/viewspace-1624453/ ● 資料庫筆試面試題庫及解答: http://blog.itpub.net/26736162/viewspace-2134706/ ● DBA寶典今日頭條號地址: ........................................................................................................................ ● QQ群號: 230161599(滿) 、618766405 ● 微 信群:可加我微 信,我拉大家進群,非誠勿擾 ● 聯絡我請加QQ好友 ( 646634621 ),註明新增緣由 ● 於 2019-08-01 06:00 ~ 2019-08-31 24:00 在西安完成 ● 最新修改時間:2019-08-01 06:00 ~ 2019-08-31 24:00 ● 文章內容來源於小麥苗的學習筆記,部分整理自網路,若有侵權或不當之處還請諒解 ● 版權所有,歡迎分享本文,轉載請保留出處 ........................................................................................................................ ● 小麥苗的微店: ● 小麥苗出版的資料庫類叢書: http://blog.itpub.net/26736162/viewspace-2142121/ ● 小麥苗OCP、OCM、高可用網路班: http://blog.itpub.net/26736162/viewspace-2148098/ ● 小麥苗騰訊課堂主頁: https://lhr.ke.qq.com/ ........................................................................................................................ 使用 微 信客戶端掃描下面的二維碼來關注小麥苗的微 信公眾號( xiaomaimiaolhr)及QQ群(DBA寶典)、新增小麥苗微 信, 學習最實用的資料庫技術。
........................................................................................................................ |
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26736162/viewspace-2654228/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【linux命令】setfacl和getfaclLinux
- Linux ACL 許可權Linux
- Linux-許可權管理(ACL許可權)Linux
- [Linux]學習⑥④---ACL許可權檢視與設定Linux
- Linux ACL 許可權之進階篇Linux
- Linux系統中檔案許可權ACL功能(上)。薦Linux
- PingCode Wiki 許可權設計之ACLGC
- 許可權模型:ACL模型
- 適配懸浮窗許可權與系統設定修改許可權
- 選單許可權和按鈕許可權設定
- Android系統許可權和root許可權Android
- Linux 筆記分享九:ACL 許可權Linux筆記
- 管理系統之許可權的設計和實現
- 許可權系統設計
- 許可權系統:許可權應用服務設計
- Oracle的物件許可權、角色許可權、系統許可權Oracle物件
- 許可權系統:6個許可權概念模型設計模型
- 許可權系統:許可權應用服務設計Tu
- 如何設定許可權?
- Linux下ACL許可權控制以及用sudo設定使用者對命令的執行許可權Linux
- linux 檔案許可權 s 許可權和 t 許可權解析Linux
- Linux 許可權管理之目錄許可權限制Linux
- Linux系統程式設計(七)檔案許可權系統呼叫Linux程式設計
- 許可權系統設計(2)--operation
- 許可權系統設計(3)-- subject
- 許可權系統設計(4)--resource
- 許可權系統設計--概論
- 許可權管理系統的設計案例 -- 需求定義(2)
- 許可權管理系統的設計案例 -- 需求定義(3)
- 許可權管理系統的設計案例 -- 需求定義(4)
- ubuntu 許可權管理設定Ubuntu
- 許可權系統:一文搞懂功能許可權、資料許可權
- Atitit godaddy 檔案許可權 root許可權設定Go
- MySQL許可權系統MySql
- Oracle系統許可權Oracle
- 系統許可權傳遞和物件許可權傳遞的測試物件
- Linux下Web目錄和檔案安全許可權設定LinuxWeb
- Oracle 使用者、物件許可權、系統許可權Oracle物件