Question Comment puis-je empêcher le montage d'un disque?


Je possède un Iomega Prestige. La série de disques comprend une partition Virtual CD qui inclut un utilitaire de chiffrement de fichiers qui ne peut être utilisé que sur une machine Windows. Chaque fois que je monte le disque externe sur mon système de fichiers, la partition Virtual CD monte avec elle.

Je voudrais empêcher le CD virtuel de monter tout en permettant au reste du disque d'être monté sans problème. Donc, la question est: Comment puis-je supprimer la partition Virtual CD ou comment puis-je l'empêcher de monter?

J'ai vu quelques options mais elles ne fonctionneront pas:

  • Iomega fait un utilitaire pour supprimer ceci pour un système Windows; Le problème est que je ne lance pas Windows mais que j'utilise plutôt OS X 10.7.

  • Il y a un indice sur MacOSXHints, mais il est dépassé pour Lion. /etc/fstab est déconseillé dans Lion et diskutil ne fournit plus l'UUID d'un disque (au moins comme indiqué sur la page).

Par ailleurs, on ne peut pas simplement formater et repartitionner le disque. Le CD virtuel ne sera pas supprimé.


4
2017-08-06 23:36


origine




Réponses:


L'utilitaire de chiffrement qui peut également supprimer / masquer le CD virtuel est désormais disponible pour OSX.

Iomega Encryption Utility version 3.0 pour Mac OS: à lire en premier 


1
2017-10-17 15:22





Gardez le programme suivant exécuté à tout moment en arrière-plan, par exemple en démarrant automatiquement en utilisant launchd:

#include <CoreFoundation/CoreFoundation.h>
#include <DiskArbitration/DiskArbitration.h>

DADissenterRef BlockMount(DADiskRef disk, void *context)
{
    DADissenterRef dissenter = DADissenterCreate(kCFAllocatorDefault, kDAReturnNotPermitted, CFSTR("forbidden!"));

    CFDictionaryRef description = DADiskCopyDescription(disk);

    // UUID of the disk you don't want to mount:
    CFUUIDRef backupDisk = CFUUIDCreateFromString(NULL, CFStringCreateWithCString(NULL, "3B5315C1-96AE-3471-B43C-2C41CDB12A64", kCFStringEncodingUTF8));

    if (CFDictionaryContainsKey(description, kDADiskDescriptionVolumeUUIDKey)) {
        CFUUIDRef value = CFDictionaryGetValue(description, kDADiskDescriptionVolumeUUIDKey);
        if (CFEqual(backupDisk, value)) {
            return dissenter;
        }
    }
    return NULL;
}


int main (int argc, const char * argv[])
{
    DAApprovalSessionRef session = DAApprovalSessionCreate (kCFAllocatorDefault);
    if (!session)
    {
        fprintf(stderr, "failed to create Disk Arbitration session");
    }
    else
    {
        DARegisterDiskMountApprovalCallback(session, NULL, BlockMount, NULL);
        DAApprovalSessionScheduleWithRunLoop(session, CFRunLoopGetCurrent(), kCFRunLoopDefaultMode);

        while (true) {
            CFRunLoopRunInMode(kCFRunLoopDefaultMode, 60 /* seconds */, false);
        }

        DAApprovalSessionUnscheduleFromRunLoop(session, CFRunLoopGetCurrent(), kCFRunLoopDefaultMode);
        DAUnregisterApprovalCallback(session, BlockMount, NULL);
        CFRelease(session);
    }
    return 0;
}

Découvrez l'UUID du volume que vous ne voulez pas monter en utilisant diskutil list (pour obtenir le nom du périphérique) et diskutil info lire l'UUID.

Enregistrez-vous en tant que main.c et compilez en utilisant la commande suivante (vous avez besoin des outils de développement):

cc main.c -o mountstopd -framework Foundation -framework DiskArbitration

Sur Mac OS X 10.7.1, faire ce qui suit a fonctionné pour moi tout à l’heure (à peu près identique à celui de l’OS X):

Tout d'abord, recherchez le nom de périphérique du volume que vous ne souhaitez pas monter:

diskutil list

La sortie partielle ressemble à ceci:

/dev/disk3
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     Apple_partition_scheme                        *2.2 TB     disk3
   1:        Apple_partition_map                         32.3 KB    disk3s1
   2:                  Apple_HFS DroboBackup             2.2 TB     disk3s3

Dans cet exemple, DroboBackup est la partition réelle, donc /dev/disk3s3 est le dispositif dont nous avons besoin ensuite. Puis trouvez son UUID:

diskutil info /dev/disk3s3

Chercher Volume UUID, par exemple. 3B5315C1-96AE-3471-B43C-2C41CDB12A64.

Ensuite, entrez les informations suivantes:

sudo touch /etc/fstab
sudo sh -c 'echo "UUID=3B5315C1-96AE-3471-B43C-2C41CDB12A64 none hfs rw,noauto" >> /etc/fstab'

Cela empêchera le disque de se monter.


5
2017-09-16 19:43





Je n’ai pas d’Iomega Prestige à tester, mais vous pouvez essayer les Aaron Burghardt Arbitre de disque utilitaire.

De l'introduction dans le README (emphase la mienne):

Disk Arbitrator est un utilitaire d'analyse de Mac OS X conçu pour aider l'utilisateur   veiller à ce que les procédures judiciaires appropriées soient suivies pendant l’imagerie   périphérique de disque.

Disk Arbitrator est essentiellement une interface utilisateur pour le disque   Cadre d'arbitrage, qui permet à un programme de participer à la   gestion des dispositifs de stockage de blocs, y compris le montage automatique   des systèmes de fichiers. Lorsque cette option est activée, l'arbitre de disque bloque le montage   des systèmes de fichiers pour éviter le montage en lecture-écriture et en violation du   l'intégrité de la preuve.

Il est important de noter que Disk Arbitrator est ne pas un logiciel écrit   bloqueur-il ne change pas l'état des périphériques actuellement connectés   il n'affecte pas non plus les appareils nouvellement attachés pour forcer un périphérique à être   lecture seulement. L'utilisateur doit toujours faire attention à ne pas écrire accidentellement sur   un disque avec une commande telle que dd. En raison de ce fait, un matériel   ou logiciel bloqueur d'écriture peut encore être souhaitable pour le plus de son   procédure. L’arbitre de disque complète un bloqueur d’écriture avec   caractéristiques utiles et élimine la recommandation légale typique à   "désactiver l'arbitrage de disque."


3
2018-04-02 12:37