V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
amet
V2EX  ›  macOS

请教如何为脚本赋予 Full Disk Access 权限

  •  
  •   amet · 2021-10-28 21:19:36 +08:00 · 1636 次点击
    这是一个创建于 1148 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我写了个 Chrome 插件,其中 Native App 部分是一个 Python 3 脚本,通过标准输入输出与插件交互。插件通过 Chrome 调用这个脚本(或者可执行文件)读取 Safari 的 Bookmarks.plist ,因此需要 Full Disk Access 。

    我之前使用 pyinstaller 打包可执行文件,然后为这个文件赋予权限。但不知是不是升级 Monterey 的缘故,现在就算是打包 Hello World 类型的脚本都不能通过完整性校验了。我只有一台 mac ,暂时不能验证。

    • 看了下 Automator.app 创建脚本类型 app ,脚本类型里没有 python3#!/usr/bin/env python3 不能影响最终调用的解释器(或许是我用错了方法);
    • 把权限赋给 /usr/bin/env 虽然可行,但是感觉很危险;
    • 把权限赋给浏览器似乎不能解决;

    请问还有什么好办法?


    关于 PyInstaller 打包失败:

    PyInstaller: 4.5.1
    Python: 3.9.7
    Platform: macOS-12.0.1-x86_64-i386-64bit
    

    使用 pyinstaller ./main.py,其中 main.py 内容如下:

    #!/usr/bin/env python3
    # -*- coding: utf-8 -*-
    import sys
    
    def Main():
        print(sys.version_info)
        sys.exit(0)
    
    if __name__ == '__main__':
        Main()
    

    报错如下:

    Traceback (most recent call last):
      File "/usr/local/bin/pyinstaller", line 8, in <module>
        sys.exit(run())
      File "/usr/local/lib/python3.9/site-packages/PyInstaller/__main__.py", line 126, in run
        run_build(pyi_config, spec_file, **vars(args))
      File "/usr/local/lib/python3.9/site-packages/PyInstaller/__main__.py", line 65, in run_build
        PyInstaller.building.build_main.main(pyi_config, spec_file, **kwargs)
      File "/usr/local/lib/python3.9/site-packages/PyInstaller/building/build_main.py", line 815, in main
        build(specfile, kw.get('distpath'), kw.get('workpath'), kw.get('clean_build'))
      File "/usr/local/lib/python3.9/site-packages/PyInstaller/building/build_main.py", line 762, in build
        exec(code, spec_namespace)
      File "/Users/***/Temp/main.spec", line 23, in <module>
        exe = EXE(pyz,
      File "/usr/local/lib/python3.9/site-packages/PyInstaller/building/api.py", line 524, in __init__
        self.__postinit__()
      File "/usr/local/lib/python3.9/site-packages/PyInstaller/building/datastruct.py", line 159, in __postinit__
        self.assemble()
      File "/usr/local/lib/python3.9/site-packages/PyInstaller/building/api.py", line 761, in assemble
        osxutils.fix_exe_for_code_signing(self.name)
      File "/usr/local/lib/python3.9/site-packages/PyInstaller/utils/osx.py", line 211, in fix_exe_for_code_signing
        assert linkedit_seg.fileoff + linkedit_seg.filesize == \
    AssertionError: Sanity check failed!
    
    4 条回复    2021-11-05 17:38:05 +08:00
    amet
        1
    amet  
    OP
       2021-10-28 22:11:45 +08:00
    我尝试搜索了 `pyinstaller alternative`,试了试 nuitka ,解决了打包为可执行文件的问题
    dingwen07
        2
    dingwen07  
       2021-10-28 23:21:09 +08:00 via iPhone
    Automator.app 创建 app
    里面有 shell ,然后直接 shell 执行 python 脚本
    yzwduck
        3
    yzwduck  
       2021-10-29 07:33:25 +08:00   ❤️ 1
    请先确定是哪个程序需要授予 Full Disk Access:用 spindump 收集 Python 进程信息,然后看它的 Responsible 进程。我觉得在这种使用场景下,需要 Full Disk Access 的很可能是 Chrome 浏览器。
    LoneFireBlossom
        4
    LoneFireBlossom  
       2021-11-05 17:38:05 +08:00 via iPhone
    一台 Mac 也可以装多个系统我记得 你可以搜一下
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1035 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 22:03 · PVG 06:03 · LAX 14:03 · JFK 17:03
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.