HDFS檔案許可權及ACL訪問控制

2021-07-22 03:57:17 字數 3431 閱讀 8571

1、許可權相關配置

(1)、hdfs-site.xml設定啟動acl

dfs.permissions.enabledname>

truevalue> //預設值為true,即啟用許可權檢查。如果為 false,則禁用

property>

dfs.namenode.acls.enabledname>

truevalue> //預設值為false,禁用acl,設定為true則啟用acl。當acl被禁用時,namenode拒絕設定或者獲取acl的請求

property>

(2)、core-site.xml設定使用者組預設許可權.

fs.permissions.umask-modename>

022value>

property>

ps:建立檔案和目錄時使用的umask,預設值為八進位制022,每位數字對應了擁有者,組和其他使用者。該值既可以使用八進位制數字,如022,也可以使用符號,如u=rwx,g=r-x,o=r-x(對應022)

2、hdfs acl許可權實體類別

(1)、預設acl必須包含所有最小要求的acl項,包括檔案擁有者項,檔案所屬的組項和其它使用者項

即:

user:

:rwx

group:

:r-x

other:

:r-x

(2)、每個acl項由型別,可選的名稱和許可權字串組成,它們之間使用冒號(:)

如:

user:

:rw-

user:

bruce:rwx #effective:r-- //bruce這個使用者實際擁有讀執行許可權 (rwx, r-x(mask) 兩者執行『相與』操作得到實際許可權)

group:

:r-x

#effective:r--

group:

sales:rwx #effective:r--

mask:

:r--

other:

:r--

a、這組acl訪問列表中:檔案的擁有者具有讀寫許可權,檔案所屬的組具有讀和執行的許可權,其他使用者具有讀許可權;除此之外,還有兩個擴充套件的acl項,分別為使用者bruce和組sales,並都授予了讀寫執行的許可權。

b、最大有效許可權mask:mask項是乙個特殊的項,用於過濾授予所有命名使用者,命名組及未命名組的許可權,即過濾除檔案擁有者和其他使用者(other)之外的任何acl項

(3)、預設訪問控制列表:有目錄可能擁有預設訪問控制列表,當建立新檔案或者子目錄時,自動拷貝父輩的預設訪問控制列表到自己的訪問控制列表中,新的子目錄也拷貝父輩預設的訪問控制列表到自己的預設訪問控制列表中。這樣,當建立子目錄時預設acl將沿著檔案系統樹被任意深層次地拷貝。

user::rwx

group

::r-x

other::r

-xdefault:user::rwx

default:user:bruce:rwx #effective:r-x

//有效許可權,『相與』操作後得到

default:group

::r-x

default:group:sales:rwx #effective:r-x

default:mask::r

-xdefault:other::r

-x

3、hdfs acl許可權生效的演算法規則

(1)如果是owner,則取owner的許可權

(2)如果針對使用者設定了acl,則使用者的acl生效

(3)如果使用者在組裡,則取各組acl的並集

(4)其他情況,取other的許可權

(5)default許可權:設定default之後,對新新增的檔案和目錄生效,對於現有的檔案和目錄不生效。

如:目錄a擁有default:user:bruce:rwx許可權,則在目錄a下建立目錄b,則目錄b擁有user:bruce:rwx,default:user:bruce:rwx許可權。

4、hdfs acl shell命令

(1)、顯示某個檔案的許可權

hdfs dfs -getfacl [-r]

如:hdfs dfs -getfacl /test/acl

(2)、賦予許可權:

hdfs dfs -setfacl [-r] -m

如:hdfs dfs -setfacl -r -m user:testuser:rw- /test/acl

(3)、刪除許可權:

hdfs dfs -setfacl [-r] [-b|-k |-x ]|[–set ]

-x 刪除指定的acl許可權

-k 刪除所有預設的許可權

-b 刪除所有的許可權

5、hdfs acl filesystem 相關api

public

void

modifyaclentries(path path, listaclspec) throws ioexception;

public

void

removeaclentries(path path, listaclspec) throws ioexception;

public

void

public

void

removedefaultacl(path path) throws ioexception;

public

void

removeacl(path path) throws ioexception;

public

void

setacl(path path, listaclspec) throws ioexception;

public aclstatus getaclstatus(path path) throws ioexception;

如:給檔案 /user/test/input/acl 設定 user:bruce:r-x default:user:bruce:r-x許可權

**如下:

@test

public void testmodifyacl () throws ioexception

filesystem fs = filesystem.get(hadoopconfiguration.getconf());

path path = new path("/user/test/input/acl/");

fs.modifyaclentries(path, aclentries);

}

參考:

HDFS中的檔案訪問許可權

針對檔案和目錄,hdfs有與posix 可移植作業系統介面 非常相似的許可權模式。一共提供三類許可權模式 唯讀許可權 r 寫入許可權 w 和可執行許可權 x 讀取檔案或列出目錄內容時需要唯讀許可權。寫入乙個檔案,或是在乙個目錄上建立以及刪除檔案或目錄,需要寫入許可權。對於檔案而言,可執行許可權可以忽...

ACL訪問控制許可權

給指定的使用者分配許可權 setfacl m u gest rw folder m表示設定許可權,x表示刪除許可權 u代表使用者,g也可以指定組設定許可權,後面指定組名即可 gest使用者名稱 rw表示許可權 folder表示目錄 getfacl folder file folder owner t...

許可權和ACL訪問控制 01 許可權

rwxrwrwx 左三位 定義user owner 的許可權,屬主許可權 中三位 定義group的許可權,屬組許可權 有三位 定義other的許可權,其他的許可權 程序對檔案的訪問許可權應用模型 程序的屬主與檔案的屬主是否相同。如果相同,則應用屬主許可權 否則去檢查金證的屬於是否屬於檔案的屬組 如果...