LoginSignup
1
0

学校の課題のテンプレートのCGIでoperation not permittedと言われた話

Last updated at Posted at 2024-01-26

結論

ダウンロードしたとき、ファイルつくに拡張属性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

で削除すると無事成功した。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0