macOSのディスクのアクセス権と外付けドライブを理解する

アクセス権の問題は、Macで外付けドライブにアクセスしたり、変更したり、取り出したりするのを妨げることがあります。macOSのアクセス権が取り外し可能なストレージとどう関わるのかを解説します。

外付けドライブを接続すると、ファイルは読めるのに保存ができない。あるいは、別のMacでは問題なく使えていたドライブが、このMacでは書き込みをさせてくれない。あるいは、外付けドライブの特定のフォルダにアクセスしようとするたびにパスワードを求められる。

手早く知りたい方へ: Macの外付けドライブのアクセス権の問題は、たいてい「このボリューム上の所有権を無視」を有効にすることで解決します。Finderでドライブを選択し、Command-Iを押して、情報ウインドウの一番下にあるそのチェックボックスをオンにしてください。これは、ドライブがMac間を移動するときにずれてしまう所有権の刻印を回避するものです。対象はAPFSまたはHFS+のドライブのみです。exFATにはアクセス権のしくみがそもそもありません。

外付けドライブのアクセス権の問題が分かりにくいのは、Macの内蔵ストレージとはルールが異なるからです。macOSは、必ずしも直感的とは言えない形で、外付けボリュームに所有権とアクセス権を適用します。

macOSが外付けドライブの所有権をどう扱うか

Macの内蔵ドライブには、明確な所有者がいます。ほかでもない、ご自身です。ユーザーアカウントにはID番号があり(最初に作成したアカウントは通常501です)、そのIDが、作成するすべてのファイルに刻印されます。

外付けドライブは、最後に書き込みを行ったコンピューターから受け継いだ、独自のアクセス権の刻印を持っています。ユーザーIDが501のMacでファイルを作成し、自分のIDも同じく501である別のMacにそのドライブを接続すれば、すべてが一致します。しかしIDが一致しないと、アクセス権の衝突が起こります。

これは、複数のMac間でドライブを共有する場合、特に各マシンでユーザーアカウントの設定が異なる職場環境などでよく起こります。

外付けボリュームの所有権を無視する

macOSには、この所有権の不一致の問題に対する標準の解決策があります。Finderで外付けドライブを選択し、Command-Iを押して情報ウインドウを開き、一番下にある「このボリューム上の所有権を無視」を探します。

このチェックボックスを有効にすると、macOSはドライブ上のすべてのファイルを、現在のユーザーのものであるかのように扱います。所有権の刻印を完全に回避するのです。これは、取り外し可能なAPFSやMac OS拡張(HFS+)のドライブの多くではデフォルトになっており、だからこそ普段はアクセス権の問題に遭遇しないのです。

なお、このチェックボックスはAPFSとHFS+のボリュームにしか表示されません。exFATやFAT32のドライブでは、これらのファイルシステムにネイティブなアクセス権のしくみがないため、表示されません。

この設定がオフになってしまった場合(フォーマット後や、特定のmacOSアップデート後に起こることがあります)、アクセス権のエラーが現れ始めます。もう一度オンに戻せば、問題は消えます。

注意: この設定を変更するには管理者権限が必要です。チェックボックスがグレーアウトしている場合は、情報ウインドウの一番下にある鍵のアイコンをクリックし、パスワードを入力してください。

APFSのアクセス権とexFATのアクセス権

APFSのドライブは、完全なPOSIXアクセス権を持っています。所有者、グループ、その他(world)に対する、読み込み・書き込み・実行のアクセスフラグです。より細やかな制御のためのアクセス制御リスト(ACL)もサポートしています。これはMacの内蔵ドライブが使っているのと同じアクセス権のしくみです。

exFATのドライブには、アクセス権のしくみがまったくありません。すべてのファイルに誰でもアクセスできます。これだとアクセス権の問題がなくなりそうに聞こえますが、macOSはときどきexFATボリュームのためにアクセス権を合成することがあり、それが予期しない挙動を生むことがあります。(新しいドライブのファイルシステムを選んでいる方は、APFS vs exFAT: Macの外付けドライブにはどのフォーマットがよいか をご覧ください。)

macOSがexFATのドライブをマウントするとき、現在のユーザーに所有権を割り当て、デフォルトのアクセス権を適用します。たいていはこれで問題なく動きます。しかし、マウント処理がエラーに遭遇したり、ドライブにファイルシステムの損傷があったりすると、合成されたアクセス権が誤ったものになることがあります。

exFATのドライブが突然読み込み専用になった場合、その原因はアクセス権ではなく、たいていはファイルシステムの破損です。ディスクユーティリティのFirst Aidを実行して、確認と修復を行ってください。

フルディスクアクセスと外付けドライブ

macOSのVentura、Sonoma、Sequoiaは、以前のバージョンよりも厳格にフルディスクアクセスの制限を適用します。これらの制限は、アプリケーションが外付けドライブとどう関わるかに影響します。

フルディスクアクセスは、外付けドライブを含むストレージの全内容に、どのアプリがアクセスできるかを制御するプライバシー設定です。フルディスクアクセスがないと、アプリケーションは明示的に渡されたファイルは開けても、ドライブの内容を自由に閲覧することはできないかもしれません。

これが取り出しにとって重要なのは、ターミナルのような診断ツールが、ドライブを使っているすべてのプロセスを把握するためにフルディスクアクセスを必要とするからです。それがないと、lsof コマンドは不完全な結果を表示します。ドライブに対して lsof を実行し、ブロックしているものが何も見当たらないのに、それでも取り出せない。実際の原因がターミナルの視界から隠されているのです。(アクセスのパターンについては、Macユーザーのためのlsofコマンドガイド でより詳しく取り上げています。)

システム設定 > プライバシーとセキュリティ > フルディスクアクセス で、ターミナル(または好みのターミナルアプリ)にフルディスクアクセスを許可してください。これで、取り出しの問題を診断する際に全体像が把握できるようになります。

アクセス権が取り出しを妨げるとき

アクセス権の問題が取り出しを直接妨げることは通常ありませんが、間接的な取り出し失敗を引き起こします。

あるプロセスが外付けドライブに書き込もうとしてアクセス権のエラーにぶつかると、きれいに失敗する代わりに、何度も再試行することがあります。再試行のたびにファイルハンドルが開いたままになります。そのプロセスは事実上ループに陥り、操作を完了することもドライブを解放することもできなくなります。

このパターンは、バックアップソフト、同期サービス、そしてSpotlightのようなシステムプロセスで見られます。それらはドライブにメタデータやインデックスのデータを書き込もうとし、アクセス権によって拒否され、試行を続けるのです。これは、あの汎用的な「ディスク使用中」エラーの陰にある、目に見えない原因の一つです。他のよくある原因については、macOSのディスク使用中エラーのトラブルシューティングガイド をご覧ください。

根本的なアクセス権の問題を修正すれば(通常は「このボリューム上の所有権を無視」を有効にすることで)、取り出しの問題も解決します。

外付けドライブのアクセス権を修復する

ディスクユーティリティの古い「ディスクのアクセス権を修復」機能は、macOS El Capitanで削除されました。これは起動ドライブ上のシステムファイルにしか適用されなかったため、広く誤解されてはいたものの、外付けドライブには一度も関係がありませんでした。

外付けドライブの場合、最も近い相当機能は、所有権とアクセス権を手動でリセットすることです。

sudo chown -R $(whoami) /Volumes/YourDriveName/
sudo chmod -R u+rw /Volumes/YourDriveName/

これで、ドライブ上のすべてに対して、自分のユーザーアカウントに所有権と読み書きのアクセスが与えられます。これは個人用のドライブでのみ行ってください。他のユーザーが自分のアクセス権を維持する必要のある共有ドライブでは行わないでください。

より穏やかな対処としては、先ほど説明した「このボリューム上の所有権を無視」を有効にするだけにしておきましょう。

暗号化されたドライブとアクセス権

外付けドライブがAPFS暗号化で暗号化されている場合、マウントするには暗号化のパスワードが必要です。しかしマウントしたあとは、アクセス権は通常どおりに機能します。

FileVaultで暗号化された外付けドライブは、暗号化のメタデータがずれると、まれにアクセス権の問題を起こすことがあります。暗号化されたドライブでアクセス権のエラーが出ている場合は、ドライブをロック(取り出し)してからロック解除(パスワードでマウント)してみてください。これにより、macOSが暗号化のコンテキストを再構築し、アクセス権の異常が解消されることがよくあります。

すべてをうまく連携させる

アクセス権の問題、取り出しの失敗、ファイルシステムのエラーは、しばしば互いを悪化させ合います。アクセス権のエラーがバックグラウンドプロセスを停滞させ、それが取り出しを妨げ、それが不適切な切断につながり、それがファイルシステムの損傷を引き起こし、それが新たなアクセス権のエラーを生む、というように。

この悪循環を断ち切る出発点は、適切な取り出しです。ドライブが取り出せず、アクセス権の問題が関わっていると疑われるとき、Ejecta は停滞しているプロセスを特定し、それをきれいに終了させることができます。そこから、根本的なアクセス権の問題を修正すれば、問題が再発しないようにできます。

外付けドライブのアクセス権は、所有権のモデルを理解してしまえば、見た目ほど複雑ではありません。ほとんどの問題は、たった1つのチェックボックスで解決します。しかし、もっと複雑なことが起きているときには、どこを見ればよいかを知っていることが、すべてを変えるのです。

毎回ターミナルを使いたくないなら、Ejectaがどのプロセスがドライブをブロックしているかを正確に表示します。しかもメニューバーから、ワンクリックでそのプロセスを終了できます。

今すぐ購入 — $9.99