macOS サービスによるファイルへのアクセス

macOS で SyncThemAll をバックグラウンドサービスとして実行していると、どう見ても自分のものであるフォルダ — 書類、デスクトップ、ダウンロード、iCloud Drive、外付けディスク — について「Permission denied」と報告されることがあります。

壊れているわけでも、設定を間違えたわけでもありません。macOS は意図的に、バックグラウンドサービスをあなたの個人ファイルから遠ざけています。解除するには、あなた自身が手動で、一度だけ許可する必要があります。

まず、そもそもサービスが必要ですか

たいていのユーザーには不要です。SyncThemAll をウィンドウなしで働かせる方法は 2 つあり、以下の内容が関係するのはそのうち一方だけです。

やりたいこと推奨されるオプション
ログインしている間は同期が続いてほしい。ただしウィンドウは開けたままにしたくないログイン時の自動起動 — 設定 → システム → バックグラウンドで実行 と ログイン時に起動。管理者パスワードもセキュリティ設定も追加手順も不要。
誰もログインしていないときでも同期を続けたい。Mac が勝手に再起動しても動き続けてほしいサービス — その場合、このページの手順が必要です。

上の行が当てはまるなら、自動起動を有効にして、このページの残りは読まなくて構いません。サービスは誰も前に座っていない状態で働くマシンのためのもので、その分だけ設定手順が 1 つ増えます。

macOS がこれを求める理由

macOS は一部のフォルダ — デスクトップ、書類、ダウンロード、iCloud Drive、リムーバブルおよびネットワークボリューム — を TCC という仕組みで保護しています。通常のアプリがそれらに初めてアクセスすると、システムは「SyncThemAll が『書類』フォルダ内のファイルへのアクセスを求めています」というダイアログを表示します。一度許可すれば、あとは意識せずに済みます。

サービスはこのやり取りに参加できません。誰かがログインするより前に起動し、あなたのセッションの外で実行されるため、ダイアログを表示する画面もなければ、答える人もいないからです。こうした場合、macOS は推測しません。単純に拒否し、しかも毎回拒否します。

管理者かどうかは関係ありません。TCC はファイルのパーミッションの話ではなく、システム権限をすべて持つサービスであっても遮断されます。同じ理由で、Backblaze、Carbon Copy Cloner、Arq といったバックアップ製品も同じ設定を求めてきます。

つまり許可は、あなたから直接、「システム設定」で与えるしかありません。以降はその手順です。

アクセスを許可する

追加すべきファイルは SyncThemAll が正確に示すので、探し回る必要はありません。

  1. SyncThemAll を開き、左側のサイドバーでサービスをクリックします。
  2. ダイアログで設定を開くをクリックします。macOS が「プライバシーとセキュリティ → フルディスクアクセス」を開きます。
  3. SyncThemAll に戻り、パスをコピーをクリックします。サービスのプログラムの場所がコピーされます。
  4. システム設定でリストの下にある + ボタンをクリックします。ファイル選択画面が開きます。
  5. ⌘ + Shift + G を押し、パスを貼り付け、Return を押して「開く」をクリックします。
  6. 追加された項目のスイッチがオンになっていることを確認します。
  7. SyncThemAll に戻り、サービスの停止を押してから開始を押します。

この最後の手順が重要です。macOS が新しい許可を適用するのはプログラムの次回起動時なので、動作中のサービスは再起動するまで変更に気づきません。停止と開始のボタンは同じダイアログの中にあります。

「サービスはまだファイルを見られません」という表示は、これで消えるはずです。消えない場合は、手順 6 のスイッチが本当にオンか、そして手順 3 のファイルを追加したか(SyncThemAll アプリ本体ではなく)を確認してください。詳しくは次の項で説明します。

SyncThemAll アプリを追加するだけではだめな理由

サービスは独自の識別情報を持つ別個のプログラムであり、macOS はこの種の許可をプログラムごとに管理しているからです。アプリに与えたアクセス権はサービスには引き継がれず、その逆も同じです。手順 3 でコピーするパスは、アプリケーションパッケージの内部、つまりサービスが実際に実行するプログラムを指しています。

SyncThemAll.app/Contents/Resources/engine/syncthemall

Finder は通常アプリケーションパッケージの中身を隠します。手順 5 で ⌘ + Shift + G を使ってパスへ直行するのはそのためです。マウスでリストにドラッグしたい場合は、SyncThemAll のダイアログでパスをコピーではなく Finder で表示を使ってください。そのファイルを選択した状態でフォルダが開きます。

アクセスを許可すると何が変わるか

サービスはあなたのフォルダを読み書きできるようになります。同期対象のフォルダも含みます。あらかじめ知っておくとよい点が 2 つあります。

サービスが作成したファイルは、あなたではなくシステムのものになります。 サービスが「書類」フォルダにファイルをダウンロードし、後からそれを Finder で削除・名前変更しようとすると、macOS はパスワードを求めます。これは正常です。システムレベルのプログラムが作成したファイルだからです。同じファイルを SyncThemAll の中から削除する場合はパスワードを求められません。

許可はそのプログラムだけに結び付きます。 SyncThemAll を別のフォルダへ移したり、プログラムが置き換わる形で再インストールしたりすると、改めて追加が必要になることがあります。通常のアップデートでは許可は維持されます。

あとからアクセスを取り消す

「システム設定 → プライバシーとセキュリティ → フルディスクアクセス」を開き、項目を選んでスイッチをオフにするか、− ボタンで削除します。サービスはそのまま動き続け、あなたの個人フォルダが見えなくなるだけです。SyncThemAll からサービス自体を削除する場合は、この項目も削除してください。指し示す先がなくなるためです。

まだ問題が解決しませんか?

サービスを再起動しても表示が消えない場合や、保護対象に入っていないはずのフォルダでアクセスエラーが出る場合は、お問い合わせください。フォルダのパスと、サービスのダイアログの表示内容を添えてください。この 2 つがあれば、macOS が阻んでいるのか別の原因なのかがすぐに分かります。