Help us understand the problem. What is going on with this article?

macOS Mojave/Catalina の「Operation not permitted」を回避する(du/ls/mv/cp 実行時)

du コマンドで「du: 〜: Operation not permitted」

Mac を Mojave にしてからターミナルでコマンドを実行すると「Operation not permitted」と表示されるので du しようもないのです。
2020/08/28 追記: Catalina でも同じ現象が出ました。

せやかて sudo でも同じで、du んだけ〜かと思ったら ls mv cp などの他のコマンドでもチョイチョイ出るので困りました。

SIP をいじるにしても SIP 返しが怖いし、High Sierra に戻すのも「めん du」なので Mojave て〜状態なのです。(クドくてすみません 🙇‍♂️

"Operation not permitted" mac mojave」と Qiita 記事に絞ってググってみたものの、ピンポイントでまとまった良い情報がなかったので自分のググラビリティとして。

エラー内容

sudoを付けても許可されない
$ # ホームディレクトリ直下にあるサブディレクトリ容量の表示
$ sudo du -d 1 -h ~
Password:
(略)
du: /Users/admin/Library/Application Support/CallHistoryTransactions: Operation not permitted
du: /Users/admin/Library/Application Support/com.apple.TCC: Operation not permitted
du: /Users/admin/Library/Application Support/CallHistoryDB: Operation not permitted
du: /Users/admin/Library/IdentityServices: Operation not permitted
du: /Users/admin/Library/Messages: Operation not permitted
du: /Users/admin/Library/HomeKit: Operation not permitted
du: /Users/admin/Library/Mail: Operation not permitted
du: /Users/admin/Library/Safari: Operation not permitted
du: /Users/admin/Library/Suggestions: Operation not permitted
(以下省略)

検証環境と現象の完全ログ
検証環境
$ # 検証日
$ date
2019年 1月17日 木曜日 17時10分14秒 JST
$ 
$ # OSのバージョン
$ sw_vers
ProductName:    Mac OS X
ProductVersion: 10.14.2
BuildVersion:   18C54
$
$ # du コマンドのバージョン
$ man du | tail -1 | sed -e 's/  */ /g'
BSD June 2, 2004 BSD
duコマンドでの現象
$ # ホームディレクトリで du の実行
$ sudo du -d 1 -h ~
Password:
3.8M    /Users/admin/Music
8.0K    /Users/admin/.docker
8.0K    /Users/admin/.local
  0B    /Users/admin/Pictures
6.0M    /Users/admin/.phpls
 54M    /Users/admin/Desktop
du: /Users/admin/Library/Application Support/CallHistoryTransactions: Operation not permitted
du: /Users/admin/Library/Application Support/com.apple.TCC: Operation not permitted
du: /Users/admin/Library/Application Support/CallHistoryDB: Operation not permitted
du: /Users/admin/Library/IdentityServices: Operation not permitted
du: /Users/admin/Library/Messages: Operation not permitted
du: /Users/admin/Library/HomeKit: Operation not permitted
du: /Users/admin/Library/Mail: Operation not permitted
du: /Users/admin/Library/Safari: Operation not permitted
du: /Users/admin/Library/Suggestions: Operation not permitted
du: /Users/admin/Library/Containers/com.apple.VoiceMemos: Operation not permitted
du: /Users/admin/Library/Containers/com.apple.Home: Operation not permitted
du: /Users/admin/Library/Containers/com.apple.Safari: Operation not permitted
du: /Users/admin/Library/Containers/com.apple.iChat: Operation not permitted
du: /Users/admin/Library/Containers/com.apple.mail: Operation not permitted
du: /Users/admin/Library/Containers/com.apple.stocks: Operation not permitted
du: /Users/admin/Library/PersonalizationPortrait: Operation not permitted
du: /Users/admin/Library/Metadata/CoreSpotlight: Operation not permitted
du: /Users/admin/Library/Cookies: Operation not permitted
du: /Users/admin/Library/Caches/com.apple.safaridavclient: Operation not permitted
du: /Users/admin/Library/Caches/CloudKit/com.apple.Safari: Operation not permitted
du: /Users/admin/Library/Caches/com.apple.Safari: Operation not permitted
9.6G    /Users/admin/Library
200K    /Users/admin/.bash_sessions
  0B    /Users/admin/Public
  0B    /Users/admin/Movies
  0B    /Users/admin/Applications
  0B    /Users/admin/.Trash
326M    /Users/admin/Documents
147M    /Users/admin/Downloads
1.6M    /Users/admin/.cache
 10G    /Users/admin
同じディレクトリ階層の可視ファイル一覧
$ ls -lh ~/
total 0
drwx------@  3 admin  staff    96B  1 15 23:48 Applications
drwx------@ 56 admin  staff   1.8K  1 16 00:19 Desktop
drwx------@  9 admin  staff   288B  1 15 19:40 Documents
drwx------+  6 admin  staff   192B  1 17 13:05 Downloads
lrwxr-xr-x   1 admin  staff    32B  1 16 12:44 GitHub -> /Volumes/HDD_EXT_01/Git/GitHub
drwx------@ 63 admin  staff   2.0K  1 17 03:56 Library
drwx------+  3 admin  staff    96B  1 15 19:37 Movies
drwx------+  5 admin  staff   160B  1 15 22:27 Music
drwx------+  3 admin  staff    96B  1 15 19:37 Pictures
drwxr-xr-x+  4 admin  staff   128B  1 15 19:37 Public
lrwxr-xr-x   1 admin  staff    36B  1 16 16:50 Tests -> /Volumes/HDD_EXT_01/Data_Practices

TL;DR

スクリーンショット 2019-01-17 17.25.23.png

TS;DR

「システム環境設定」の「セキュリティとプライバシー」にある「フルディスクアクセス」に「ターミナル」アプリを追加して許可する。

  • 手順

    • [システム環境設定][セキュリティとプライバシー][プライバシー] - [フルディスクアクセス](鍵を解除)「+」ボタン押下「ターミナル」を追加
    • 【注意】この作業の前に、ターミナルは終了していること

macOS Mojave(OSX 10.14)以降でセキュリティ設定がさらに厳しくなったため、sudo 付きやユーザーのホームディレクトリ下でも「Operation not permitted」が出るようになりました。これは、 du ls mv cp といった基本コマンドでも同じです。

設定変更後の出力結果

sudoなしでもOK
$ du -d 1 -h ~
3.8M    /Users/admin/Music
8.0K    /Users/admin/.docker
8.0K    /Users/admin/.local
  0B    /Users/admin/Pictures
6.0M    /Users/admin/.phpls
 55M    /Users/admin/Desktop
 10G    /Users/admin/Library
212K    /Users/admin/.bash_sessions
  0B    /Users/admin/Public
  0B    /Users/admin/Movies
  0B    /Users/admin/Applications
  0B    /Users/admin/.Trash
326M    /Users/admin/Documents
147M    /Users/admin/Downloads
1.6M    /Users/admin/.cache
 11G    /Users/admin

Permission denied」と表示される場合

$ du -d 1 -h ~
du: ./.DocumentRevisions-V100: Permission denied
du: ./.TemporaryItems: Permission denied
du: ./.Trashes: Permission denied

sudo を付けて実行すれば大丈夫です。(要パスワード)

$ sudo du -d 1 -h ~
Password:
 36M    ./.DocumentRevisions-V100
  0B    ./.TemporaryItems
 12K    ./.Trashes

所感

去年(2018 年)から Mac の HighSierra(OSX 10.13)で空き容量が足りないと頻繁に注意されていたので、思い切って平成最後のクリーン・インストールをすることにしました。その際、OS も同じく頻繁に勧められていた Mojave(OSX 10.14)にアップグレードすることにしました。

しかし、Xcode を除く最低限必要なアプリに絞ったのに、思った以上に空き容量が確保できません。

そこで du コマンドで各サブディレクトリの容量を確認1しようとしたところ、du: <略>: Operation not permitted のアクセス権エラーが乱発しました。管理者アカウントでも NG で、sudo を付けても同じく NG でした。(記事上部の「検証環境と現象の完全ログ」参照)

HighSierra のころから、ディレクトリやファイルによっては「Operation not permitted」は表示されていたのですが、Mojave からユーザーのホームディレクトリ下でも表示されるようになりました。

「これは、シンボリック・リンクを張り間違えたの、か?」と心配になりましたが、特に問題はなさげ・・・です。

色々触ってみると、どうやら Mojave 以降でセキュリティ設定がさらに厳しくなった印象を受けます。

となると、HighSierra の時のように SIP2 がらみの設定だと仮定すると厄介です。リカバリーモードで csrutil disable のターミナル操作などが必要3になるからです。

しかし、新しく入れた OS に余計な設定はしたくありませんし、アプリの動作検証のために設定を元に戻すのも大変です。

それでも容量は確認しないといけないため、「下手に新たにアプリを入れるのもなぁ」と思って検索してみた4ところ、英語でドンピシャの良質記事がありました5。助かりました。

Fix Terminal “Operation not permitted” Error in MacOS Mojave」@ OSXDaily


参考文献

KEINOS
A Japanese made in Mexico with Mexican quality ;-) Who monkey around the jungle of codes. 記事の日本語がおかしかったら遠慮なく編集リクください。また、記事に「LGTM」が付くたび、なるべく何かしら加筆・修正してブラッシュアップしています。基本的に変更通知はお送りしません。
https://blog.keinos.com/
qiitadon
Qiitadon(β)から生まれた Qiita ユーザー・コミュニティです。
https://qiitadon.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away