文件存储 HDFS 版为目录和文件提供了一种访问权限,该访问权限类似于POSIX文件系统的权限模型。本文简要介绍访问权限的概念、使用方式及其相关注意事项。
访问权限介绍
文件存储 HDFS 版文件系统中的每一个文件或者目录会关联到三个权限集合。这三个集合分别代表了文件或者目录的所有者(Owner),文件或者目录所属的组(Group),所有其他用户(Other)。每一个集合可能包含Read(R)、Write(W)和Execute(X)权限,某个用户需要满足相应的权限要求才能执行对应的操作。
文件和目录的权限说明如下表所示。
|
权限名称 |
文件 |
目录 |
|
Read(R) |
可以读取文件的内容。 |
查看目录需要Read和Execute权限。 |
|
Write(W) |
可以在文件中写入或追加内容。 |
在目录下创建节点需要Write和Execute权限。 |
|
Execute(X) |
HDFS中文件的Execute权限没有意义。 |
遍历目录时需要目录的Execute权限。 |
在文件系统中各个权限信息及其含义如下所示。
-rw-r--r-- 3 root supergroup 0 2022-05-07 09:08 /file
drwxr-xr-x - root supergroup 0 2022-01-14 03:33 /rmstate
drwxr-xr-x - user1 user1 0 2022-03-31 09:51 /testDelete
drwxr-xr-x - user1 supergroup 0 2022-04-01 07:16 /testMkdir
drwxrwxrwx - root supergroup 0 2022-03-31 11:53 /testRoot
-
第一组权限位代表所有者权限。
-
第二组权限位代表组权限(一个组中除所有者拥有的权限)。
-
第三组权限位代表其他用户权限(除当前所有者的组,其他组可以进行访问的权限)。
权限的数字表示方式
在权限中,RWX表示Read(R)+Write(W)+Execute(X),也可以使用更加简洁的数字形式表示权限,Read=4,Write=2,Execute=1。下表简要说明了数字和短格式之间的关系。
|
数字形式 |
短格式 |
说明 |
|
7 |
RWX |
所有权限 |
|
5 |
R-X |
读取+执行权限 |
|
4 |
R-- |
读取权限 |
|
0 |
--- |
无权限 |
权限示例
例如,HDFS中的一个目录结构为/Dir1/Dir2/file,Dir1是根目录中的一个目录,Dir2是Dir1中的一个目录,file是Dir2中的一个文件。当您需要对/,Dir1,Dir2或file进行操作时,您需要满足其对应的操作权限,如下表所示。更多有关Hadoop权限模型的信息,请参见HDFS Permissions Guide。
|
操作 |
/ |
Dir1/ |
Dir2/ |
file |
|
创建目录/Dir1 |
-WX |
--- |
--- |
--- |
|
创建目录/Dir1/Dir2 |
--X |
-WX |
--- |
--- |
|
创建文件/Dir1/Dir2/file |
--X |
--X |
-WX |
--- |
|
读打开/Dir1/Dir2/file |
--X |
--X |
--X |
R-- |
|
写打开/Dir1/Dir2/file |
--X |
--X |
--X |
-W- |
|
删除目录/Dir1 |
-WX |
RWX |
RWX |
--- |
|
删除文件/Dir1/Dir2/file |
--X |
--X |
--- |
--- |
|
Stat file |
--X |
--X |
--X |
--- |
|
list /Dir1 |
--X |
R-X |
--- |
--- |
|
list /Dir1/Dir2 |
--X |
--X |
R-X |
--- |
超级用户
文件存储 HDFS 版提供超级用户组(supergroup)的概念,属于supergroup的用户是超级用户(superuser),超级用户可以跳过权限检查。文件存储 HDFS 版默认的超级用户组名称为supergroup,默认的超级用户为root。
文件存储 HDFS 版提供了用户和组映射功能来管理用户和组的映射关系,您可以通过该功能创建、删除以及查看用户和组的映射关系。更多信息,请参见通过API管理用户和组的映射关系。
umask
在创建文件或者目录的时候,如果不指定权限会有一个默认的权限 。目录的默认权限为0777&(~umask),文件的默认权限为0666&(~umask),umask的默认值为022。您可以通过配置fs.permissions.umask-mode选项修改默认的umask。
使用须知
-
用户身份认证
文件存储 HDFS 版仅支持简单的身份认证,不支持Kerberos。
-
用户组映射管理
文件存储 HDFS 版仅支持使用OpenAPI对单个文件系统的用户和组进行管理,不支持接入LDAP,RANGER等第三方系统。
-
权限管理
文件存储 HDFS 版权限检查兼容posix file system permission model,不支持ACL进行细粒度的权限管理。
常见问题
什么是超级用户和超级用户组?
在超级用户组里的用户统称为超级用户,使用超级用户访问文件系统可以跳过权限检查。
默认的超级用户和超级用户组是什么?
默认的超级用户为root,默认的超级用户组为supergroup。
怎么禁用权限检查?
文件存储 HDFS 版不提供禁用权限检查选项,您可以通过将用户加入supergroup的方式绕过权限检查。
我不关心权限检查,应该怎么做才能保证业务不受权限的影响呢?
目前,文件存储 HDFS 版不提供禁用权限检查选项,您可以使用拥有超级用户权限的用户(该用户位于supergroup组中)来绕过权限检查,使用supergroup组中的用户有如下两种方式:
-
使用默认的超级用户root访问文件系统。
-
将可能使用该文件系统的用户添加到supergroup中,这些用户就拥有超级用户权限。
新建文件系统无法正常访问,返回“permission denied”错误该如何处理?
-
原因分析:新建文件系统的根目录权限为:
0755 root:supergroup。因此非超级用户没有写权限。 -
解决方案:
-
给无法正常访问的用户赋予正确的权限。
-
使用超级用户访问文件系统。
-
如果我使用了1.0.5版本SDK访问了文件系统,再使用2.1.0版本访问发现权限系统被破坏了,该怎么办?
如果是由于使用1.0.5版本SDK访问文件系统导致文件系统的权限遭到破坏,您可以使用2.1.0版本SDK以超级用户的身份将文件系统的权限修改到正确状态。建议只使用2.1.0版本SDK访问文件系统。