automatorでPythonを実行すると、"Operation Not Permitted"が出てくる
昨日、ブログ用にaタグを簡単に作れるようにするworkflowを公開しました。
automatorを使って、URLからHTMLのリンクタグを自動で作れるようにした
作って実行している最中、なんだかいろいろなエラーに出会ったので、その中で一番致命的だった、主題のエラーについて、対策を書いておこうと思います。
目次
エラーの症状
workflow内で、下記のようにPythonファイルを実行しようとすると、"Operation Not Permitted"とエラーが表示され、動作が止まりました。
/Users/(ユーザー名)/.pyenv/shims/python /Users/(ユーザー名)/Documents/CODE/makeLink.py
エラーの対策
workflow内にPythonコードを格納することで、エラーが表示させないようにしました。
workflowを右クリックしてオプションを表示させ、『パッケージの内容を表示』を選択します。
その後、このように.pyファイルを格納してリンクをすげ替えれば、エラーが出なくなりました。
原因調査
パーミッションが原因ということで、それっぽいワードでググってみると、下記の記事がひっかかりました。
要約すると、SIPというセキュリティ機能が働いて、アクセスが拒否されるということ。
回避するためには、該当のアプリにフルディスクアクセスを許可すれば良いということでした。
- How to Fix Automator's "Operation Not Permitted" Error in macOS Catalina | BrianLi.com
- MarsEditでiTunesアフィリエイトのリンクを簡単に作成・紹介できる「AppHtmlME」の使い方 | beelog.me
- Python - mac automatorでシェルスクリプトの実行でpythonを起動する|teratail
やってみるとうまくいくものの、違うアプリが全面にある状態で、workflowを起動すると、またアクセスが拒否されました。
そのアプリに今後フルディスクアクセスを許可すると、うまくいくようになる。
ということは、実行可能性のあるアプリを全部フルディスクアクセスを許可すれば解決ということになるが、それではセキュリティがガタガタ、ということで、やめました。
そんなこんなで、色々調べ、今回の解決策に辿り着きました。
まとめ
とりあえず解決してよかった。
得体の知れないエラーを解決できると、達成感ありますよね。何もエラー起きないのが一番ですけど。