【问题标题】:Allow everyone write access through python允许每个人通过python进行写访问
【发布时间】:2019-05-20 11:17:50
【问题描述】:

那么,让我们从基本问题开始吧;

程序以提升权限的用户身份写入文件。

稍后: 同一程序试图在没有提升权限的情况下覆盖文件。

在 Windows 中,这与:

PermissionError: [Errno 13] Permission denied: 'filepath'

  • 我需要它才能在 Linux/Windows/Mac 上工作,尽管它看起来像 windows是目前唯一出现此问题的,所以我尝试了 用windows上的windows方法修复它。 CHMOD 下不工作 无论如何都是窗户。
  • 所以,问题是,文件归管理员所有,或者 程序运行时具有扩展权限的另一个用户 用户。如果我可以用“everybody write”创建文件 许可,那么这不是问题。
  • 我发现在纯 python 中没有可移植的方法。我只能删除 read-only 标志,但它不能解决所有权问题。

所以我尝试了 win32security 但是,对 LookupAccountName 的调用取决于区域设置:

>>> win32security.LookupAccountName(None, "Everyone")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
pywintypes.error: (1332, 'LookupAccountName', 'Zuordnungen von Kontennamen und Sicherheitskennungen wurden nicht durchgeführt.')
>>> win32security.LookupAccountName(None, "Jeder")
(<PySID object at 0x00000184AA586560>, '', 5)

因此不便携。我还发现无法手动创建“Everyone”SID,在这方面文档相当少。但我也可能走错了兔子洞。

编辑:如果重要的话,至少在这种特殊情况下,所有相关文件都在 Windows 中的“%programdata%/programname/*”下。

【问题讨论】:

    标签: python multiplatform


    【解决方案1】:

    在 1903 年的时间范围内,其中一个 Windows 更新解决了这个问题。一些额外的挖掘似乎表明这是 Windows 中的一个错误,如果系统是域的一部分并且所有权将属于域用户。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-06
      • 1970-01-01
      • 1970-01-01
      • 2015-01-27
      • 2017-02-17
      • 1970-01-01
      • 1970-01-01
      • 2015-03-21
      相关资源
      最近更新 更多