管理 SQL Server 2019 大数据群集 的 HDFS 权限

适用于: SQL Server 2019 (15.x)

重要

Microsoft SQL Server 2019 大数据群集附加产品将停用。 对 SQL Server 2019 大数据群集的支持将于 2025 年 2 月 28 日结束。 具有软件保障的 SQL Server 2019 的所有现有用户都将在平台上获得完全支持,在此之前,该软件将继续通过 SQL Server 累积更新进行维护。 有关详细信息,请参阅公告博客文章Microsoft SQL Server 平台上的大数据选项

HDFS 是一个文件系统,类似于基于 Linux 的文件系统,它使用 POSIX 管理文件权限。 除了传统的 POSIX 权限模型外,HDFS 还支持 POSIX 访问控制列表 (ACL)。 有关详细信息,请参阅有关 ACL 的 Apache Hadoop 文章

下面各部分提供了有关如何使用 Azure Data CLI (azdata) 来管理 HDFS 文件和目录权限的示例。

必备条件

HDFS shell

使用 Azure Data CLI (azdata) 中的 hdfs shell 功能,可以直接在 shell 中发出命令,以管理文件和目录的 HDFS 权限。 基础机制使用 WebHdfs 调用来发出命令

以下命令将打开 shell。

azdata bdc hdfs shell

要获取有关 hdfs shell 的帮助并了解如何发出命令,请在 shell 处于活动状态的情况下运行以下命令。

[hdfs] ?

下面的示例演示如何创建目录、列出目录以及修改目录权限,并为指定用户 bob 提供对目录 sales 的读取、写入和执行权限。

[hdfs] mkdir sales
[hdfs] ls
rwxr-xr-x  hdfs bdcadmins        0 Oct 09 18:02 system/
rwxrwxr-x admin bdcadmins        0 Oct 10 16:47 sales/
--xrwxrwxrwx  hdfs bdcadmins        0 Oct 09 18:03 tmp/
rwxrwxrwx  hdfs bdcadmins        0 Oct 09 17:59 user/

[hdfs] acl modify  '/sales/' 'user:bob:rwx'
acl modify: Change completed.
[hdfs] acl status  '/sales/'
{
  `AclStatus`: {
    `entries`: [
      `user:bob:rwx`,
      `group::r-x`
    ],
    `group`: `bdcadmins`,
    `owner`: `admin`,
    `permission`: `775`,
    `stickyBit`: false
  }
}

使用 Azure Data CLI (azdata) 在 HDFS 中创建目录

在路径 /sales 中创建一个名为 data 的目录。

azdata bdc hdfs mkdir --path '/sales/data'

更改目录或文件的所有者

在 HDFS 中更改目录 data 的所有者用户,并将 alice 设置为所有者用户,将 salesgroup 设置为所有者组。 必须具有所有者身份才可更改所有者。

azdata bdc hdfs chown --owner alice --group 'salesgroup' --path '/sales/data'

使用 chmod 更改文件或目录的权限

使用 chmod 更改文件和目录的权限(适用于所有者、所有者组和其他)。 有关详细信息,请参阅更改 Linux 文件系统的权限。 在 HDFS 中,模式是相同的。 例如:

azdata bdc hdfs chmod --permission 750 --path /sales/data
azdata bdc hdfs chmod --permission 775 --path /sales/data/file.txt

对目录设置粘滞位

对目录设置粘滞位可防止意外删除或重定位文件。 粘滞位限制了删除文件或将文件移动到超级用户、目录所有者或文件所有者的权限。 此设置不会影响文件。 下面的示例通过为权限添加 1 前缀来对目录 users 设置粘滞位。

azdata bdc hdfs chmod --path /sales/users --permission 1750

设置文件和目录的 ACL

要在 HDFS 中对文件和目录设置 ACL,请使用 Azure Data CLI (azdata) 命令。

对目录设置 ACL,并为指定用户 tom 提供对目录 data 的读取、写入和执行权限。

注意

使用 set 命令时,请确保提供完整的 ACL 规范,包括适用于所有者用户、所有者组和其他用户的 ACL 规范。

azdata bdc hdfs acl set --path '/sales' --aclspec  'user::rw-,user:tom:rwx,group::rw-,other::rw-'

目录上的默认 ACL

默认 ACL 允许子目录从父目录继承权限。 仅目录可具有默认 ACL。 创建新文件或子目录后,其自身的访问 ACL 会继承父目录的默认 ACL。 通过这种方式,在创建新的子目录时,默认 ACL 将通过任意深层目录级别向下继承。

下面的示例展示了如何使用 azdata 设置默认 ACL。

azdata bdc hdfs acl set --path '/sale' --aclspec  'user::rw-,user:tom:rwx,group::rw-,other::rw-,default:group::rw-,default:user::rw-,default:other::rw-'