2011-05-04 20:42:49 +0000 2011-05-04 20:42:49 +0000
69
69

OS Xでchownが「操作は許可されていません」と報告するのはなぜですか?

私のMac(10.6.7)で以下のようにしようとしています:

sudo chown myusername:wheel ./entries

しかし、Unix/Macは “Operation not permitted "を返してきます。犯人ファイルをls -lashすると以下のようになります。

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

sudoを試してみましたが、何も動きません。何か心当たりがありますか?

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

回答 (7)

91
91
91
2012-12-12 21:58:23 +0000

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

  • 標準的なUnixのパーミッション ugorwx など。通常のUnixツールが適用されます。
  • ACLの、ls -leで表示可能、chmod [-a | +a | =a]で変更可能。
  • ファイルフラグ ls -lOで表示可能(0ではなく大文字)、chflagsで変更可能。
  • 拡張属性ls -l@ (属性キーのみ) で表示可能、xattr で表示・変更可能。(xattr -hで何も得られない場合はman xattrを使用してください。)
  • OS X 10.11 “El Capitan "以降、* System Integrity Protection ** (SIP)は、sudoを使用してrootとして実行している場合でも、一部のファイルを通常のプロセスからの変更からさらに保護します。SIP で保護されたファイルは、ls -lO フラグを持つファイルとして restricted にリストアップされ、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 は「許可されていない操作」エラーを返します。フラグや属性をクリアするには、 macOS Recovery で起動し、ターミナルからコマンドを実行する必要があります(最初にディスクユーティリティを使用して起動ドライブのロックを解除してマウントし、ファイルは/Volumes/Macintosh HDや起動ドライブの名前を覚えておく必要があるかもしれません)。しかし、将来のOSアップデートでは、restrictedフラグとcom.apple.rootless属性を削除したファイルに復元される可能性が高いことに注意してください。

_ SIPを無効にすることは推奨されません _ なぜなら、マルウェアや偶発的な損害に対する多くの保護が削除されるからです。SIPを無効にした場合は、変更が終わったら再度有効にしてください。

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

18
18
18
2011-06-08 17:47:37 +0000

私も同じ問題を抱えていました。それは、問題のファイルがOSによって “ロックされている "とマークされていることが判明しました。私はこの解決策を見つけ、数秒で問題を解決しました。 http://explanatorygap.net/2005/07/10/unlocking-files-recursively-from-the-command-line/

Tigerではrmコマンドが変更されたようです。

Tiger以前のOS Xではrm -Rf

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

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

12
12
12
2015-09-30 23:09:40 +0000

OS X 10.11 (El Capitan)では、新しいRootless機能によっても発生する可能性があります。説明は この回答 を参照してください。

要するに、特定の重要なディレクトリについては、sudoでもchownでもchmodでも、それらを変更する方法がありません。これは /usr ディレクトリに影響を与えます (/usr/local を修正することは許可されていますが)。

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

12
12
12
2014-08-21 17:30:15 +0000

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 は不変フラグです。1つはシステム用、もう1つはユーザ用です。これらを削除するには、以下のようにしてください。

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

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

5
5
5
2011-05-04 21:02:23 +0000
  • ~/Desktop
  • sudo chown myusername:staff ./entries
  • sudo rm ./entries
  • ファイルを元の場所に移動してもうまくいかなかったので(またしても操作が許可されていない)、以下のようにしました。
  • sudo mv ~/Desktop/entries ./entries
  • 0x6&
4
4
4
2013-09-19 22:49:53 +0000

私はホームフォルダについて、同じ問題を抱えていました。結局、こんな感じでファインダーを使ってみた。

Go -> Computer -> your disk -> Users -> your user name -> right click -> Get Info

I found that it was locked, probably i did it in the past and forgetting. ロックされてるチェックボックスのチェックを外して、問題は解決した。

この手の問題に対処するには、ファインダーの「Get Info」を使うことをお勧めします。

(OS X 10.8.3)

1
1
1
2015-03-23 15:28:32 +0000

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

私はMac Mailの電子メール署名ファイルを削除しようとしたときに同様の問題に直面しました。ファイルとその親フォルダのロックが解除されるまで削除できませんでした。