Modifiez «ignorer la propriété sur ce volume» à partir de la ligne de commande pour le volume Mac OS X

17

(Cette question est le résultat d'une autre question que j'ai posée sur ce site.)

Les nouvelles images ignorent toujours le propriétaire / groupe

Lors de la création d'une nouvelle image disque à partir de l'Utilitaire de disque, elle est automatiquement montée. Si vous sélectionnez ensuite le volume dans le Finder et appuyez sur Cmd-I (pour la fenêtre d'informations), vous verrez ceci au bas de la fenêtre:

entrez la description de l'image ici

Cela signifie que les propriétaires et les groupes de fichiers seront ignorés sur ce volume. Ceci est très pratique pour les disques externes partagés entre des machines avec différents comptes d'utilisateurs. Pour un volume de sauvegarde, ce n'est pas une bonne idée car vous souhaitez conserver les informations sur le propriétaire / groupe pour les fichiers sauvegardés.

Changer cela depuis le Finder

Pour changer cela, décochez simplement la case et il sera mémorisé après avoir éjecté et remonté l'image.

Changer de ligne de commande (Terminal)

Au lieu de monter l'image à partir du Finder, vous pouvez également la monter à partir de la ligne de commande à l'aide de cette commande (en supposant que l'image est appelée testimage.sparsebundle):

$ hdiutil attach testimage.sparsebundle/

Pourtant, les propriétaires sont ignorés sur le volume. Ajouter cette -owners onoption équivaut (presque) à décocher la case dans l'image ci-dessus:

$ hdiutil attach -owners on testimage.sparsebundle/

Cependant, après avoir démonté et remonté le volume à partir du Finder (ou de la ligne de commande sans l' -owners onoption), la case est à nouveau cochée.

Quelqu'un sait-il comment rendre cette modification persistante à l'aide d'un appel en ligne de commande?

mgd
la source

Réponses:

17

Vous utilisez diskutilpour cela. Voir diskutil(1)sous enableOwnership et disableOwnership . Notez que ce paramètre est spécifique à une installation de système d'exploitation particulière, car il est stocké dans /var/db/volinfo.database. Autrement dit, si vous copiez l'image disque sur un nouvel ordinateur, le paramètre ne persistera pas, mais il persistera à travers les redémarrages, les montages, les démontages, etc. sur un seul ordinateur.

Utilisez diskutilpour trouver l'identifiant, puis changez l'option:

$ 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
bahamat
la source
2
Ce n'est pas tout à fait exact - diskutil va vous dire que vous devez spécifier un disque avec un point de montage, ce qui signifie que vous devez le pointer vers la tranche du volume que vous souhaitez renommer. La syntaxe correcte (en supposant que la tranche 2 du disque 2) serait: sudo diskutil enableOwnership / dev / disk2s2 Si vous exécutez: sudo diskutil list, vous pourrez voir toutes les informations sur le disque et trouver le disque et la tranche appropriés pour votre volume .
J'ai constaté que je dois ré-invoquer diskutil enableOwnershipentre les montages, sinon je ne peux pas exécuter de binaires et de scripts sur le volume monté.
psoft
5

J'ai trouvé que les deux réponses fonctionnaient pour permettre l'appropriation d'une manière dont on se souvient:

sudo diskutil enableOwnership <diskname>s<slicenum>

Et:

vsdbutil -a /Volume/<volname>

Cependant, l'inverse n'est pas vrai, au moins sur OS X 10.11.3:

sudo diskutil disableOwnership <diskname>s<slicenum>

Et:

vsdbutil -d /Volume/<volname>

Les deux modifient temporairement l'état, mais la propriété est réactivée la prochaine fois que je monte le volume. Cela semble être un bogue dans le système d'exploitation. Heureusement, j'ai trouvé une solution qui fonctionne. Éjectez tous les disques externes dont vous souhaitez désactiver la propriété. Supprimez ensuite la base de données appropriée à l'aide de:

sudo rm /var/db/volinfo.database
Russell Owen
la source
pouvez-vous donner un exemple, je n'ai pas obtenu ce que devrais-je écrire à la place de s <slicenum>
Sun
2

Utilisez-le vsdbutilpour définir un chemin au lieu d'un lecteur physique:

vsdbutil -a /Volume/Diskname

Bien que la manpage suggère qu'elle est obsolète, la manpage pour diskutily fait toujours référence et le mécanisme semble être basé sur le volume et UUIDsnon sur les identifiants de disque / tranche physique.

Chris F Carroll
la source