5 votes

Comment créer un volume APFS crypté à partir de la ligne de commande ?

J'essaie d'automatiser la création d'une image APFS cryptée contenant des fichiers. Ce que j'ai jusqu'à présent :

>>> hdiutil create -megabytes 1 -layout GPTSPUD -fs apfs -volname encryption encryption.dmg
    created: .../encryption.dmg

>>> hdiutil attach -stdinpass encryption.dmg
    /dev/disk2              GUID_partition_scheme           
    /dev/disk2s1            Apple_APFS                      
    /dev/disk3              EF57347C-0000-11AA-AA11-0030654 
    /dev/disk3s1            41504653-0000-11AA-AA11-0030654 /Volumes/encryption

>>> diskutil apfs deleteVolume disk3s1
    Started APFS operation
    Deleting APFS Volume from its APFS Container
    Unmounting disk3s1
    Deleting Volume
    Finished APFS operation

>>> diskutil apfs addVolume disk3 APFS encryption -nomount -stdinpassphrase
    Exporting new encrypted APFS Volume "encryption" from APFS Container Reference disk3
    Started APFS operation on disk3
    Preparing to add APFS Volume to APFS Container disk3
    Creating APFS Volume
    Created new APFS Volume disk3s1
    Disk from APFS operation: disk3s1
    Finished APFS operation on disk3

>>> hdiutil detach -quiet /dev/disk3

>>> hdiutil detach -quiet /dev/disk2

>>> hdiutil attach -stdinpass encryption.dmg

    hdiutil: attach failed - no mountable file systems

Mais la dernière commande d'attachement a échoué.

Si j'essaie d'ouvrir le DMG résultant dans le Finder, il me dit aussi qu'il n'y a pas de systèmes de fichiers montables, donc clairement je n'ai pas réussi à ajouter le volume, même si la fonction addVolume a réussi et dit qu'elle a créé le volume avec succès.

Peut-être que ce n'est pas le cas, alors quelqu'un sait-il comment faire ?

3voto

Hakanai Points 380

Il semble que le volume ait été créé correctement, mais hdiutil attach ne fournit que des résultats trompeurs lorsque vous essayez de monter un disque contenant un volume crypté. Si vous utilisez -nomount et ensuite procéder à diskutil à la place, tout semble fonctionner.

Voici le flux (il peut y avoir des raccourcis, mais ceci est exécuté à partir d'un script, donc parfois il se détache et se rattache parce que c'est ainsi que le script est organisé) :

>>> hdiutil create -megabytes 1 -layout GPTSPUD -fs apfs -volname encrypted encrypted.dmg
    created: .../encrypted.dmg

>>> hdiutil attach -nomount encrypted.dmg
    /dev/disk2              GUID_partition_scheme           
    /dev/disk2s1            Apple_APFS                      
    /dev/disk3              EF57347C-0000-11AA-AA11-0030654 
    /dev/disk3s1            41504653-0000-11AA-AA11-0030654 

>>> diskutil mount disk3s1
    Volume encrypted on disk3s1 mounted

>>> diskutil apfs deleteVolume disk3s1
    Started APFS operation
    Deleting APFS Volume from its APFS Container
    Unmounting disk3s1
    Deleting Volume
    Finished APFS operation

>>> diskutil apfs addVolume disk3 APFS encrypted -nomount -stdinpassphrase
    Exporting new encrypted APFS Volume "encrypted" from APFS Container Reference disk3
    Started APFS operation on disk3
    Preparing to add APFS Volume to APFS Container disk3
    Creating APFS Volume
    Created new APFS Volume disk3s1
    Disk from APFS operation: disk3s1
    Finished APFS operation on disk3

>>> hdiutil detach /dev/disk3
    "disk3" unmounted.
    "disk3" ejected.

>>> hdiutil detach /dev/disk2
    "disk2" unmounted.
    "disk2" ejected.

>>> hdiutil attach -nomount encrypted.dmg
    /dev/disk2              GUID_partition_scheme           
    /dev/disk2s1            Apple_APFS                      
    /dev/disk3              EF57347C-0000-11AA-AA11-0030654 
    /dev/disk3s1            41504653-0000-11AA-AA11-0030654 

>>> diskutil apfs unlockVolume disk3s1 -stdinpassphrase
    Unlocking any cryptographic user on APFS Volume disk3s1
    Unlocked and mounted APFS Volume

>>> diskutil mount disk3s1
    Volume encrypted on disk3s1 mounted

>>> hdiutil detach /dev/disk3
    "disk3" unmounted.
    "disk3" ejected.

>>> hdiutil detach /dev/disk2
    "disk2" unmounted.
    "disk2" ejected.

>>> hdiutil attach -nomount encrypted.dmg
    /dev/disk2              GUID_partition_scheme           
    /dev/disk2s1            Apple_APFS                      
    /dev/disk3              EF57347C-0000-11AA-AA11-0030654 
    /dev/disk3s1            41504653-0000-11AA-AA11-0030654 

>>> dd if=/dev/disk3 of=encrypted.img

    1968+0 records in
    1968+0 records out
    1007616 bytes transferred in 0.049776 secs (20242977 bytes/sec)

>>> hdiutil detach /dev/disk3
    "disk3" unmounted.
    "disk3" ejected.

>>> hdiutil detach /dev/disk2
    "disk2" unmounted.
    "disk2" ejected.

0voto

boris42 Points 1311

Avec vos commandes, vous ne créez pas réellement une image disque cryptée parce que vous n'avez pas utilisé la commande -cryptage option. Voici une commande qui va créer une image de 1Mb avec un cryptage AES-128 :

hdiutil create -size 1mb -fs apfs -volname Secret -encryption AES-128 encrypted.dmg -attach

Retirer le -attacher si vous voulez le faire monter vous-même plus tard.

Ce qui précède produira la sortie suivante :

/dev/disk2              GUID_partition_scheme           
/dev/disk2s1            Apple_APFS                      
/dev/disk3              EF57347C-0000-11AA-AA11-0030654 
/dev/disk3s1            41504653-0000-11AA-AA11-0030654 /Volumes/Secret
created: /private/tmp/encrypted.dmg

Vous pouvez vérifier les informations sur l'image avec :

hdiutil imageinfo encrypted.dmg

Quelque part dans la sortie, vous verrez :

Class Name: CEncryptedEncoding
Encryption: AES-128
Encrypted: true

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X