Macで「操作は許可されていません」というエラーを解決する方法
macOSで「操作は許可されていません」というエラーが発生すると、特にコマンドを実行したり特定のシステムファイルにアクセスしようとしているときに、本当に面倒な作業になります。通常、これはセキュリティ上の問題で、macOSが「システムのこの部分に手を出すのはやめてください」と警告しているようなものなのですが、場合によっては、どうしてもアクセスして作業を完了させる必要があることもあります。おかしなことに、解決策は必ずしも簡単ではなく、フルディスク権限やSIPなどのセキュリティ機能のせいで行き詰まってしまう人も多いのです。
つまり、このガイドは、macOSでいちいち悩まされることなく、権限エラーを修正してターミナルを再び使えるようにするためのものです。魔法ではありませんが、これらのトリックのいくつかは私のMacでうまくいきました。手順を注意深く実行すれば、皆さんにもきっと効果があるでしょう。システムのトグルスイッチ、コマンドラインの魔法、そしていくつかの設定調整が必要になります。それほど複雑ではありませんが、少し辛抱強く、いくつか試してみて、どれがうまくいくか見極める必要があるかもしれません。
macOSで「操作は許可されていません」というエラーを修正する方法
ターミナルのフルディスクアクセスを有効にする
これが最も一般的な原因です。macOSはプライバシー設定により、ターミナルからディスクの特定の領域へのアクセスを制限しています。ターミナルにフルディスクアクセスを許可すると、システムはユーザーがファイルの管理者であると勘違いし、コア操作のブロックを停止します。一部のマシンでは、特に保護されたフォルダ内のファイルにアクセスする場合、この手順は必須です。
- Apple メニュー > システム環境設定に進みます。
- 「セキュリティとプライバシー」をクリックします。
- 南京錠アイコンをクリックし、管理者パスワードを入力してパネルのロックを解除します。
- [プライバシー]タブに移動し、[フル ディスク アクセス]を選択します。
- 「+」ボタンをクリックし、アプリケーションのリストからターミナル(または使用しているターミナル アプリ (iTerm2 など)) を選択します。
- ターミナルでフルディスクアクセスが有効になっていることを確認してください。有効になっていない場合は、チェックを入れてください。
- システムがターミナルを終了して再度開くように要求した場合は、それに従ってください。
- 最後に、もう一度ロックをクリックして設定を保存します。
このちょっとした調整で、システムフォルダへのアクセスや特権コマンドの実行時に発生する権限に関する問題が解決することがよくあります。ただし、環境によっては、変更を有効にするためにターミナルやシステム全体を再起動する必要がある場合もあります。macOSは、当然ながら、必要以上に面倒なことをするのが好きなのです。
ロックされたファイルのロックを解除する
特定のファイルを操作しようとして「操作は許可されていません」というエラーメッセージが表示される場合は、ファイルがロックされている可能性があります。ファイルはFinderや何らかの権限の問題によってロックされており、コマンドが実行できない状態になっています。この問題を解決するには、ターミナルからロックを解除してください。
- Command + Spaceを押して、 「Terminal」と入力します。
- このコマンドを入力します (
/path/to/your/file実際のファイル パスに置き換えます)。 - Enter キーを押します。このコマンドはファイルから「ロック」フラグを削除します。
- 操作を再度試すか、次のコマンドを実行して、操作が成功したかどうかを再確認できます。
chflags nouchg /path/to/your/file
ls -lO /path/to/your/file
(権限をクリックすると、ファイルがロック解除されていることがわかります)。最初の試みで必ずしも完璧になるとは限りませんが、ほとんどの場合、うまくいきます。
ちょっとした補足ですが、ロック解除した後でも、システム保護のため、特定のファイルがアクセスできない場合があります。特に個人ファイルやシステムファイル以外のファイルを扱っている場合は、まずこの手順を試してみる価値があります。
システム整合性保護(SIP)を無効にする
これは少し大胆な対策で、軽々しく行うべきものではありません。SIPは、ルートユーザーであっても重要なシステムファイルに変更を加えられないように設計されたセキュリティレイヤーです。開発、ハッキング、制限の回避など、自分が何をしているのかを確信している場合は、一時的に無効にすることができます。
手順は次のとおりです。最初にリカバリモードで起動する必要があることに注意してください。
Intel Macの場合
- Mac を再起動し、起動したらすぐに、Apple ロゴまたは回転する地球儀が表示されるまでCommand + Rキーを押し続けます。
- 上部のメニューで、[ユーティリティ] > [ターミナル]に移動します。
- 入力
csrutil disableしてEnter キーを押します。 - で通常通り再起動します
reboot。
Apple Silicon Macの場合
- Mac をシャットダウンします。
- 起動オプション画面が表示されるまで電源ボタンを押し続けます。
- 「オプション」をクリックし、「続行」をクリックします。
- リカバリモードに入ったら、「ユーティリティ」>「ターミナル」に移動します。
- と入力してEnter キー
csrutil disableを押します。 - Macを通常通りに再起動します。
SIPを再度有効にしたいですか?リカバリモードで再起動し、 を実行してくださいcsrutil enable。現在のSIPステータスを確認するには、 と入力するだけですcsrutil status。SIPを長期間無効にしておくことはお勧めしませんが、一時的にオフにすることで、一時的な権限の問題に対処するのに役立ちます。作業が完了したら、必ずオンに戻してください。
ファイルの場所の調整
/usr/binなどのディレクトリ内のファイルにアクセスしたり変更しようとした際に、「操作は許可されていません」というエラーが発生することがあります。これはmacOSがこれらのフォルダを保護しているためで、不用意に操作するとシステムが不安定になる可能性があります。一般的な回避策は、重要なファイルをユーザーがインストールしたバイナリ用であり、制限が少ない/usr/local/binに移動することです。
- Finderを開き、[移動] > [コンピュータ]をクリックします。
- 通常Macintosh HDという名前のメインディスクを選択します。
- 隠しファイルを表示するには、 Shift + Command +.を押します(隠しファイルが問題になることがよくあります)。
- /usr > binに移動します。
- アクセスしたい実行ファイルをコピーし、/usr/local/binに貼り付けます。権限がない場合は、ターミナルで次のような簡単なコマンドを実行する必要があるかもしれません。
- 移動後、Mac を再起動して、新しい場所が正しく取得されていることを確認します。
sudo mv /path/to/file /usr/local/bin/
(管理者パスワードの入力を求められます)
何をしているのかよくわからない場合は、システム フォルダーに触れることは危険である可能性があるため、これを最後の手段として、または完全に信頼できる特定のバイナリに対してのみ実行してください。
これらのヒントが、権限に関する混乱を少しでも解消し、ターミナルコマンドが再びスムーズに実行できるようになることを願っています。macOSの権限設定は少々面倒ですが、少し辛抱すれば、思い通りに操作できるようになります。