Разрешить всем доступ для записи через python - PullRequest
2 голосов
/ 20 мая 2019

Итак, начнем с базовой проблемы;

Программа записывает файл как пользователь с повышенными правами.

В дальнейшем: Эта же программа пытается перезаписать файл без повышенных прав.

В Windows это конфликтует с:

PermissionError: [Errno 13] В доступе отказано: 'filepath'

  • Мне нужно, чтобы это работало на Linux / Windows / Mac , хотя вроде бы В данный момент Windows - единственная проблема, поэтому я попытался исправить это с помощью методов Windows на Windows. CHMOD не работает под окна в любом случае.
  • Итак, проблема в том, что файл принадлежит администратору или другой пользователь с расширенными правами при запуске программы пользователь. Если я могу просто создать файл с "everybody write" разрешение, то это не будет проблемой.
  • Я не нашел переносимого способа сделать это на чистом питоне. Я могу только удалить флаг 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)

И поэтому не переносимый. Я также не нашел способа вручную создать SID "Everyone", документы в этом отношении довольно минимальны. Но я также могу следовать не по той кроличьей норе.

Редактировать: Если это имеет значение, то, по крайней мере, в данном конкретном случае, все соответствующие файлы находятся в «% programdata% / programname / *» в Windows.

...