自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

靈活運(yùn)用Linux中的文件/目錄訪問控制機(jī)制

安全 網(wǎng)站安全
文件/目錄訪問控制是Linux操作系統(tǒng)安全的重要組成部分。傳統(tǒng)的Linux操作系統(tǒng)支持用戶-用戶組-其它用戶的訪問控制機(jī)制,來限定系統(tǒng)用戶對文件/目錄的訪問權(quán)限,該機(jī)制已經(jīng)廣泛為用戶所接受和應(yīng)用。

文件/目錄訪問控制是Linux操作系統(tǒng)安全的重要組成部分。傳統(tǒng)的Linux操作系統(tǒng)支持用戶-用戶組-其它用戶的訪問控制機(jī)制,來限定系統(tǒng)用戶對文件/目錄的訪問權(quán)限,該機(jī)制已經(jīng)廣泛為用戶所接受和應(yīng)用。而在實際的使用過程中,用戶意識到在很多應(yīng)用場景該機(jī)制并不能靈活、高效地滿足訪問控制需求,因而自Linux內(nèi)核2.6版本開始便支持更為靈活的ACL(訪問控制列表)機(jī)制。本文將通過實例來詳細(xì)介紹這兩種機(jī)制的原理及使用。

1、傳統(tǒng)的用戶-用戶組-其他用戶(UGO)訪問控制機(jī)制

UGO(user,group,other)模式原理

Linux系統(tǒng)中的每個文件和目錄都有訪問許可權(quán)限,通過其確定誰可以通過何種方式對文件和目錄進(jìn)行訪問和操作。文件或目錄的訪問權(quán)限分為只讀,只寫和可執(zhí)行三種。以文件為例,只讀權(quán)限表示只允許讀其內(nèi)容,而禁止對其做任何的更改操作;只寫權(quán)限允許對文件進(jìn)行任何的修改操作;可執(zhí)行權(quán)限表示允許將該文件作為一個程序執(zhí)行。文件被創(chuàng)建時,文件所有者自動擁有對該文件的讀、寫和可執(zhí)行權(quán)限,以便于對文件的閱讀和修改。用戶也可根據(jù)需要把訪問權(quán)限設(shè)置為需要的任何組合。

有三種不同類型的用戶可對文件或目錄進(jìn)行訪問:文件所有者,同組用戶、其他用戶。所有者一般是文件的創(chuàng)建者。它可以允許同組用戶有權(quán)訪問文件,還可以將文件的訪問權(quán)限賦予系統(tǒng)中的其他用戶。在這種情況下,系統(tǒng)中的每一位用戶都能訪問該用戶擁有的文件或目錄。

每一個文件或目錄的訪問權(quán)限都有三組,每組用三位表示,分別為文件屬主的讀、寫和執(zhí)行權(quán)限;與屬主同組的用戶的讀、寫和執(zhí)行權(quán)限;系統(tǒng)中其他用戶的讀、寫和執(zhí)行權(quán)限。當(dāng)用ls-l命令顯示文件或目錄的詳細(xì)信息時,最左邊的一列為文件的訪問權(quán)限。例如:

#ls-l

總計76

-rw-------1rootroot79711-0620:41anaconda-ks.cfg

drwxr-xr-x2rootroot409611-0613:50Desktop

-rw-r--r--1rootroot4484311-0620:40install.log

-rw-r--r--1rootroot751311-0620:35install.log.syslog

橫線代表空許可(即表示不具有該權(quán)限)。r代表只讀,w代表寫,x代表可執(zhí)行。注意:這里共有10個位置。第1個字符指定了文件類型。在通常意義上,一個目錄也是一個文件。如果第1個字符是橫線,表示是一個非目錄的文件。如果是d,表示是一個目錄。后面的9個字符每三個構(gòu)成一組,依次表示文件主、組用戶、其他用戶對該文件的訪問權(quán)限。

確定了一個文件的訪問權(quán)限后,用戶可以利用Linux系統(tǒng)提供的chmod命令來重新設(shè)定不同的訪問權(quán)限。也可以利用chown命令來更改某個文件或目錄的所有者。

2、擴(kuò)展的訪問控制列表(ACL)方式

為什么要采用ACL

UGO訪問控制機(jī)制在很多情況下難以滿足實際文件/目錄訪問授權(quán)的需求,比如,要設(shè)定一個組中的部分用戶對特定的文件/目錄具有讀取和訪問權(quán)限(rw-),而另外一部分用戶只能具備讀權(quán)限(r--);這在傳統(tǒng)的Linux訪問控制中無法通過單純地建立新的組和用戶來實現(xiàn)。因此,為了解決這些問題,人們提出了一種新的訪問控制方法,也就是訪問控制列表(ACL,AccessControlList)。

ACL是一個POSIX(可移植操作系統(tǒng)接口,PortableOperatingSystemInterface)標(biāo)準(zhǔn)。目前,支持ACL需要內(nèi)核和文件系統(tǒng)的支持?,F(xiàn)在2.6內(nèi)核配合EXT2/EXT3,JFS,XFS,ReiserFS等文件系統(tǒng)都是可以支持ACL的。在目前主流的發(fā)行套件,如RedHatEnterpriseLinux(RHEL)5、RHEL6、Fedora16等等,都已經(jīng)支持ACL。

ACL的類型及權(quán)限位

ACL是由一系列的AccessEntry所組成的。每一條AccessEntry定義了特定的類別可以對文件擁有的操作權(quán)限。AccessEntry主要包括6個,可分為兩大類:一類包括owner、owninggroup和other,對應(yīng)傳統(tǒng)UGO機(jī)制中的user、group和other;一類則包括nameduser、namedgroup和mask。這六類的主要說明如下:

user:相當(dāng)于Linux里文件所有者的permission

nameduser:定義了額外的用戶可以對此文件擁有的permission

group:相當(dāng)于Linux里group的permission

namedgroup:定義了額外的組可以對此文件擁有的permission

mask:定義了nameduser,namedgroup和group的***權(quán)限

other:相當(dāng)于Linux里other的permission

舉個簡單的例子,對于如下的ACLEntry的定義:

#file:example.xml

#owner:liyang

#group:operation

user::rwx

user:shengping:rw-

group::rw-

group:dev:r-x

mask::rwx

other::r—

其中,前面三個以#開頭的定義了文件名、文件的所有者和所有者所在的組。后面緊跟著的六行則說明了如下的問題:

user::rwx說明文件所有者擁有讀寫和執(zhí)行權(quán)限

user:shengping:rw-定義了用戶shengping擁有對文件的讀寫權(quán)限

group::rw-說明文件的group擁有讀寫權(quán)限

group:dev:r-x定義dev組擁有對文件的讀和執(zhí)行權(quán)限

mask::rwx定義了mask的權(quán)限為讀

other::r--定義了other用戶的權(quán)限為讀

值得特別注意的是:mask的rwx權(quán)限定義,決定了user:shengping,group和group:dev對文件的***權(quán)限分別是rw、rw和rx。這也是mask這個ACLEntry的用途所在,可以用它來批量控制權(quán)限。當(dāng)然,在實際的使用過程中,并不需要用戶對該Entry直接進(jìn)行操作,而只需要使用相應(yīng)的setfacl命令即可,系統(tǒng)將會根據(jù)該命令的執(zhí)行來自動生成上述Entry項,這其中就包含了mask這個Entry項。#p#

ACL的基本命令

ACL的主要命令有2個:getfacl和setfacl。Getfacl用于或取文件或者目錄的ACL權(quán)限信息,而setfacl則用于設(shè)置文件或者目錄的ACL權(quán)限信息。下面分別對他們的使用進(jìn)行簡單介紹。

Getfacl-獲取ACL權(quán)限信息

getfacl命令用于獲取文件的ACL權(quán)限信息,其基本用法為:getfacl[文件/目錄名]。

舉個例子,首先,使用touch命令先建立一個測試文件acl_test:

$touchfileacl_test

然后,使用ls命令來查看該文件的權(quán)限訪問屬性,發(fā)現(xiàn)其并沒有加入acl權(quán)限,因為沒有出現(xiàn)“+”符號:

$ls-lacl_test

-rw-rw-r--1gavingavin012-2011:49acl_test

接著,使用getfacl命令來獲取文件的ACL權(quán)限信息,得到如下結(jié)果:

$getfaclacl_test

#file:acl_test

#owner:gavin

#group:gavin

user::rw-

group::rw-

other::r—

值得注意的是:即使該文件系統(tǒng)上沒有開啟ACL選項,getfacl命令仍然可用,不過只顯示默認(rèn)的文件訪問權(quán)限,即與ls-l顯示的內(nèi)容相似。

Setfacl-設(shè)置ACL權(quán)限

為了設(shè)置文件的ACL權(quán)限,需要使用setfacl命令來詳細(xì)設(shè)置文件的訪問權(quán)限,其基本用法如下:

setfacl–[參數(shù)][文件/目錄],其常用的參數(shù)及作用如下所示:

-m:建立一個ACL規(guī)則

-x:刪除一個ACL規(guī)則

-b:刪除全部的ACL規(guī)則

-set:覆蓋ACL規(guī)則

下面來詳細(xì)介紹如何使用setfacl來設(shè)置文件/目錄的ACL權(quán)限。

(1)添加/修改ACL規(guī)則

需要使用-m選項來進(jìn)行操作。

舉個例子,使用該命令為用戶gavin和組test設(shè)置acl_test文件的讀寫權(quán)限,并使用getfacl查看設(shè)置結(jié)果:

$setfacl-mu:gavin:rw,g:test:racl_test

$getfaclacl_test

#file:acl_test

#owner:gavin

#group:gavin

user::rw-

user:gavin:rw-

group::rw-

group:test:r--

mask::rw-

other::r—

在上面的命令示例中,可以清楚地看到加粗部分user:gavin、group:test、mask這3個ACLEntry的出現(xiàn),表明對文件進(jìn)行了ACL權(quán)限設(shè)置,否則,不會出現(xiàn)該標(biāo)識。為了進(jìn)一步驗證,我們使用ls-l來查看該文件的權(quán)限位中是否多了“+”這個標(biāo)識位,如下所示:

$ls-lacl_test

-rw-rw-r--+1gavingavin012-2011:49acl_test

其中,user:gavin、group:test為我們設(shè)置的訪問權(quán)限,而mask::rw為自動添加的內(nèi)容。

(2)刪除ACL規(guī)則

使用-x選項可以方便地刪除指定用戶對指定文件/目錄的訪問權(quán)限。

以下示例刪除用戶gavin對文件acl_test的訪問權(quán)限:

$setfacl-xu:gavinacl_test

$getfaclacl_test

#file:acl_test

#owner:gavin

#group:gavin

user::rw-

group::rw-

group:test:r--

mask::rw-

other::r--

$ls-lacl_test

-rw-rw-r--+1gavingavin012-2011:49acl_test

通過上述2段ACL權(quán)限顯示的對比可以清楚地看到:用戶gavin對于文件acl_test的訪問權(quán)限已經(jīng)完全刪除了,表現(xiàn)為user:gavin:rw-已經(jīng)不存在了。這里提醒注意的是:我們不能夠通過setfacl命令來指定刪除用戶/組對文件/目錄的某一個特定權(quán)限(如r、w或者x)。同時,也可以看到,使用ls-l命令顯示文件的9個權(quán)限位還是沒有改變,因為改變的只是ACL權(quán)限,而不是最基本的user、group和others權(quán)限。

(3)刪除文件/目錄的所有ACL規(guī)則

使用-b選項可以刪除文件/目錄的ACL權(quán)限。如下命令將刪除文件acl_test的所有ACL權(quán)限。可以看到,使用getfacl命令來查看是,mask項已經(jīng)消失,即該文件已經(jīng)沒有了所有的ACL權(quán)限:

$setfacl-bacl_test

$getfaclacl_test

#file:acl_test

#owner:gavin

#group:gavin

user::rw-

group::rw-

other::r—

(4)覆蓋文件的原有ACL規(guī)則

需要使用--set選項。此處需要強(qiáng)調(diào)一下-m選項和--set選項的區(qū)別:-m選項只是修改已有的配置或是新增加一些;而--set選項和-m不同,它會把原有的ACL項全都刪除,并用新的替代。另外,--set選項的參數(shù)中一定要包含UGO的設(shè)置,不能象-m一樣只是添加ACL就可以了。

以下示例該選項的使用方法:

$setfacl--setu::rw,g::rw,o::r,u:gavin:rwx,g:test:rxacl_test

$getfaclacl_test

#file:acl_test

#owner:gavin

#group:gavin

user::rw-

user:gavin:rwx

group::rw-

group:test:r-x

mask::rwx

other::r--

$ls-lacl_test

-rw-rwxr--+1gavingavin012-2011:49acl_test

這里需要提醒注意的是:上述acl_test文件的權(quán)限標(biāo)識位中的group的rwx權(quán)限,并不是表明acl_test文件所屬用戶的用戶組對其有x權(quán)限,實際上只具有rw權(quán)限,而是因為在group:test:r-x中指定了test這個組具有x權(quán)限,所以ACL機(jī)制在這個標(biāo)識位上進(jìn)行了體現(xiàn),在實際的應(yīng)用中要特別注意,切記不要弄混淆了。

(5)其他選項

除了上述介紹的4類用法外,setfacl還可以使用如下一些選項,如下表,供大家在實際使用中參考:

為目錄創(chuàng)建默認(rèn)ACL

在日常的使用過程中,經(jīng)常是通過對目錄來設(shè)定ACL權(quán)限來滿足應(yīng)用的需求,而很少僅僅通過設(shè)置特定的文件來實現(xiàn),因為這樣做比較繁瑣和低效。因此,下面就介紹如何來為目錄創(chuàng)建默認(rèn)的ACL。

如果希望在一個目錄中新建的文件和目錄都使用同一個預(yù)定的ACL,那么我們可以使用默認(rèn)ACL(DefaultACL)。在對一個目錄設(shè)置了默認(rèn)的ACL以后,每個在目錄中創(chuàng)建的文件都會自動繼承目錄的默認(rèn)ACL作為自己的ACL。

具體的設(shè)置命令為:setfacl-d[目錄名]。

下面的例子對新建的test目錄進(jìn)行ACL權(quán)限設(shè)置,并在其中新建了test1和test2文件,來看看默認(rèn)ACL的設(shè)置情況。

首先,對文件夾test進(jìn)行ACL權(quán)限查看如下:

$getfacltest

#file:test

#owner:gavin

#group:gavin

user::rwx

group::rwx

other::r-x

接著,對其進(jìn)行權(quán)限設(shè)置如下:

$setfacl-d-mg:test:rtest

$getfacltest

#file:test

#owner:gavin

#group:gavin

user::rwx

group::rwx

other::r-x

default:user::rwx

default:group::rwx

default:group:test:r--

default:mask::rwx

default:other::r-x

可以看到,經(jīng)過setfacl設(shè)置后,該文件夾的權(quán)限增加了以default開始的幾項,表明設(shè)置成功。

然后,建立兩個新的文件,然后查看他們的ACL權(quán)限信息如下:

$touchtest1test2

$getfacltest1

#file:test1

#owner:gavin

#group:gavin

user::rw-

group::rwx#effective:rw-

group:test:r--

mask::rw-

other::r--

$getfacltest2

#file:test2

#owner:gavin

#group:gavin

user::rw-

group::rwx#effective:rw-

group:test:r--

mask::rw-

other::r--

可以清楚地看到:文件test1和test2自動繼承了test設(shè)置的ACL。

備份和恢復(fù)ACL

目前,Linux系統(tǒng)中的主要的文件操作命令,如cp、mv、ls等都支持ACL。因此,在基本的文件/目錄操作中可以很好地保持文件/目錄的ACL權(quán)限。然而,有一些其它的命令,比如tar(文件歸檔)等常見的備份工具是不會保留目錄和文件的ACL信息的。因此,如果希望備份和恢復(fù)帶有ACL的文件和目錄,那么可以先把ACL備份到一個文件里,待操作完成以后,則可以使用--restore選項來恢復(fù)這個文件/目錄中保存的ACL信息。

下面給出一個具體的例子來進(jìn)行說明。

(1)獲取文件acl_test的ACL權(quán)限

$getfaclacl_test

#file:acl_test

#owner:gavin

#group:gavin

user::rwx

user:test:r--

group::---

mask::r--

other::---

(2)將該文件的ACL權(quán)限保存至acl_test.acl文件中并進(jìn)行查看

$getfaclacl_test>acl_test.acl

$catacl_test.acl

#file:acl_test

#owner:gavin

#group:gavin

user::rwx

user:test:r--

group::---

mask::r--

other::---

(3)使用tar命令進(jìn)行文件操作,并查看生成文件acl.tar的ACL權(quán)限,發(fā)現(xiàn)其并不具備ACL權(quán)限

$tarczvfacl.taracl_test

acl_test

$getfaclacl.tar

#file:acl.tar

#owner:gavin

#group:gavin

user::rw-

group::rw-

other::r--

(4)刪除acl_test文件,并釋放acl.tar,查看其ACL權(quán)限,發(fā)現(xiàn)經(jīng)過tar命令后,acl_test文件不在具備第(1)步顯示的任何ACL權(quán)限,表明tar命令不能保持文件的ACL權(quán)限

$rm-rfacl_test

$tar-xzvfacl.tar

acl_test

$getfaclacl_test

#file:acl_test

#owner:gavin

#group:gavin

user::rwx

group::r--

other::---

(5)使用命令從文件恢復(fù)acl_test的ACL權(quán)限,進(jìn)行查看,表明成功恢復(fù)。

$setfacl--restoreacl_test.acl

$getfaclacl_test

#file:acl_test

#owner:gavin

#group:gavin

user::rwx

user:test:r--

group::---

mask::r--

other::---

【編輯推薦】

  1. 黑客稱將推出允許Windows Phone自定義文件夾工具
  2. 文件夾病毒的防治措施
  3. Imperva通過代理技術(shù)加強(qiáng)文件保護(hù)
  4. 木馬強(qiáng)化惡意文件迷惑性
責(zé)任編輯:于爽 來源: TechTarget中國
相關(guān)推薦

2011-07-08 13:56:00

域控制器服務(wù)器

2009-12-07 17:20:29

PHP stdClas

2009-10-23 15:30:53

無線接入技術(shù)

2011-07-25 16:25:47

2019-10-21 15:30:54

JS技巧前端

2009-02-20 10:59:21

Vista幫助系統(tǒng)使用技巧

2010-04-21 14:56:23

Unix 線程

2010-04-27 17:06:16

AIX vmstat

2009-07-01 17:58:20

JSP

2013-04-10 10:39:57

2013-04-07 10:15:34

2010-05-27 13:32:36

IIS服務(wù)安全認(rèn)證

2024-01-26 16:28:28

C++動態(tài)內(nèi)存開發(fā)

2021-07-12 07:08:52

Spring Boot集成框架

2016-10-08 12:46:08

Linux監(jiān)控限制

2012-02-04 14:56:52

JP1數(shù)據(jù)中心

2009-12-01 11:33:03

PHP判斷字符串的包含

2011-08-17 09:47:55

windows7搜索

2011-08-23 18:30:59

MySQLTIMESTAMP

2021-10-08 06:50:31

Volatile設(shè)計原理
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號