\r\n\r\n
"パーミッションの修正を試したか?"は、Macのトラブルシューティングの定番として、Web上で話題になっているものです。多くのユーザーにとって、多くの希少な問題を解決してくれたようです。しかし、OSX El Capitan(10.11)がリリースされると、ディスクアプリのディスクパーミッションを修復するオプションが突然消えてしまったのです。
これは、AppleがmacOSのパーミッションに関連する問題を解決したということなのでしょうか、それとも別のことなのでしょうか?その謎を解き明かし、Macのディスクパーミッションの使い方を紹介します。
ファイルやフォルダなど、Mac上のすべてのアイテムには、一連のアクセス権が設定されています。これらのコントロールは、どのユーザー・アカウントがアクセスできるか、またどのようなアクセス権を持っているかを制御します。パーミッションは、3種類のユーザー(オーナー、グループ、プロパティー)が実行する3つのアクティビティー(読み取り、書き込み、実行)で構成されています。
所有権層ごとに個別の権限ルールを定義することができます。アカウントと所有権を組み合わせた特権は、セキュリティ、制御された共有のサポート、ファイルへのアクセスの制限または禁止を設定する機能、およびシステムの整合性の維持を提供します。
Finderの情報ウィンドウやターミナルを使えば、誰でもファイルやフォルダーのアクセス権を確認することができます。Finderでファイルまたはフォルダーを右クリックし、関連付けメニューから「情報を見る」を選択します。共有権限」の三角形をクリックすると、項目の権限が展開されます。
ターミナルでこの情報を表示するには、次のように入力します。
ls -l "path to your file"ダッシュの後の文字は、小文字のLで、ファイルの所有権とパーミッションを示します。コマンドラインでは、読み取り権限をr、書き込み権限をw、実行権限をxと略記する。
Macのアクセス権欄に表示されるユーザーを3種類に分類してみましょう。
次に、これらのユーザーが持つことができる3種類の権限について見てみましょう。
OS X Yosemiteおよびそれ以前のバージョンでは、ディスクユーティリティで特定のファイルやフォルダのアクセス権を確認し、修復することができます。しかし、このアプリケーションは実際にパーミッションを修復するわけではありません。リセットされるだけです。
さらに、ディスクユーティリティの修復の権限があると言われると、時間の経過とともに権限が破損している可能性がありそうですね。しかし、これは事実ではありません。パーミッションは、誰かや何かがやってきて変更されるまで、そのままの形で残ります。このようなことが起こるのは、さまざまな理由が考えられます。
OSX El Capitanでは、Appleはすべてのシステムファイル、フォルダ、さらにバンドルアプリケーションにSIP(System Integrity Protection)を導入しています。sipは、デフォルトのパーミッション設定を維持しながら、意図的および非意図的な改ざんからシステムのコンテンツを保護します:/System、/usr、/bin、/**inのディレクトリを保護します。
Appleのアプリケーションをアップデートしたり、macOSをアップグレードする際、インストーラはあらゆる項目の権限を確認し、必要であればリセットします。SIPを無効にしない限り、サードパーティのアプリケーションは(その動作の悪さにかかわらず)パーミッションを変更することはできません。気になる方は、SIPの機能を深く掘り下げてみてください。
System Integrity Protectionは、/Libraryフォルダー内のアイテム、/Applicati***内のアプリケーション、およびホームフォルダー内のすべてを保護するものではありません。特に ~/Library フォルダは、コアシステムの環境設定ファイル、サードパーティのアプリケーション環境設定、Keychain データなどで構成されているため、重要なフォルダです。
これらのファイルやフォルダのパーミッションが変更されると、Mac上で多くの奇妙な問題が発生する可能性があります。不正なパーミッションにより発生する可能性のある問題は以下の通りです。
Finderのサイドバーで、ホームフォルダーを右クリックし、「情報を見る」を選択します。共有と権限」ドロップダウンの三角形をクリックして、その権限を表示します。
ウィンドウ下部の「ロック」ボタンをクリックし、管理者パスワードを入力した後、「アクション」メニューボタンを選択し、「含まれる項目に適用」を選択します。
更新されたパーミッションは、メインフォルダーを通じて伝搬されます。
次に、ターミナルアプリケーションを開き、次のように入力します。
diskutil resetUserPermissi*** / `id -u`このオプションは、ルートボリューム(/)のユーザー権限を現在のユーザーIDにリセットします。
ただし、エラー69841が発生した場合は、以下の手順を実行してください。
Mojave以降のバージョンは上記と同じ手順ですが、事前に端末をフルディスクアクセスに追加しておく必要があります。これを行うには、システム環境設定> セキュリティとプライバシーに移動し、プライバシータブをクリックします。ロックアイコンをクリックし、管理者パスワードを入力すると変更できます。
次に、「フルディスクアクセス」タブを選択し、プラスボタンをクリックし、ターミナルアプリケーションを追加します。
これが完了したら、High Sierra以前のバージョンでは、上記のTerminalコマンドを続行してください。
ディスクのアクセス権を修復するオプションがディスクユーティリティ・アプリケーションから消えたとき、トラブルシューティングの重要なステップではなかったので、あまり深く考えませんでした。しかし、不正なアクセス権によって発生する可能性のある問題の種類を見ると、これらの問題が発生した場合、ホームフォルダーのアクセス権をリセットすることは最後の手段であることは明らかです。
意外なことに、Appleはこのオプションを搭載しなくなりました。ただし、これらの手順は必要なときだけ適用することを忘れないでください。パーミッションを理解することは複雑な課題です。macOSのユーザーアカウントの仕組みを理解すれば、かなり楽になります。詳しくは、Macで複数のユーザーアカウントを設定するためのガイドをお読みください。