管理 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 作為檔案系統類似於使用 POSIX 取得檔案權限的 Linux 檔案系統。 除了傳統 POSIX 權限模型,HDFS 也支援 POSIX 存取控制清單 (ACL)。 如需詳細資訊,請參閱有關 ACL 的 Apache Hadoop 文章

下列各節提供如何使用 Azure Data CLI (azdata) 來管理 HDFS 檔案和目錄權限的範例。

Prerequisites

HDFS 殼層

Azure Data CLI (azdata) 中的 hdfs 殼層功能可讓您直接在殼層中發出命令,以管理 HDFS 檔案和目錄的權限。 其基礎機制使用 WebHdfs 呼叫來發出命令

下列命令會開啟殼層。

azdata bdc hdfs shell

若要存取 hdfs 殼層的說明,並了解如何發出命令,請在啟用殼層後執行下列命令。

[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

在目錄上設定黏性位元 (Sticky Bit)

在目錄上設定黏性位元可防止意外刪除或重新配置檔案。 黏性位元會限制超級使用者、目錄擁有者或檔案擁有者才有權刪除或移動檔案。 此設定不會影響檔案。 下列範例藉由在權限前面加上 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-'