macOSターミナルでNot Permitted(アクセス権)エラーが出た場合の対処法

macOSのターミナルにおいてコマンドによってはエラーが出て正常にコマンドの実行ができないことがある。

ここではmacOSのターミナルで「Operation not permitted」「Error setting variable iokit/common not permitted」といった「Permission(アクセス権)エラー」が出た場合の対処法を紹介する。

ターミナルにフルディスクアクセス権が付与されてるか確認

ターミナルでエラーが出たらまずはシステム環境設定から「セキュリティとプライバシー」を開いて「プライバシー」のタブを開こう。

左パネルから「フルディスクアクセス」を選択し、「ターミナル」が追加されており、なおかつチェックが付いているか確認しよう。

もしフルディスクアクセスの欄にターミナルが存在しない場合は「+」ボタンをクリックしてターミナルを追加してチェックを付ける。

チェックを付けたら改めてコマンドを実行してエラーが出るか確認しよう。

それでもエラーが出る場合は「アクセシビリティ」にもターミナルを追加しよう。

ターミナルでエラーが出るコマンド

例えターミナルにフルディスクアクセス権があっても主に下記のようなコマンドを実行する場合にエラーが出ることがある。

  • NVRAMのVariable(変数)の値(Value)を書き込む・変更する・削除する
  • -rmコマンドなどでシステム・キャッシュファイルを削除する

特にNVRAM関連は多くの場合コマンドが弾かれる。

ただしNVRAM関連であっても下記のようなコマンド(次回起動時にリカバリーモードで自動起動する)はエラーが出ずに正常に実行可能な場合もある。

sudo nvram "recovery-boot-mode=unused"

また、下記のようなNVRAMのリセットコマンドはエラーは出るもののNVRAMはリセットされるというよくわからない挙動を示す。

sudo nvram -c

個人的な印象では「どのコマンドでエラーが出るのか」という点について明確な線引きがされておらず、エラーは出てもコマンド自体は実行されるという場合もあるため、いまいち法則性が掴めない。

ちなみに「Command not found」というエラーが出た場合は文字通り「そのようなコマンドは存在しない」ということであり、タイプミスなどで正しくコマンドを入力できていない、もしくはそのmacOSのバージョンではコマンドが無効と考えられるのでコマンドのスペルやその有効性を確認しよう。

対処法

ターミナルのコマンドのエラーの法則性はいまいち掴めないが、いずれにしろターミナルにフルディスクアクセス権があるにも関わらず「Not permitted」とエラーが出た場合、十中八九macOSのシステム保護プロテクト「System Integrity Protection(SIP)」が原因である。

そのため下記の手順で一時的にSIPを無効にしよう。

Macを起動・または再起動してすぐにCommand+Rキーを押し続け、リカバリーモード(macOS復旧)に入る。

「日本語」をクリックして次へ。

管理者ユーザーを選択して次へ。

メニューバーの「ユーティリティ」から「ターミナル」を起動し以下のコマンドを実行する。

csrutil disable

英文が出たらMacを通常再起動させる。

以上で通常のブート時においても「Not permitted」というエラーが出たコマンドが自由に実行可能になるはずだ。

SIPを無効にすればエラーが出たコマンドが正常に実行可能になる

なお、SIPを無効のままにしておくのはセキュリティ的にリスクがあるため、ターミナルでの作業が終わったら再度リカバリーモードを起動し、下記のコマンドでSIPを有効にしよう。

csrutil enable

ちなみにSIPを無効にしてもCommand+Option+P+Rの同時押しでNVRAMのリセットを実行するとSIPの設定がデフォルトに戻り、SIPが自動で有効化される。

NVRAM設定のみSIPを無効にする方法

なお、NVRAM以外のコンポーネントはSIPで保護してNVRAMのみSIPを無効にするには下記記事を参照して頂きたい。

NVRAMなど特定のコンポーネントのみSIPを無効にする方法

まとめ

以上、簡単ではあるがターミナルのコマンド実行時にエラーが出た場合の対処法を紹介した。

余談であるがNVRAM関連のターミナルコマンドを実行してMacが正常に起動しないなど予期しない事態が起こってもCommand+Option+P+Rの同時押しで大抵の場合は正常に戻る。

管理人は実験でNVRAMに様々な変数値の書き込み・変更・削除を行い、Macが起動しなくなるなどの事態を何度も経験したがCommand+Option+P+Rの同時押しでいずれの場合も問題は解決している。

ただ、そうは言ってもNVRAM関連のコマンドはセンシティブであることに変わりはないので自己責任で行ってほしい。

また、NVRAMの変数一覧は以下のページで確認できる。

CHECK
AppleNVRAM - GitHub