Python PermissionError访问Azure Datalake文件夹

时间:2019-05-15 23:38:58

标签: python permissions azure-active-directory azure-data-lake azure-files

我正在尝试将文件从共享文件夹上传到Azure Datalake gen 1文件夹。

现在,我只是测试连接,并在根目录下列出文件夹:

adlCreds = lib.auth(tenant_id = tenant_id, client_secret = client_secret, client_id = client_id, resource = RESOURCE, azure_username = azure_username,azure_password=azure_password)

adls = core.AzureDLFileSystem(adlCreds, store_name=adlsAccountName)

print(adls.ls())

那很好,我可以看到所有文件夹。

但是当我尝试使用ls方法或walk方法访问这些文件夹之一时,出现此错误:

Traceback (most recent call last):
  File "C:\Users\Python37-32\test_azure.py", line 46, in <module>
    print(adls.ls('/Test'))
  File "C:\Users\Python37-32\lib\site-packages\azure\datalake\store\core.py", line 164, in ls
    files = self._ls(path, invalidate_cache)
  File "C:\Users\Python37-32\lib\site-packages\azure\datalake\store\core.py", line 143, in _ls
    self.dirs[key] = self._ls_batched(key, batch_size=batch_size)
  File "C:\Users\Python37-32\lib\site-packages\azure\datalake\store\core.py", line 124, in _ls_batched
    ls_call_result = self.azure.call('LISTSTATUS', path, **parms)
  File "C:\Users\Python37-32\lib\site-packages\azure\datalake\store\lib.py", line 437, in call
    self.log_response_and_raise(response, PermissionError(path), level=exception_log_level)
  File "C:\Users\Python37-32\lib\site-packages\azure\datalake\store\lib.py", line 345, in log_response_and_raise
    raise exception
PermissionError: Test

我被授予根和“测试”文件夹上的读取,写入和执行特权。

您知道为什么拒绝权限吗?

谢谢您的时间。

2 个答案:

答案 0 :(得分:0)

除了对X文件夹和文件的权限外,您还需要对X的所有祖先执行(X)权限。

您可以在此处进一步阅读有关读取文件所需的权限

在此处读取本文件中的文件所需的权限:

https://docs.microsoft.com/en-us/azure/data-lake-store/data-lake-store-access-control

答案 1 :(得分:0)

添加我的评论作为答案:

该错误是由您刚刚授予根权限(添加到此文件夹(不带所有子项))引起的,您还需要授予所有子项的许可权,然后它将起作用。