macos – OS X で chown が “Operation not permitted” と報告するのはなぜですか?

file-permissions macos

私のMac(10.6.7)で以下のようなことをしようとしています

sudo chown myusername:wheel ./entries

が、Unix/Macでは「操作が許可されていません」を返しています。犯人ファイルをls -lashにすると、以下のようになります

8 -rwxrwxrwx   1 myusername  staff   394B Apr 26 23:26 entries

sudosudo suを試してみましたが、何もうまくいきません。どうしたのでしょうか?

古いUbuntuボックスからコピーしたファイルをchmodしようとしています。ほとんどのファイルは再帰的にchmod‘edに成功しています

  76  josef.van.niekerk  2011-05-04


ベストアンサー

はい、Mac はファイルの分野で Unix に多くの機能強化をしています。もうあまり使われていないリソースフォークのことは無視して、以下のようなものがあります

  • 標準的な Unix のパーミッション ugo rwx などを指定します。通常の Unix ツールが適用されます
  • ACLは、ls -leで表示可能、chmod [ -a | +a | =a ]で変更可能
  • ファイルフラグは ls -lO (ゼロではなく大文字の oh) で表示可能で、chflags で変更可能です
  • 拡張属性で、ls -l@で表示可能(属性キーのみ)、xattrで表示・変更可能です。(man xattrで何も得られない場合は、xattr -hでヘルプを利用してください)
  • OS X 10.11 “El Capitan” 以降、System Integrity Protection (SIP) は、sudo を使用して root として実行している場合でも、一部のファイルを通常のプロセスからの変更からさらに保護します。SIP で保護されたファイルは ls -lOrestricted フラグを持つものとしてリストアップされ、ls -l@com.apple.rootless 属性を持つものとしてリストアップされます

Unix パーミッション、ACL、ファイルフラグ、または SIP のために、ファイルに対する操作を拒否することができます。ファイルを完全にロック解除するには

sudo chmod -N file        # Remove ACLs from file
sudo chmod ugo+rw file    # Give everyone read-write permission to file
sudo chflags nouchg file  # Clear the user immutable flag from file
sudo chflags norestricted file  # Remove the SIP protection from file
sudo xattr -d com.apple.rootless file # Remove SIP protection from file

システム整合性保護(SIP)が有効な場合、sudo chflags norestrictedsudo xattr -d com.apple.rootlessは “Operation not permitted “エラーを返す。フラグや属性をクリアするには、macOS Recovery で起動し、ターミナルからコマンドを実行する必要があります (最初にディスクユーティリティを使って起動ドライブのロックを解除してマウントし、ファイルは /Volumes/Macintosh HD 以下にあることを覚えておく必要があるかもしれません)。しかし、将来のOSアップデートはrestrictedフラグとcom.apple.rootless属性を削除したファイルに復元する可能性が高いことに注意してください

それはマルウェアや偶発的な損傷に対する保護の多くを削除するので、SIPを無効にすることは推奨されない。あなたがSIPを無効にする場合は、変更を行うことが完了したときに、それを再有効にします

ls -lOschg フラグが設定されていることを示している場合、それを解除するにはシングルユーザモードにしなければならないことに注意してください。なぜそのファイルにそのフラグが設定されているのか、なぜそれをいじろうとしているのか、その結果はどうなるのか、という大きな疑問があるので、ここではそのことには触れません

94  Old Pro  2012-12-12


私も同じ問題を抱えていました。それは、問題のあるファイルがOSによって「ロックされている」とマークされていたことが判明しました。私はこの解決策を見つけ、それは数秒で問題を解決しました

Page not found · GitHub Pages

Tigerではrmコマンドが変更されたようで、rm -Rfを高権限で使うと自動的にファイルのロックが解除されるようになったようです

Tiger以前のOS Xでは。find /Volumes/Transit -flags +uchg -print0 | xargs -0 chflags nouchg

Tiger以降のOS Xで。sudo rm -Rf foldername/

また、OS X 10.4以降でも、uchguappndのようなファイルメタデータのフラグが存在する場合があり、ファイルのパーミッションや所有権の変更ができないようになっています。chflagsはフラグを削除することができます。ファイルの属性/メタデータのいくつかと、それが異なるコピーツールによってどのように扱われるかは、こちらにあります

18  bendalton  2011-06-08


Crashplan.appでも同じ問題がありました

ここに記載されているすべての解決策は私を助けることはできませんでしたが、これはトリックを行いました。http://forums.macrumors.com/showthread.php?t=1546163

システムとユーザーの不変フラグを変更する必要があります

これを実行すると、ファイル/フォルダ上でどのフラグがアクティブになっているかを確認できます

ls -lhdO MyFile

反応はこんな感じかもしれません

drwxrwxr-x 3 root admin schg,uchg 102B Apr 8 2013 MyFile

schg,uchgは不変フラグです。一つはシステム用、もう一つはユーザ用です。これらを削除するには、次のようにします

chflags noschg CrashPlan.app # this removes system immutable flag
chflags nouchg CrashPlan.app # this removes the user immutable flags

そうすると、少なくとも私の場合は、ファイルのロックが解除されているので、削除することができます

12  ruffy  2014-08-21


OS X 10.11 (El Capitan)では、新機能のルートレスが原因の場合もあります。説明は この回答 を参照してください

要するに、特定の重要なディレクトリについては、sudochownchmodのいずれを使っても、それらを修正する方法がありません。これは /usr ディレクトリに影響します (/usr/local を変更することはできますが)

ルートレスで保護されたディレクトリを変更するには、ルートレスを無効にする必要があります。そして、もちろん、変更を行った後は、重要なセキュリティ強化のため、再度有効にしてください

12  Nate  2015-09-30


悩んだ末にたどり着いたのがこちら

  • ~/Desktopに移動しました
  • sudo chown myusername:staff ./entries
  • ファイルを元の場所に戻してもうまくいかなかったので(またしても操作が許可されていない)
  • sudo rm ./entries
  • sudo mv ~/Desktop/entries ./entries

5  josef.van.niekerk  2011-05-04


私も同じ問題を抱えていました。最後に、私はこのようなファインダーを使用しています

コンピュータ -> ディスク -> ユーザ -> ユーザ名 -> 右クリック -> 情報を取得

私はそれがロックされていることを発見しました、おそらく私は過去にそれをやって忘れていました。ロックされているチェックボックスのチェックを外してみたところ、問題は解決しました

このような問題に取り組むためには、ファインダーの「Get Info」を利用することをお勧めします

(OS X 10.8.3)

4  danza  2013-09-19


ファイルとその親フォルダの両方がロックされていないことを確認してください

Macメールの署名ファイルを削除しようとしたときに、同じような問題に直面しました。ファイルとその親フォルダのロックを解除するまで削除できませんでした

1  camslice  2015-03-23


タイトルとURLをコピーしました