「macOSで必要なため、変更または削除できません」「使用中なため、操作は完了できません」と表示されゴミ箱が空にできない、ターミナルのrmコマンドも「Operation not permitted」と表示され操作を受け付けない場合の対処方法

原因

OS X El Capitan 以降で採用されたシステム整合性保護(System Integrity Protection: SIP)というセキュリティ技術が組み込まれたことで、ルートユーザが実行できる操作を制限していることが原因のようです。

どのような時に再現されたか

Appleのサイトのヘルプによると、システム整合性保護(SIP)では、システムの以下の部分が保護されている

/システム

/usr

/bin

/sbin

/var

OS X にあらかじめインストールされている App

とのことで、筆者の場合は、Time Machineからデータを復元し終えて、不要になったユーザーアカウントを削除しようとした際に、不要になったユーザーアカウント配下で

../Library/Containers/com.apple.mail/Data/DataVaults

という謎のファイルに遭遇しました。このDataVaultsが存在するためにゴミ箱に入れて「ゴミ箱を空にする」を試みるも

「"DataVaults"はmacOSで必要なため、変更または削除できません」
「項目"DataVaults"が使用中なため、操作は完了できません」

と拒否されたり、ターミナルのrmコマンドを試みるも、

DataVaults: Operation not permitted

とエラー表示が出てどのような操作も受け付けてくれませんでした。システム整合性保護(SIP)には、OS X にあらかじめインストールされている Appとして、メール.app関係のファイルのため該当しているのでしょう。

別にこのまま残していても支障はないですが、「macOSで必要なため、変更または削除できません」や「使用中なため、操作は完了できません」と言われても、こちらとしては不要になったユーザーデータで、このDataVaults自体も不要であることは明らかなので、残しておくのも気持ちが悪く、このDataVaultsを削除するために、いろいろ試みることにしました。

以下、DataVaultsに限らず「macOSで必要なため、変更または削除できません」「使用中なため、操作は完了できません」や「Operation not permitted」と同様のエラー表示が出て操作を受け付けない場合の対処方法を3段階にわけて紹介します。

OS X El Capitan 以降は操作が制限されている機能が働いているということで、段階的に制限を取っ払うことを試していってもらうのが良いと思われます。

手段1 ターミナルにフルディスクアクセス権を付与する

ターミナルにフルディスクアクセス権を付与するには、次の操作を行ないます。

  1. 最上部のメニューバーのアップルマークを選択
  2. システム環境設定…を選択
  3. セキュリティーとプライバシーを選択
  4. カギをクリック
  5. 管理者パスワードを入力
  6. フルディスクアクセスを選択
  7. ターミナルにチェックをつける

このフルディスクアクセス権を付与した状態でのターミナルのコマンド操作でも「Operation not permitted」等のエラー表示が出た場合は、次のルートユーザーを有効にする方法を試してください。

手段2 ルートユーザーを有効にする

続いてルートユーザーを有効にして、sudo付きのrmコマンドで削除を試みてください。ルートユーザーを有効するには、次の操作を行ないます。

  1. 最上部のメニューバーのアップルマークを選択
  2. システム環境設定…を選択
  3. ユーザーとグループを選択
  4. カギをクリック
  5. 管理者パスワードを入力
  6. ログインオプションを選択
  7. ネットワークアカウントサーバ:接続…を選択
  8. ディレクトリユーティリティを開く…を選択
  9. カギをクリック
  10. 管理者パスワードを入力
  11. 最上部のメニューバーから編集を選択
  12. ルートユーザーを有効にするを選択
  13. 管理者パスワードを入力、再度、確認欄にも管理者パスワードを入力

このルートユーザーを有効にした状態でのターミナルのsudo付きコマンド操作でも「Operation not permitted」等のエラー表示が出てダメだった場合は、最後のシステム整合性保護(SIP)を一時的に無効にする手段をとってください。

最終手段 システム整合性保護(SIP)を一時的に無効にする

システム整合性保護(SIP)を無効にするには、macOS復旧モード(リカバリーモード)で起動する必要があるので、次の操作をおこないます。

なお、macOS復旧モード(リカバリーモード)以外でシステム整合性保護(SIP)の有効・無効を切り替えようとすると、csrutil: failed to modify system integrity configuration. This tool needs to be executed from the Recovery OS. と表示され受け付けてくれません。

  1. Macを起動・または再起動して、起動音が鳴って、アップルマークが出現する前にCommand(⌘)+Rを押し続ける
  2. Apple ロゴ、回転する地球儀、その他の起動画面が表示されたら、キーから指を放して大丈夫です
  3. 日本語を選択して次へ
  4. 管理者ユーザーを選択して次へ
  5. 最上部のメニューバーのユーティリティからターミナルを選択する
  6. ターミナルで
    csrutil disable 
    と入力する
  7. 「Successfully disabled System Integrity Protection. 〜」と表示されていることを確認
  8. メニューバーから[アップルマーク] – [再起動] の順に選択し、通常起動させます

このシステム整合性保護(SIP)を無効にした状態であれば、ゴミ箱を空にしようとして「macOSで必要なため、変更または削除できません」「使用中なため、操作は完了できません」や、ターミナルのrmコマンドで「Operation not permitted」と操作を受け付けてくれなかったファイルも完全に削除することができます。

システム整合性保護(SIP)を有効に戻す

システム整合性保護(SIP)を無効にしたままの状態ではセキュリティレベルが下がっているので、再び有効に戻しておきましょう。

有効に戻すのもmacOS復旧モード(リカバリーモード)で起動する必要があるので、次の操作をおこないます。

  1. Macを起動・または再起動して、起動音が鳴って、アップルマークが出現する前にCommand(⌘)+Rを押し続ける
  2. Apple ロゴ、回転する地球儀、その他の起動画面が表示されたら、キーから指を放して大丈夫です
  3. 日本語を選択して次へ
  4. 管理者ユーザーを選択して次へ
  5. 最上部のメニューバーのユーティリティからターミナルを選択する
  6. ターミナルで
    csrutil enable 
    と入力する
  7. 「 Successfully enabled System Integrity Protection. 〜 」と表示されていることを確認
  8. メニューバーから[アップルマーク] – [再起動] の順に選択し、通常起動させます