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 が正確に示すので、探し回る必要はありません。
- SyncThemAll を開き、左側のサイドバーでサービスをクリックします。
- ダイアログで設定を開くをクリックします。macOS が「プライバシーとセキュリティ → フルディスクアクセス」を開きます。
- SyncThemAll に戻り、パスをコピーをクリックします。サービスのプログラムの場所がコピーされます。
- システム設定でリストの下にある + ボタンをクリックします。ファイル選択画面が開きます。
- ⌘ + Shift + G を押し、パスを貼り付け、Return を押して「開く」をクリックします。
- 追加された項目のスイッチがオンになっていることを確認します。
- 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 が阻んでいるのか別の原因なのかがすぐに分かります。