結論
ダウンロードしたとき、ファイルつくに拡張属性com.apple.quarantine
がわるさをしていたみたい。
なので以下のコマンドでcom.apple.quarantine
削除をする。
xattr -d com.apple.quarantine ./cgi-bin/upload_file.py
ことの始まり
前提
├── cgi-bin
│ └── upload_file.py
└── local_server.py
local_server.py
import http.server
http.server.test(HandlerClass=http.server.CGIHTTPRequestHandler)
cgi-bin/upload_file.py
#!/usr/bin/env python3
print("Content-Type: text/plain")
print("")
print("Hello World")
-
upload_file.py
は権限755を割り当ててある - 記事書いてる人はPython初心者
「PythonでCGIを利用しCGI経由でPythonを実行しよう。」という内容の課題だった。
課題のテンプレートからダウンロードしてブラウザからアクセスしても
zsh: operation not permitted: ./cgi-bin/upload_file.py
Permission deniedではなく上記のエラーが出てきた。
試したこと
フルディスクアクセス
調べるとフルディスクアクセスがどうのこうので思い当たる節に当ててみた。
- terminal
- pythonの実行ファイル
- zsh
しかしどれに与えても今回は解決する様子がなかった。
xattrを外す(今回の原因)
調べてるとこんなフォーラムがあった。
operation not permitted running shell scripts
どうやらファイルにはxattrというファイルに拡張属性をつける機能があるらしくその操作と説明は
xattr コマンドの使い方/ヘルプの日本語訳(macOS でパーミッションの@付き拡張属性の操作)
が非常にわかりやすかった。
今回はダウンロードしたときにつくcom.apple.quarantine
属性がわるさをしていたみたい。
xattr -d com.apple.quarantine ./cgi-bin/upload_file.py
で削除すると無事成功した。