スクリーンショット_2020-03-07_11.45.49

23.フルディスクアクセス

 macOS Catalinaになってセキュリティー強化のレベルがグッと上がった。SandBoxポリシーも強化され、LaunchDaemonで起動するスクリプトも見直す必要が出てきた。「千年カルテプロジェクトへのデータのアップロードがストップしていますよ」という報告を受け調べていて勉強になったのでそのことを書いておきます。

crontab

mac, 今ではかなり多くの人が普通に使うコンピュータだけど、中身の奥は1980年代から引き継がれるUNIX系のOS。その頃はコンピュータの事をとてもよくわかっている人だけが使いメイルやネットワークを利用できるように多くのバックグラウンドの仕組みが組み込まれたシステムなのですが、今はメモリーや外部記憶も安価で大きなものになり、macOSの中に閉めるUNIXの割合はそれをベースに組み上げられた巨大なシステムの一部に過ぎなくなり、人々は意識する事なく恩恵に預かっているわけです。まあ、それでも、1日分のデータを集めてバッチ処理などを考えると一気にUNIXの世界のツールが活躍するわけで、以前はcrontabに決めた日時で実行するシェルスクリプトを起動させて処理をしていたわけです。craontabも内部では、Launchを使って行われたいたようですが、起動する方法は何にしろシェルコマンドの実行ができていました。

 コマンドを実行する環境への制限がCatalinaで強化されてきました。サンドボックスと呼ばれ、自分の管理できる環境以外への書き込み等を出来なくする仕組みですが、シェルの上で実行している時は自分の設定した環境で動くのですが、それをlaunchデーモンで動かすとなると、書き込みだけの問題ではなく、コマンドの実行もそのコマンドを実行できるかどうかの制限も追加されるようになりました。具体的には、コマンド実行パスが, /usr/bin, /binに限るとか(これは正確ではありません), なので/usr/local/bin/に置いてあるコマンドは実行できずに処理が中断してしまいます。これを解決するためには、明示的にユーザがこのコマンドのアクセス権の制限を解除する設定をする必要が出てきたのです。

システム環境設定のプライバシーにあるフルディスクアクセスにデーモンで実行するスクリプトを登録すると、そのコンピュータの全てのリソースを参照することができるようになるのです。ファイル自体に設定されているパーミッションは元々の権限は保持されます。

復活

という勉強を試行錯誤しながらやって、以前のようにスクリプトを実行できるようになりました。

性善説、性悪説っていう話だけではないのですが、善意を前提にしたシステムではこれだけネットワークが発達すると制限をかけざるを得ないのでしょうね。

VintageWineの実行環境にしても色々な制限を受けています。一人しか使わないコンピュータとは違い、診察室にあるコンピュータに同時ではなく複数の人が使う場合はサンドボックスを超えた場所でお互いに参照できるところにファイルを用意する必要もあるので、どこにファイルを置くかも以前のように簡単に決める事は難しくなりました。でも、ちゃんと勉強すれば、そのような道もあるのが無闇に制限だけしているわけではないので勉強しがいもあります。しかし、深掘りする必要はあるので、日々これ勉強です。

この記事が気に入ったらサポートをしてみませんか?