【问题标题】:how to fix "Operation not permitted" when i use launchctl in macos catalina当我在 macos catalina 中使用 launchctl 时如何修复“不允许操作”
【发布时间】:2020-02-14 23:37:38
【问题描述】:

我正在设置一个launchctl 服务器来定期运行一个python 文件。所以我写了一个.plist 文件,auto.sh 文件,它运行良好。 但是,在我安装了 Macos Catalina 之后,它失败了。 我在 auto.sh 中写“ls -l”来检查文件权限, 日志显示:

ls: .: Operation not permitted
python3: can't open file 'auto.py': [Errno 1] Operation not permitted 

我该如何解决?非常感谢。

这是我的代码:

auto.sh:

#!/bin/bash
. ~/.bash_profile
conda activate base
cd /Users/gassy/Documents/
ls -l
python3 auto.py

我把这样的.plist文件放在/Users/gassy/Library/LaunchAgents/com.gassy.fangzhou.plist中

    ...
    <key>Program</key>
    <string>/Users/gassy/auto/launch.sh</string>
    ...

【问题讨论】:

    标签: python macos sh


    【解决方案1】:

    终于弄明白了……

    是Catalina新权限系统的问题,/bin/bash需要【全盘访问】。

    【讨论】:

    • 谢谢。这也有帮助,如何让 bash 快速进入该列表:apple.stackexchange.com/questions/376474/…
    • 这是我的问题,但我也忘记了我的 .sh 脚本中的 shebang,所以默认情况下它在“sh”而不是“bash”中运行所以请记住你的 shebang:#!/bin /bash
    【解决方案2】:

    我认为您遇到的问题不在于 Python,而在于 auto.py 的文件权限或通向它的路径。使用什么用户帐户来运行脚本?该用户是否对这些可执行文件和父目录都具有必要的权限?我怀疑目录权限的原因是 lsauto.py 一起失败。

    如果您将所有内容移出/Users/gassy/Documents 并移至另一个位置(可能在/opt/var 或类似位置下),然后确保权限正常,您可能会走运一些。我知道macos 对/Users/&lt;user&gt; 下的一些主管特别对待,有时以一种不太有用的方式......

    【讨论】:

    • 只是补充一点:我不会尝试摆弄/Users/gassy/Documents 的权限,我在尝试修改那些“特殊”macos 目录时玩得很不开心。最好别管它,把你的脚本移到不会让 macos 生气的地方......
    • 感谢您的帮助~我尝试将auto.sh 移动到\opt 并通过launchctl start com.gassy.fangzhou 在launchctl 中运行它。但是,它会引发与以前相同的错误
    • @Lucas 您是否也将auto.sh 编辑为cd /opt 而不是cd /Users/gassy/Documents
    • 我把auto.py放在/Users/gassy/Documents的另一个文件夹中,现在我把它移到/opt,它工作!我查了root,发现/Users/gassy/Documents的权限是drwx------@。就像 Macos Catalina 更改了 /Users/&lt;user&gt;/Documents 的权限一样。非常感谢您的帮助!
    【解决方案3】:

    在运行 python3 auto.py 之前,使用 bash 脚本中的 chmod 命令更改文件的权限。

    chmox +x auto.py 应该可以,但是我建议您阅读更多相关信息并具体说明您的用例。

    【讨论】:

    • 这是我一开始的建议,但我认为问题不仅仅是auto.py。请注意,ls 命令在该目录上也失败了。
    【解决方案4】:

    @mingxin 解决方案的修改对我有用:基本上相同的步骤,但不是在安全和隐私中授予对 bash 的完全磁盘访问权限,而是授予对 python3 的完全访问权限(在我的 Big Sur macOS 系统中/usr/bin)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-17
      • 1970-01-01
      • 1970-01-01
      • 2020-01-25
      • 2020-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多