とある有名なソフトウェア会社のソフトのインストールが、 例の GATEKEEPER に引っかかって、それを手動で回避した、という話。 なんで Apple にお願いして、信頼できる開発者にしてもらわないのだろう。 FreeFem++ 開発チームじゃあるまいし、お金も人もあり余っているだろうに、 ユーザーに色々面倒なことをさせるのはおかしいなあ、 というぼやきです。
そのソフトのインストーラーは、 何とか.zipという zip ファイルで提供される。 ダウンロードして ~/Downloads に置いて、ダブルクリックせよ、 と指示されている。すると ~/Downloads/何とか に展開される。
ターミナルでのぞきに行く |
% cd ~/Downloads/何とか % ls -l total 40 -rw-rw-r--@ 1 mk staff 17052 12 30 2019 かんとか.dmg drwxrwxr-x@ 3 mk staff 96 9 22 15:59 何とか.app/ |
何とか.app はいわゆるインストーラーであるが、 もう一つ かんとか.dmg というのがある。
ところで、両方とも `@' がついている (-rw-rw-r-@, drwxrwxr-x@)。 これは拡張ファイル属性を付加されている印である。
拡張ファイル属性について、 次のWWWサイトは、マニュアルを日本語訳したりしていて、親切。
「xattr コマンドの使い方/ヘルプの日本語訳(macOS でパーミッションの@付き拡張属性の操作)」
ls のオプションに '@' をつけると詳しい内容が表示される。
拡張ファイル属性を調べる |
% ls -lR@ total 40 -rw-rw-r--@ 1 mk staff 17052 12 30 2019 かんとか.dmg com.apple.quarantine 21 drwxrwxr-x@ 3 mk staff 96 9 22 15:59 何とか.app/ com.apple.quarantine 21 ./何とか.app: total 0 drwxr-xr-x@ 7 mk staff 224 9 23 00:33 Contents/ com.apple.quarantine 21 ./何とか.app/Contents: total 16 -rw-rw-r--@ 1 mk staff 2121 9 22 15:59 Info.plist com.apple.quarantine 21 drwxr-xr-x@ 4 mk staff 128 9 23 00:33 MacOS/ com.apple.quarantine 21 -rw-rw-r--@ 1 mk staff 8 2 13 2020 PkgInfo com.apple.quarantine 21 drwxr-xr-x@ 6 mk staff 192 9 23 00:33 Resources/ com.apple.quarantine 21 drwxr-xr-x@ 3 mk staff 96 9 23 00:33 _CodeSignature/ com.apple.quarantine 21(以下略) |
com.apple.quarantine は、 “App Store以外の ソースから取得したりするファイルやアプリに付いている拡張属性” だそうである。 なるほど、確かにWWWからダウンロードしたファイルである。
さて、 “~/Downloads/何とか/かんとか.dmg” は、 ディスク・イメージ・ファイルで、 これをダブル・クリックすると、 /Volumes/かんとか にマウントされる。
マウントされたものを見にいく |
% ls -l /Volumes/かんとか かんとか.command* % |
これは実はシェル・スクリプトで、インストール手順として、 これを 「Finder で control+クリックして「開く」を選んで実行せよ」 と言われているのだが、今回、ここで引っかかった。
Apple は、“かんとか.command” にMacに損害を与えたり、 プライバシーを侵害する可能性のあるマルウェアが含まれていないことを 検証できませんでした。と表示される。
% cat /Volumes/何とか/かんとか.command cd $pwd cd downloads ls -l chmod +x */*.app/contents/macos/id_download xattr -d com.apple.quarantine */*.app% % |
このシェル・スクリプトがやろうとしていることは
ダウンロード (~/Downloads) にある 何とか.app/Contents/MacOS/id_downliad に実行可能属性をつけて (chmod +x)、 何とか.app 以下にあるファイルの拡張ファイル属性 com.apple.quarantine を削除する (xattr -d)。 |
つまり、信頼できる開発会社と Apple に認めてもらうことをサボって、 このシェル・スクリプトをユーザー (インストールしようとしている人) に実行させることで、com.apple.quarantine 属性を削除しよう、 というつもりな訳だ。
ところが、Sequoia では、 シェル・スクリプトの実行も GATEKEEPER に引っかかるよ、 control+クリックで開こうとしても回避できないよ、と。
デジャブ。FreeFem++ のときに遭遇したやつだ。 あれはひどかった。某講義で授業中に回避の仕方を実演して、 個別対応したけれど、欠席した連中が学期末に…という困った事象が思い出される。
あのときと同じようにしようか ([システム設定]→[プライバシーとセキュリティ]) と思ったけれど、 たったの5行だし、もうスクリプトの実行はあきらめて、 手動で行うことにした。
シェル・スクリプトに書いてあることを手動で実行 |
% cd ~/Downloads % chmod +x 何とか/何とか.app/Contents/MacOS/id_download % xattr -d com.apple.quarantine 何とか.app |
こうしてから、インストーラー (何とか.app) を実行して前進できた。 その後も色々あったけれど (雑な連中の作るものはポンコツだ)、 それは別のことなので省略。
もしかすると、今回分かったことで、 FreeFem++ のインストール手順について、 次回からは簡単な指示ができるかもしれないな (どうせある程度面倒なことをするのなら、 最初に手動で xattr するように指示すれば、トラブルフリーになりそうな気がする)、 と思った。 実際に試すのは次の春学期になるかしらん。
(2024/9/23)
com.apple.provenance という通常手順では削除できない拡張属性も作られたと。
まだネットで検索しても1000件未満か。
うーむ。なんか、ちょっと嫌になってきたぞ。
Sequoia にすると、ローカルにファイルを作っても、この拡張属性がつくんだ。
自由にコンピューティングできなくなる未来が見えるな。
Mac からお引越しを考えないといけないかな。
新しい Mac を買うと Sequoia なのか…
How macOS now tracks the provenance of apps