当我在MacOS Catalina中使用launchctl时如何解决“不允许的操作”

时间:2019-10-18 01:59:13

标签: python macos sh

我正在设置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>
    ...

4 个答案:

答案 0 :(得分:15)

最后弄清楚...

这是与Catalina新权限系统有关的问题,/bin/bash需要具有[完全磁盘访问权限]。

enter image description here

答案 1 :(得分:0)

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

如果将所有内容移出/Users/gassy/Documents并移至另一个位置(可能位于/opt/var或类似位置,则可能会有些运气,然后确保权限是合理的)。我知道macos对/Users/<user>下的某些导演特别对待,有时以一种不太有用的方式...

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

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