Mac OS Xボリュームのコマンドラインから「このボリュームの所有権を無視する」を変更する


17

(この質問は、このサイトで私が尋ねた別の質問から派生したものです。)

新しい画像は常に所有者/グループを無視します

ディスクユーティリティから新しいディスクイメージを作成すると、自動的にマウントされます。次に、Finderでボリュームを選択し、Cmd-I(情報ウィンドウの場合)を押すと、ウィンドウの下部にこれが表示されます。

ここに画像の説明を入力してください

つまり、このボリュームではファイルの所有者とグループは無視されます。これは、異なるユーザーアカウントを持つマシン間で共有される外部ドライブにとって非常に便利です。バックアップボリュームの場合、バックアップされたファイルの所有者/グループ情報を保持することをお勧めします。

これをFinderから変更します

これを変更するには、チェックボックスのチェックを外すだけで、イメージを取り出して再マウントすると記憶されます。

コマンドラインから変更(ターミナル)

Finderからイメージをマウントする代わりに、次のコマンドを使用してコマンドラインからイメージをマウントすることもできます(イメージが呼び出されると仮定testimage.sparsebundle):

$ hdiutil attach testimage.sparsebundle/

それでも、ボリュームの所有者は無視されます。-owners onオプションを追加することは、(ほぼ)上の画像のチェックボックスをオフにすることと同等です。

$ hdiutil attach -owners on testimage.sparsebundle/

ただし、Finderから(または-owners onオプションを指定せずにコマンドラインから)ボリュームをアンマウントして再マウントすると、チェックボックスが再びオンになります。

誰もがコマンドライン呼び出しを使用してこの変更を永続化する方法を知っていますか?

回答:


17

diskutilそのために使用します。参照してくださいdiskutil(1)enableOwnershipdisableOwnership。この設定はに保存されるため、特定のオペレーティングシステムのインストールに固有であることに注意してください/var/db/volinfo.database。つまり、ディスクイメージを新しいコンピューターにコピーすると、設定は保持されませんが、すべてのリブート、マウント、マウント解除などはすべて単一のコンピューターで保持されます。

を使用diskutilして識別子を見つけ、オプションを変更します。

$ diskutil list
/dev/disk2
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:                            Disk Image             *41.0 MB    disk2
$ sudo diskutil enableOwnership disk2
File system user/group ownership enabled

2
これは完全に正確ではありません-diskutilは、マウントポイントを使用してディスクを指定する必要があること、つまり、名前を変更するボリュームのスライスを指す必要があることを通知します。正しい構文(ディスク2のスライス2と仮定)は次のようになります。 。

diskutil enableOwnershipマウント間で再度呼び出す必要があることがわかりました。そうしないと、マウントされたボリュームでバイナリとスクリプトを実行できません。
psoft

5

私は、両方の答えが記憶されている方法で所有権を有効にするために働いたことを発見しました:

sudo diskutil enableOwnership <diskname>s<slicenum>

そして:

vsdbutil -a /Volume/<volname>

ただし、少なくともOS X 10.11.3では、その逆は当てはまりません。

sudo diskutil disableOwnership <diskname>s<slicenum>

そして:

vsdbutil -d /Volume/<volname>

どちらも一時的に状態を変更しますが、次にボリュームをマウントするときに所有権が再度有効になります。これは、オペレーティングシステムのバグのようです。幸いなことに、私は機能する解決策を見つけました。所有権を無効にするすべての外部ディスクを取り出します。次に、次を使用して適切なデータベースを削除します。

sudo rm /var/db/volinfo.database

あなたが例を与えることができ、私はS <slicenum>の代わりに書くべきものを取得していない

2

vsdbutil物理ドライブではなくパスに設定するために使用します:

vsdbutil -a /Volume/Diskname

このmanページでは非推奨であることが示されていますが、manページではdiskutil引き続き参照されており、メカニズムUUIDsは物理ディスク/スライスIDではなくボリュームに基づいているようです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.