RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Linux ACL權(quán)限詳細(xì)分析

馬哥Linux運(yùn)維 ? 來(lái)源:未知 ? 作者:胡薇 ? 2018-10-22 10:00 ? 次閱讀

ACL 是什么

ACL的全稱是 Access Control List (訪問控制列表) ,一個(gè)針對(duì)文件/目錄的訪問控制列表。它在UGO權(quán)限管理的基礎(chǔ)上為文件系統(tǒng)提供一個(gè)額外的、更靈活的權(quán)限管理機(jī)制。它被設(shè)計(jì)為UNIX文件權(quán)限管理的一個(gè)補(bǔ)充。ACL允許你給任何的用戶或用戶組設(shè)置任何文件/目錄的訪問權(quán)限。

本文的演示環(huán)境為 ubuntu 16.04。

ACL有什么用

既然是作為UGO權(quán)限管理的補(bǔ)充,ACL自然要有UGO辦不到或者很難辦到的本事,例如:

可以針對(duì)用戶來(lái)設(shè)置權(quán)限

可以針對(duì)用戶組來(lái)設(shè)置權(quán)限

子文件/目錄繼承父目錄的權(quán)限

檢查是否支持ACL

ACL需要Linux內(nèi)核和文件系統(tǒng)的配合才能工作,當(dāng)前我們能見到的大多數(shù)Linux發(fā)行版本默認(rèn)都是支持的。但最好還是能夠先檢查一下:

sudo tune2fs -l /dev/sda1 |grep"Default mount options:"

Defaultmount options: user_xattracl

我們能夠看到默認(rèn)情況下(Default mount options:)已經(jīng)加入 acl 支持了。

如何設(shè)置ACL

我們可以使用setfacl和getfacl命令來(lái)設(shè)置或觀察文件/目錄的acl權(quán)限。

setfacl

參數(shù)不多,直接列出來(lái)了:

getfacl

getfacl 文件/目錄名

下面我們通過(guò)一些示例來(lái)演示 ACL 權(quán)限的基本用法。

針對(duì)用戶來(lái)設(shè)置權(quán)限

筆者系統(tǒng)中的當(dāng)前用戶是 nick,再創(chuàng)建兩個(gè)用戶 tester 和 tester1 用來(lái)進(jìn)行測(cè)試:

$sudo adduser tester

$sudo adduser tester1

創(chuàng)建文件 aclfile,檢查其默認(rèn)的權(quán)限信息

把用戶切換為 tester,發(fā)現(xiàn)沒有寫文件的權(quán)限:

這是因?yàn)?other 沒有寫 aclfile 文件的權(quán)限。

下面我們?yōu)?tester 用戶賦予讀寫 aclfile 文件的權(quán)限:

$ setfacl -m u:tester:rw aclfile

修改成功后再次以 tester 用戶的身份向 aclfile 文件寫入數(shù)據(jù),這次已經(jīng)可以正常寫入了。查看 aclfile 文件的權(quán)限:

$ ll aclfile

貌似并沒有發(fā)生什么變化,只是在描述權(quán)限的地方多出了一個(gè) “+” 號(hào)。下面再看看 acl 權(quán)限:

$ getfacl aclfile

多出了一些信息,其中比較重要的是 user:tester:rw-,就是它讓用戶 tester 具有了讀寫 aclfile 的權(quán)限。

針對(duì)用戶組來(lái)設(shè)置權(quán)限

和針對(duì)用戶的設(shè)置幾乎一樣,只是把小寫的 u 換成小寫的 g 就行了。

子文件/目錄繼承父目錄的權(quán)限

這是一個(gè)很棒的例子,它能讓我們創(chuàng)建的子文件或者子文件夾繼承父文件夾的權(quán)限設(shè)置!

$mkdir mydir

$ll -dmydir

$setfacl -md:u:tester:rwx mydir

$getfacl mydir

注意參數(shù) d 在這里起到了決定性的作用。下面是設(shè)置后的 mydir 目錄的權(quán)限屬性:

這次多出了一些以 default 開頭的行,這些 default 權(quán)限信息只能在目錄上設(shè)置,然后會(huì)被目錄中創(chuàng)建的文件和目錄繼承。下面分別在 mydir 目錄下創(chuàng)建文件 testfile 和目錄 testdir,并查看它們的 acl 權(quán)限:

$touch testfile

$mkdir testdir

$getfacl testfile

$getfacl testdir

從上圖可以看到文件 testfile 繼承了父目錄的 acl 權(quán)限,因此用戶 tester 對(duì)它有讀寫權(quán)限。下面再看看 testdir 目錄:

從圖中可以看出,testdir 目錄不僅繼承了 tester 的訪問權(quán)限,還繼承了父目錄上的 default 權(quán)限。也就是說(shuō)我們通過(guò)這種方式設(shè)置在目錄上的權(quán)限可以被子目錄遞歸的繼承下去。

更改 ACL 權(quán)限

-m 選項(xiàng)其實(shí)是在更改文件和目錄的 ACL 權(quán)限

當(dāng)一個(gè)用戶或組的 ACL 權(quán)限不存在時(shí),-m 選項(xiàng)執(zhí)行的是添加操作,

如果一個(gè)用戶或組的 ACL 權(quán)限已經(jīng)存在時(shí),-m 選項(xiàng)執(zhí)行的是更新操作。

我們重新創(chuàng)建一個(gè) aclfile 文件,通過(guò)下面的命令設(shè)置 tester 用戶對(duì)它的訪問權(quán)限:

$ setfacl -m u:tester:rwx aclfile

這時(shí) -m 選項(xiàng)是在添加 ACL 權(quán)限。然后我們修改 tester 用戶的權(quán)限,移除其對(duì) aclfile 的執(zhí)行權(quán)限:

$ setfacl -m u:tester:rw aclfile

這時(shí) -m 選項(xiàng)是在更改現(xiàn)有的 ACL 權(quán)限。接下來(lái)再讓我們?cè)囈幌聻椴煌挠脩艋蚪M設(shè)置 ACL 權(quán)限:

$ setfacl -m g:tester1:rwx aclfile

這次是新添加了 group tester1 的權(quán)限,并且沒有影響 tester 用戶的權(quán)限。

–set 選項(xiàng)會(huì)先清除掉原有的 ACL 權(quán)限,然后添加新的權(quán)限

我們接著設(shè)置 aclfile 文件的 ACL 權(quán)限:

$ setfacl --set u::rw,u:tester2:rwx,g::r,o::- aclfile

需要注意的是一定要包含 UGO 權(quán)限的設(shè)置,不能象 -m 一樣只包含 ACL 權(quán)限。o::- 是另一個(gè)需要注意的地方,其完整的寫法是 other::-,就像 u::rw 的完整寫法是 user::rw- 一樣。通常我們可以把 “-” 省略,但是當(dāng)權(quán)限位只包含 “-” 時(shí),就至少要保留一個(gè)。如果寫成了o::,就會(huì)報(bào)錯(cuò)。

刪除 ACL 權(quán)限

有添加就有刪除,我們可以通過(guò) setfacl 命令的 -x 選項(xiàng)來(lái)刪除指定用戶或組的 ACL 權(quán)限,還可以通過(guò) -b 選項(xiàng)來(lái)清除文件和目錄上所有的 ACL 權(quán)限。

我們創(chuàng)建一個(gè)新的測(cè)試文件 aclfile,并設(shè)置下面的 ACL 權(quán)限:

$ setfacl -m u:tester:rwx,u:tester1:rw,g:tester2:rwx aclfile

下面通過(guò) -x 選項(xiàng)刪除 group tester2 的 ACL 權(quán)限(注意命令中只指定了組的名稱而沒有指定權(quán)限信息):

$ setfacl -x g:tester2 aclfile

查看一下結(jié)果,發(fā)現(xiàn)下圖中已經(jīng)沒有 group:tester2 的權(quán)限信息了:

下面通過(guò) -b 選項(xiàng)一次性刪除 aclfile 上所有的 ACL 權(quán)限:

$ setfacl -b aclfile

-b 選項(xiàng)直接清除了文件上的所有 ACL 權(quán)限。這個(gè)行為對(duì)于目錄來(lái)說(shuō)也是一樣的,這里就不再演示了。

備份和恢復(fù) ACL 權(quán)限

常見的文件操作命令 cp 和 mv 等都支持 ACL 權(quán)限,只是 cp 命令需要加上 -p 參數(shù)。但是 tar 等常見的備份工具不會(huì)保留目錄和文件的 ACL 權(quán)限信息。如果希望備份和恢復(fù)帶有 ACL 權(quán)限的文件和目錄,可以先把 ACL 權(quán)限信息備份到一個(gè)文件里,然后再用 -restore 選項(xiàng)來(lái)恢復(fù)這些信息。下面演示 ACL 權(quán)限的保存和恢復(fù)。我們先創(chuàng)建下面的目錄結(jié)構(gòu):

并分別為 acldir 目錄和 aclfile 文件設(shè)置 ACL 權(quán)限:

然后使用下面的命令導(dǎo)出 acldir 目錄的 ACL 權(quán)限信息并保存到文件 acldir.acl 文件中:

$ getfacl -R acldir > acldir.acl

接下來(lái)刪除掉 acldir 目錄的 ACL 權(quán)限:

$ setfacl -R -b acldir

現(xiàn)在 acldir 目錄及其子文件上的 ACL 權(quán)限都被刪除掉了。最后我們?cè)偻ㄟ^(guò)下面的命令把它們的 ACL 權(quán)限都恢復(fù)回來(lái):

$ setfacl --restore acldir.acl

之前刪除的 ACL 權(quán)限全都恢復(fù)回來(lái)了!

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11292

    瀏覽量

    209323
  • ACL
    ACL
    +關(guān)注

    關(guān)注

    0

    文章

    61

    瀏覽量

    11976

原文標(biāo)題:五分鐘學(xué)會(huì) Linux ACL 權(quán)限的全部?jī)?nèi)容

文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    DVI接口詳細(xì)分析

    DVI接口詳細(xì)分析DVI 接口規(guī)格和定義 DVI 有DVI 1.0 和DVI 2.0 兩種標(biāo)準(zhǔn),其中 DVI 1.0 僅用了其中的一組信號(hào)傳輸信道(data0-data2 ),傳輸圖像的最高像素時(shí)鐘
    發(fā)表于 08-11 09:51

    工程師應(yīng)該掌握的20個(gè)模擬電路(詳細(xì)分析及參考答案).pdf

    工程師應(yīng)該掌握的20個(gè)模擬電路(詳細(xì)分析及參考答案).pdf
    發(fā)表于 04-07 13:28

    三極管特性曲線詳細(xì)分析

    三極管特性曲線詳細(xì)分析,特性曲線看不懂,
    發(fā)表于 06-29 16:34

    uboot代碼詳細(xì)分析

    [url=]uboot代碼詳細(xì)分析[/url]
    發(fā)表于 01-29 13:51

    詳細(xì)分析一下USB協(xié)議

    本文跟大家一起詳細(xì)分析一下USB協(xié)議。
    發(fā)表于 05-24 06:16

    詳細(xì)分析stm32f10x.h

    每日開講---學(xué)習(xí)STM32不得不看的剖析(詳細(xì)分析stm32f10x.h)摘要: 學(xué)習(xí)STM32不得不看的剖析(詳細(xì)分析stm32f10x.h)。/**這里是STM32比較重要的頭文件*******************************************
    發(fā)表于 08-05 07:44

    詳細(xì)分析了VTIM和VMIN的功能

    上一篇文章中,我們詳細(xì)分析了VTIM和VMIN的功能,《嵌入式Linux 串口編程系列2--termios的VMIN和VTIME深入理解》 也明白了這兩個(gè)參數(shù)設(shè)計(jì)的初衷和使用方法,接下來(lái)我們 就詳細(xì)
    發(fā)表于 11-05 07:09

    詳細(xì)分析嵌入式Linux系統(tǒng)啟動(dòng)流程

    在嵌入式Linux專題(一)中已經(jīng)對(duì)嵌入式Linux系統(tǒng)的架構(gòu)及啟動(dòng)流程有了初步的介紹,本文將詳細(xì)分析嵌入式Linux系統(tǒng)啟動(dòng)流程。
    發(fā)表于 11-05 09:25

    請(qǐng)問一下怎樣對(duì)stm32的啟動(dòng)代碼進(jìn)行詳細(xì)分析

    請(qǐng)問一下怎樣對(duì)stm32的啟動(dòng)代碼進(jìn)行詳細(xì)分析呢?
    發(fā)表于 11-26 07:10

    電子工程師需要掌握的20個(gè)模擬電路的詳細(xì)分析

    電子工程師需要掌握的20個(gè)模擬電路的詳細(xì)分析
    發(fā)表于 09-28 06:22

    電子工程師必須掌握的20個(gè)模擬電路詳細(xì)分析

    內(nèi)含參考答案以及詳細(xì)分析
    發(fā)表于 10-07 07:15

    電子整流器工作原理詳細(xì)分析

    電子整流器工作原理詳細(xì)分析
    發(fā)表于 02-27 10:43 ?2.5w次閱讀

    Buck變換器原理詳細(xì)分析

    Buck變換器原理詳細(xì)分析
    發(fā)表于 09-15 17:26 ?30次下載
    Buck變換器原理<b class='flag-5'>詳細(xì)分析</b>

    物聯(lián)網(wǎng)的產(chǎn)業(yè)生態(tài)是怎樣的詳細(xì)分析概述

    物聯(lián)網(wǎng)的產(chǎn)業(yè)生態(tài)是怎樣的詳細(xì)分析概述
    的頭像 發(fā)表于 12-08 10:00 ?5142次閱讀

    正激有源鉗位的詳細(xì)分析

    正激有源鉗位的詳細(xì)分析介紹。
    發(fā)表于 06-16 16:57 ?63次下載
    RM新时代网站-首页