錦州市廣廈電腦維修|上門維修電腦|上門做系統|0416-3905144熱誠服務,錦州廣廈維修電腦,公司IT外包服務
topFlag1 設為首頁
topFlag3 收藏本站
 
maojin003 首 頁 公司介紹 服務項目 服務報價 維修流程 IT外包服務 服務器維護 技術文章 常見故障
錦州市廣廈電腦維修|上門維修電腦|上門做系統|0416-3905144熱誠服務技術文章
linux權限控制之ACL

作者: 佚名  日期:2010-07-17 03:45:25   來源: 本站整理

ACL,就是Access Control List,一個文件/目錄的訪問控制列表,可以針對任意指定的用戶/組分配RWX權限

用戶權限管理始終是 Unix 系統管理中最重要的環節。大家對 Linux/Unix 的 UGO 權限管理方式一定不陌生,還有最常用的 chmod 命令。為了實現一些比較復雜的權限管理,往往不得不創建很多的組,并加以詳細的記錄和區分(很多時候就是管理員的噩夢)?梢葬槍δ骋粋用戶對某一文件指定一個權限,恐怕管理員都期待的功能。比如對某一個特定的文件,用戶A可以讀取,用戶B所在的組可以修改,惟獨用戶B不可以……。于是就有了IEEE POSIX 1003.1e這個ACL的標準。所謂ACL,就是Access Control List,一個文件/目錄的訪問控制列表,可以針對任意指定的用戶/組分配RWX權限。現在主流的商業Unix系統都支持ACL。FreeBSD也提供了對ACL的支持。Linux在這個方面也不會落后,從2.6版內核開始支持ACL。

準備工作:

支持ACL需要內核和文件系統的支持,F在2.6內核配合EXT2/EXT3, JFS, XFS, ReiserFS等文件系統都是可以支持ACL的。用自己工作用的物理分區體驗ACL,總是不明智的行為。萬一誤操作導致分區的損壞,造成數據的丟失,損失就大了。作一個loop設備是個安全的替代方法。這樣不需要一個單獨的分區,也不需要很大的硬盤空間,大約有個幾百KB就足夠進行我們的體驗了。OK,下面我使用Fedora Core 5和Ext3文件開始對Linux的ACL的體驗。

首先創建一個512KB的空白文件:

#dd if=/dev/zero of=/opt/testptn bs=1k count=512

和一個loop設備聯系在一起:

#losetup /dev/loop1 /opt/testptn

創建一個ext3文件系統

#mkfs.ext3 /dev/loop1

掛載此文件系統,在掛載時需要告知內核在此設備中使用acl

#mount -o rw,acl /dev/loop1 /mnt

現在我已經得到了一個小型的文件系統。而且是支持ACL的。并且即使徹底損壞也不會影響硬盤上其他有價值的數據?梢蚤_始我們的ACL體驗之旅了。

首先新建一個文件作為實施ACL的對象:

#touch file1

#ll file1

然后看一下這個文件缺省的ACL ,這時這個文件除了通常的UGO權限外,并沒有ACL

#getfacl file1
#file:file1
#owner:root
#group:root
user::rw-
group::r--
other::r--

注意:即使是不支持ACL的情況下,getfacl仍然返回一個這樣的結果,不過setfacl是不能工作的。

下面添加幾個用戶和用戶組,一會我將使用ACL賦予他們不同的權限:

#useradd ceshi1
#useradd ceshi2
#useradd ceshi3
#groupadd ceshi
#usermod -G ceshi ceshi1 ceshi2 ceshi3

在目前情況下,新建的用戶沒有權限在file1中操作

現在我們對file1的ACL賦予ceshi1足夠的權限

#setfacl -m u:ceshi1:rw file1
#su - ceshi1
#echo "ceshi1" >>file1
#cat file1

顯示修改成功,用戶ceshi1可以對file1做讀寫操作,我們來看一下file1的ACL

#getfacl file1
#file:file1
#owner:root
#group:root
user::rw-
user:ceshi1:rw-
group::r--
mask::rw-
other::r--

ll file1
-rw-rw-r--+ root root

權限后面有個‘+’這個說明file1設置了ACL,接下來我們修改一下ceshi1的權限,同時給ceshi這個組讀的權限

#setfacl -m u:ceshi1:rwx,g:ceshi:r file1
#getfacl file1
#file:file1
#owner:root
#group:root
user::rw-
user:ceshi1:rwx
group::rw-
group:ceshi:r--
mask::rwx
other::r--

可以看到設置后的權限,ceshi1已經有了執行的權限,而ceshi這個組也獲得了讀取文件內容的權限。也許有人已經注意到了兩個問題:首先, file1的組權限從r--變成了rw-。其次,mask是什么?為什么也變化了呢?我們先從mask說起。如果說acl的優先級高于UGO,那么 mask就是一個名副其實的最后一道防線。它決定了一個用戶/組能夠得到的最大的權限。這樣我們在不破壞已有ACL的定義的基礎上,可以臨時提高或是降低安全級別:

#setfacl -m mask::r file1
#getfacl file1
#file:file1
#owner:root
#group:root
user::rw-
user:ceshi1:rwx    #effective:r--
group::r--
group:ceshi:r--
mask::r--
other::r--

在ceshi1對應的ACL項的后邊出現了effective的字樣,這是實際ceshi1得到的權限。Mask只對其他用戶和組的權限有影響,對owner和other的權限是沒有任何影響的。執行ls的結果也顯示UGO的設置也有了對應的變化。因為在使用了ACL的情況下,group的權限顯示的就是當前的mask。通常我們把mask設置成rwx,以不阻止任何的單個ACL項。

*需要注意的是,每次修改或添加某個用戶或組的ACL項的時候,mask都會隨之修改以使最新的修改能夠真正生效。所以如果需要一個比較嚴格的mask的話,可能需要每次都重新設置一下mask。

體驗2 - ACL的其他功能:刪除和覆蓋

如何刪除已有的ACL項?

#setfacl -x g:ceshi file1
#getfacl file1
#file:file1
#owner:root
#group:root
user::rw-
user:ceshi1:rwx
group::r--
mask::rwx
other::r--

刪除了ceshi組的權限 ,如果需要去除所有ACL權限,也可以使用-b選項,所有的ACL都會被刪除

#setfacl -d file1
#getfacl file1
#file:file1
#owner:root
#group:root
user::rw-
group::r--
other::r--

我們可以用--set設置一些新的ACL項,并把原有的ACL項全部覆蓋掉,和-m不同,-m選項只是修改已有的配置或是新增加一些,--set選項會把原有的ACL項都刪除,用新的替代,需要注意的是一定要包含UGO的設置,不能象-m一樣只是添加ACL就可以了。如:

#setfacl --set u::rw,u:ceshi1:rw,g::r,o::- file1
#getfacl file1
#file:file1
#owner:root
#group:root
user::rw-
user:ceshi1:rw-
group::r--
mask::rw-
other::---

o::-的完整寫法是other::---,通常我們可以把“-”省掉,但是當權限位只包含一個“-”必須至少保留一個

如果希望對目錄下的所有子目錄都設置同樣的ACL,可以使用-R參數:

#setfacl --set -R u::rw,u:ceshi1:rw,g::r,o::- dir1    ??


如果希望從一個文件讀入ACL,并修改當前的文件的ACL,可以用-M參數:

#cat test.acl
user:testu1:rw-
user:testu2:rw-
group:testg1:r--
group:testg2:r--
mask::rw-
other::---

如果我們希望在一個目錄中新建的文件和目錄都是用一個預定的ACL,那么我們可以使用默認(default)ACL。在對一個目錄設置了默認的ACL以后,每個在目錄中創建的文件會自動繼承目錄的默認ACL作為自己的ACL。用setfacl的-d選項可以做到這一點:

#setfacl -d --set g:ceshi:rwx dir1
#getfacl dir1
# file: dir1
# owner: root
# group: root
user::rwx
group::r-x
other::r-x
default:user::rwx
default:group::r-x
default:group:testg1:rwx
default:mask::rwx
default:other::r-x

默認ACL已經被設置,建立一個文件試試:

#touch dir1/file1
#getfacl /dir1/file1
#owner:root
#group:root
user::rw-
group::r-x                      #effective:r--
group:ceshi:rwx                #effective:rw-
mask::rw-
other::r--

file1自動繼承了dir1對testg1設置的ACL。只是由于mask的存在使得testg1只能獲得rw-權限

體驗4 - 備份和恢復ACL
 



熱門文章
  • 電腦搜不到wifi怎么解決 詳細解決方...
  • 0x0000007e藍屏代碼是什么意思 原因...
  • CPU單核和多核有什么區別 cpu單核和...
  • win7怎么看電腦配置 4個簡易指南告...
  • 鼠標滾輪變成調音量怎么辦 方法詳解...
  • 電腦主機硬盤燈不亮怎么辦 這4個方...
  • 電腦顯示音頻服務未運行怎么辦 超詳...
  • 電腦出現藍屏怎么修復 試試這些方法...
  • logitech無線鍵盤怎么連接電腦 兩種...
  • 電腦鍵盤數字鍵打不出來怎么解鎖 快...
  • 筆記本開不了機怎么解決 4個實用技...
  • Win10 C盤滿了怎么清理 Win10清理C...
  • 錦州廣廈電腦上門維修

    報修電話:13840665804  QQ:174984393 (聯系人:毛先生)   
    E-Mail:174984393@qq.com
    維修中心地址:錦州廣廈電腦城
    ICP備案/許可證號:遼ICP備2023002984號-1
    上門服務區域: 遼寧錦州市區
    主要業務: 修電腦,電腦修理,電腦維護,上門維修電腦,黑屏藍屏死機故障排除,無線上網設置,IT服務外包,局域網組建,ADSL共享上網,路由器設置,數據恢復,密碼破解,光盤刻錄制作等服務

    技術支持:微軟等
    主站蜘蛛池模板: 亚洲人成影院在线无码观看 | 日韩国产成人无码av毛片| 无码丰满熟妇浪潮一区二区AV| 高清无码一区二区在线观看吞精 | 毛片一区二区三区无码| 久久人妻少妇嫩草AV无码蜜桃| 久久无码人妻一区二区三区| 国产成人无码精品久久二区三区| 国产精品无码A∨精品影院| 亚洲AV无码乱码麻豆精品国产| 无码精品人妻一区二区三区免费| 亚洲AV日韩AV高潮无码专区| 国产精品无码久久久久久久久久| 久久午夜福利无码1000合集| 久久久久无码精品| 无码无需播放器在线观看| 少妇人妻无码精品视频| 自拍中文精品无码| 亚洲 另类 无码 在线| 亚洲精品无码久久久久牙蜜区| 亚洲国产精品无码AAA片| 无码人妻丰满熟妇啪啪| 久久久久亚洲AV无码去区首| 无码毛片AAA在线| 久久久无码一区二区三区| 国产成A人亚洲精V品无码性色| 狠狠躁狠狠躁东京热无码专区| 无码精品不卡一区二区三区| 亚洲国产精品无码观看久久| 久久久久久国产精品无码超碰| 亚洲国产精品无码专区影院| 国产AV一区二区三区无码野战| 精品无码人妻一区二区三区不卡 | 亚洲αⅴ无码乱码在线观看性色| 无码AV片在线观看免费| 无码AV岛国片在线播放| 久久久久亚洲AV片无码下载蜜桃| 久久Av无码精品人妻系列 | 亚洲国产成人无码AV在线影院| 精品无码一区二区三区电影| 中文字幕无码亚洲欧洲日韩|