LINUX-ACL文件訪問控制列表

在 Linux下,對一個(gè)文件(或者資源)可以進(jìn)行操作的對象被分為三類: file owner(文件的擁有者),group(組,可以不是文件擁有者所在的組), other (其他)而對于每一類別又分別定義了讀程储、寫章鲤、執(zhí)行(read, write and execute )權(quán)限以及特殊權(quán)限。但是這些權(quán)限只能搭配使用而已败徊,如果想要對其其他用戶組或者其他用戶里的某一位用戶設(shè)定一些不同的權(quán)限掏缎,就不行了煤杀。
LINUX上的ACL訪問控制列表沪哺,主要的目的是在提供傳統(tǒng)的owner,group,others的read,write,execute權(quán)限之外的局部權(quán)限設(shè)定。ACL可以針對單個(gè)用戶凤粗,單個(gè)文件或目錄來進(jìn)行r,w,x的權(quán)限設(shè)定,特別適用于需要特殊權(quán)限的使用情況柔袁。簡單地來說异逐,ACL就是可以設(shè)置特定用戶或用戶組對于一個(gè)文件/目錄的操作權(quán)限,可以實(shí)現(xiàn)靈活的權(quán)限管理灰瞻,除了文件的所有者,所屬組和其它人燎竖,可以對更多的用戶設(shè)置權(quán)限要销。簡單地來說ACL就是可以設(shè)置特定用戶或者用戶組對于一個(gè)文件/文件夾的操作權(quán)限。
由于ACL是傳統(tǒng)的類unix操作系統(tǒng)權(quán)限的額外支持項(xiàng)目纤掸,因此需要使用ACL必須要有文件系統(tǒng)的支持才行浑塞。目前大多數(shù)的文件系統(tǒng)都支持ACL借跪。(ACL訪問控制列表需要內(nèi)核支持,在Linux內(nèi)核2.6以后默認(rèn)加入了ACL功能)
ACL管理命令: getfacl, setfacl, chacl
acl是一個(gè)可以被acl_from_text程序分析出各用戶權(quán)限的字符串掏愁。該字符串用逗號分隔成多個(gè)片段
每個(gè)片段的形式都如:tag:name:perm
tag可以是下面形式的一種:
"user" (or "u")表示這是一個(gè)用戶的ACL條目仅孩。
"group" (or "g")表示這是一個(gè)用戶組的ACL條目印蓖。
"other" (or "o")表示這是其它的ACL條目。即沒有在ACL指定的用戶和組的ACL條目溅蛉。
"mask" (or "m")表示這是一個(gè)掩碼的ACL條目。在指定其它非用戶屬主的ACL權(quán)限時(shí)船侧,這個(gè)掩碼條目必須被指定,否則執(zhí)行chacl命令會出錯(cuò)预柒。
name可以是用戶名或組名袁梗。如果不指定,那么默認(rèn)是給文件或目錄的屬主或用戶組指定acl權(quán)限淋袖。當(dāng)然name也可以是用戶的uid或者組的gid锯梁。
perm是指該用戶或組所具有的權(quán)限,它是由"rwx"組成的一個(gè)字符串陌凳,什么意思當(dāng)然大家都明白了。如果要使該用戶或組不具有某種權(quán)限蕊肥,簡單的以"-"代替指定的字母就可以了蛤肌。例如"r-x"是只具有讀,執(zhí)行權(quán)限裸准。

getfacl

使用getfacl可以獲取文件訪問控制列表
使用方法: getfacl [-aceEsRLPtpndvh] 文件 ...
-a, --access 僅顯示文件訪問控制列表
-d, --default 僅顯示默認(rèn)的訪問控制列表
-c, --omit-header 不顯示注釋表頭
-e, --all-effective 顯示所有的有效權(quán)限
-E, --no-effective 顯示無效權(quán)限
-s, --skip-base 跳過只有基條目(base entries)的文件
-R, --recursive 遞歸顯示子目錄
-L, --logical 邏輯遍歷(跟隨符號鏈接)
-P, --physical 物理遍歷(不跟隨符號鏈接)
-t, --tabular 使用制表符分隔的輸出格式
-n, --numeric 顯示數(shù)字的用戶/組標(biāo)識
-p, --absolute-names 不去除路徑前的 '/' 符號
-v, --version 顯示版本并退出
-h, --help 顯示本幫助信息

獲取文件ACL訪問控制列表:

getfacl test.txt
# file: test.txt
# owner: root
# group: family
user::rw-
group::rw-
mask::rw-
other::---
前三行以#開頭的定義了文件名,文件所有者和文件擁有組. 這些信息沒有太大的作用,可以用 --omit-header來省略掉
user::rw- 定義了ACL_USER_OBJ, 說明file owner擁有讀和寫的權(quán)限
group::rw- 定義了ACL_GROUP_OBJ,說明文件的group擁有read和write 權(quán)限
mask::rw- 定義了ACL_MASK的權(quán)限為read and write
other::--- 定義了ACL_OTHER的沒有任何權(quán)限操作此文件
ACL由一系列的訪問控制權(quán)限組成炒俱,主要的有如下:
ACL_USER_OBJ: 相當(dāng)于Linux里file_owner的權(quán)限
ACL_USER: 定義了額外的用戶可以對此文件擁有的權(quán)限
ACL_GROUP_OBJ: 相當(dāng)于Linux里group的權(quán)限
ACL_GROUP: 定義了額外的組可以對此文件擁有的權(quán)限
ACL_MASK: 定義了ACL_USER, ACL_GROUP_OBJ和ACL_GROUP的最大權(quán)限
ACL_OTHER: 相當(dāng)于Linux里other的權(quán)限

setfacl

使用setfacl設(shè)定文件訪問控制列表
用法: setfacl [-bkndRLP] { -m|-M|-x|-X ... } file ...
-m, --modify=acl 更改文件的訪問控制列表
-M, --modify-file=file 從文件讀取訪問控制列表?xiàng)l目更改
-x, --remove=acl 根據(jù)文件中訪問控制列表移除條目
-X, --remove-file=file 從文件讀取訪問控制列表?xiàng)l目并刪除
-b, --remove-all 刪除所有擴(kuò)展訪問控制列表?xiàng)l目
-k, --remove-default 移除默認(rèn)訪問控制列表
--set=acl 設(shè)定替換當(dāng)前的文件訪問控制列表
--set-file=file 從文件中讀取訪問控制列表?xiàng)l目設(shè)定
--mask 重新計(jì)算有效權(quán)限掩碼
-n, --no-mask 不重新計(jì)算有效權(quán)限掩碼
-d, --default 應(yīng)用到默認(rèn)訪問控制列表的操作
-R, --recursive 遞歸操作子目錄
-L, --logical 依照系統(tǒng)邏輯权悟,跟隨符號鏈接
-P, --physical 依照自然邏輯,不跟隨符號鏈接
--restore=file 恢復(fù)訪問控制列表峦阁,和“getfacl -R”作用相反
--test 測試模式,并不真正修改訪問控制列表屬性
-v, --version 顯示版本并退出
-h, --help 顯示本幫助信息
-:如果文件名是-驹闰,則setfacl將從標(biāo)準(zhǔn)輸入讀取文件名。
選項(xiàng)-m和-x后邊跟以acl規(guī)則师妙。多條acl規(guī)則以逗號(,)隔開屹培。選項(xiàng)-M和-X用來從文件或標(biāo)準(zhǔn)輸入讀取acl規(guī)則。
選項(xiàng)--set和--set-file用來設(shè)置文件或目錄的acl規(guī)則褪秀,先前的設(shè)定將被覆蓋。
選項(xiàng)-m(--modify)和-M(--modify-file)選項(xiàng)修改文件或目錄的acl規(guī)則若专。
選項(xiàng)-x(--remove)和-X(--remove-file)選項(xiàng)刪除acl規(guī)則蝴猪。

設(shè)置ACL訪問控制列表:

setfacl -m u:zyq:rwx test.sh
user 對應(yīng)ACL_USER_OBJ和ACL_USER簡寫為u
group 對應(yīng)ACL_GROUP_OBJ和ACL_GROUP簡寫為g
mask 對應(yīng)ACL_MASK
other 對應(yīng)ACL_OTHER簡寫為o
第二個(gè)字段稱之為qualifier.也就是上面例子中的zyq和jackuser組.它定義了特定用戶和用戶組
對于文件的權(quán)限.這里我們也可以發(fā)現(xiàn)只有user和group才有qualifier,其他的都為空
第三個(gè)字段就是我們熟悉的權(quán)限了. 它和Linux的權(quán)限一樣定義,這里就不多講了
當(dāng)設(shè)置過ACL訪問控制權(quán)限就會在在文件權(quán)限的最后多了一個(gè)+號。

chacl

chacl是用來更改文件或目錄的訪問控制列表的命令嚎莉。
chacl命令的格式是: chacl acl filename1 filename2
chacl就是一個(gè)改變文件存取控制列表的一個(gè)命令沛豌。
-b 表明這里有兩個(gè)acl需要修改,前一個(gè)acl是文件的acl加派,后一個(gè)是目錄的默認(rèn)acl。
-d 設(shè)定目錄的默認(rèn)acl竹勉,這個(gè)選項(xiàng)是比較有用的娄琉。如果指定了目錄的默認(rèn)acl,在這個(gè)目錄下新建的文件或目錄都會繼承目錄的acl孽水。
-R 只刪除文件的acl
-D 只刪除目錄的默認(rèn)acl,是-d的反向操作杏慰。
-B 刪除文件和目錄默認(rèn)的acl。是-b的反向操作。
-r 遞歸地修改文件和目錄的acl權(quán)限簇搅。
-l 列出文件和目錄的acl權(quán)限。

使用過ACL之后即使用了setfacl -x刪除了所有文件的ACL屬性,那個(gè)+號還是會出現(xiàn)在文件的末尾.如果不想讓他顯示則可以使用chacl -B
用cp來復(fù)制文件的時(shí)候我們現(xiàn)在可以加上-p選項(xiàng).這樣在拷貝文件的時(shí)候也將拷貝文件的ACL屬性.對于不能拷貝的ACL屬性將給出警告
mv命令將會默認(rèn)地移動文件的ACL屬性. 同樣如果操作不允許的情況下會給出警告

MASK和effective

ACL_MASK是掌握ACL的另一個(gè)關(guān)鍵吟税。ACL_MASK規(guī)定了ACL_USER, ACL_GROUP_OBJ和ACL_GROUP的最大權(quán)限.當(dāng)我們設(shè)置一個(gè)文件的ACL_USER或者ACL_GROUP時(shí)姿现,ACL_MASK同時(shí)也會被定義,一但文件設(shè)置ACL之后文件的用戶組權(quán)限位就會被替換成ACL_Mask值。

Default ACL

Default ACL是指對于一個(gè)目錄進(jìn)行Default ACL設(shè)置,并且在此目錄下建立的文件都將繼承此目錄的ACL异旧,ACL定義了default選項(xiàng), 當(dāng)某一個(gè)用戶擁有了default的read, write, excute/search 權(quán)限.但是卻無法刪除和創(chuàng)建文件提佣。如果需要執(zhí)行權(quán)限需要把目錄的ACL_USER修改為那個(gè)用戶后才能在那個(gè)目錄中刪除和創(chuàng)建文件。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末潮针,一起剝皮案震驚了整個(gè)濱河市倚喂,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌端圈,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,695評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件吨灭,死亡現(xiàn)場離奇詭異刑巧,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)吠冤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,569評論 3 399
  • 文/潘曉璐 我一進(jìn)店門恭理,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人涯保,你說我怎么就攤上這事∠Υ海” “怎么了?”我有些...
    開封第一講書人閱讀 168,130評論 0 360
  • 文/不壞的土叔 我叫張陵片排,是天一觀的道長速侈。 經(jīng)常有香客問我,道長倚搬,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,648評論 1 297
  • 正文 為了忘掉前任比默,我火速辦了婚禮盆犁,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘醋奠。我一直安慰自己伊佃,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,655評論 6 397
  • 文/花漫 我一把揭開白布塞祈。 她就那樣靜靜地躺著帅涂,像睡著了一般。 火紅的嫁衣襯著肌膚如雪媳友。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,268評論 1 309
  • 那天哼御,我揣著相機(jī)與錄音,去河邊找鬼看靠。 笑死液肌,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的矩屁。 我是一名探鬼主播爵赵,決...
    沈念sama閱讀 40,835評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼烁峭!你這毒婦竟也來了秕铛?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,740評論 0 276
  • 序言:老撾萬榮一對情侶失蹤鬓梅,失蹤者是張志新(化名)和其女友劉穎谨湘,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體紧阔,經(jīng)...
    沈念sama閱讀 46,286評論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡擅耽,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,375評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了乖仇。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,505評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡航夺,死狀恐怖崔涂,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情缭保,我是刑警寧澤,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布诸老,位于F島的核電站钳恕,受9級特大地震影響别伏,放射性物質(zhì)發(fā)生泄漏忧额。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,873評論 3 333
  • 文/蒙蒙 一类茂、第九天 我趴在偏房一處隱蔽的房頂上張望托嚣。 院中可真熱鬧,春花似錦示启、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,357評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至浙垫,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間夹姥,已是汗流浹背辙诞。 一陣腳步聲響...
    開封第一講書人閱讀 33,466評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留旦部,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,921評論 3 376
  • 正文 我出身青樓容燕,卻偏偏與公主長得像,于是被迫代替她去往敵國和親蘸秘。 傳聞我的和親對象是個(gè)殘疾皇子蝗茁,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,515評論 2 359

推薦閱讀更多精彩內(nèi)容