在 Python 中使用域用户帐户访问 Windows 文件共享

Posted

技术标签:

【中文标题】在 Python 中使用域用户帐户访问 Windows 文件共享【英文标题】:Accessing Windows Fileshares with a domain user account in Python 【发布时间】:2021-12-26 23:46:53 【问题描述】:

我正在开发一种工具来自动生成一些文档并将它们存储在文件共享中。我有一个具有所需访问权限的服务帐户,我正在尝试了解如何最好地指定我想在访问文件共享时使用该帐户。

这是我尝试访问我的测试文件的相关测试代码:

database_path = "\\\\testserver\\testfile.txt"
try:
    with open(database_path, "r") as testfile:
        lines = testfile.readlines()
        print(lines)
        testfile.close()
except FileNotFoundError:
    print("Couldn't access the test file.")

我通过 gitlab 通过 linux 运行程序运行此程序,因此捎带现有的域用户帐户并不是一个理想的解决方案。

有什么想法吗?

【问题讨论】:

【参考方案1】:

您可以使用 cifs-utils 和 mount 简单地将文件共享挂载到 Linux 文件系统上

sudo mount -t cifs -o username=<win_share_user>,password=<password> //<WIN_SHARE_HOST>/<share_name> /mnt/my_share

然后在 Python 中,只需打开您想要的文件,例如open('/mnt/my_share/path/to/file')

你需要在你的 linux 机器上安装 cifs-utils:

apt install cifs-utils 用于 ubuntu/debian 或yum install cifs-utils 用于 Fedora 或apk add cifs-utils 用于 alpine

或者,您可以使用任何支持 samba(Windows 使用的底层标准)文件共享协议的 Python 包,例如 fs.smbfs。

import fs
smb_fs = fs.open_fs('smb://username:password@SAMBAHOSTNAME:port/share')

【讨论】:

你就是那个男人。我以某种方式完全忘记了SMB。谢谢!

以上是关于在 Python 中使用域用户帐户访问 Windows 文件共享的主要内容,如果未能解决你的问题,请参考以下文章

使用来自单个域管理员帐户的O365 REST API访问其他用户日历

怎么实现当域客户端访问linux共享文件服务器时不需要输入帐号密码呢,没加入域的客户端访问则需要提供帐户

cakephp 避免登录用户访问其他用户的帐户

我可以使用 Gmail API 访问同一域中其他用户的邮件列表和设置吗?

删除域帐户/网络帐号密码 重新登录域服务器

域帐户与用户帐户