मैं डिस्क को माउंट होने से कैसे रोकूं?


4

मैं एक Iomega प्रेस्टीज का मालिक हूं। डिस्क श्रृंखला में एक वर्चुअल सीडी विभाजन शामिल है जिसमें एक फ़ाइल एन्क्रिप्शन उपयोगिता शामिल है जिसे केवल विंडोज मशीन पर उपयोग किया जा सकता है। जब भी मैं अपने फाइलसिस्टम में बाहरी ड्राइव को माउंट करता हूं, वर्चुअल सीडी पार्टीशन इसके साथ ही सही होता है।

मैं वर्चुअल सीडी को बढ़ते हुए रोकना चाहता हूं, जबकि बाकी डिस्क को बिना किसी परेशानी के माउंट किया जा सकता है। तो, सवाल यह है: मैं या तो वर्चुअल सीडी विभाजन को कैसे हटा सकता हूं या मैं इसे बढ़ने से कैसे रोक सकता हूं?

मैंने कुछ विकल्प देखे हैं लेकिन वे काम नहीं करेंगे:

  • विंडोज सिस्टम के लिए इसे हटाने के लिए Iomega एक उपयोगिता बनाता है; समस्या यह है कि मैं विंडोज नहीं चलाता, बल्कि मैं ओएस एक्स 10.7 का उपयोग करता हूं।

  • पर एक संकेत है MacOSXHints , लेकिन यह शेर के लिए पुराना है। /etc/fstab सिंह में पदावनत है और diskutil अब डिस्क का UUID प्रदान नहीं करता (कम से कम पृष्ठ पर संकेत के रूप में)।

वैसे, कोई डिस्क को केवल स्वरूपित नहीं कर सकता है और न ही पुन: प्रस्तुत कर सकता है। वर्चुअल सीडी को हटाया नहीं जाएगा।

जवाबों:



5

पृष्ठभूमि में हर समय निम्नलिखित कार्यक्रम चालू रखें, उदा। ऑटो द्वारा उपयोग शुरू 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;
}

उस वॉल्यूम का UUID ज्ञात करें जिसका उपयोग आप माउंट नहीं करना चाहते हैं diskutil list (डिवाइस नाम प्राप्त करने के लिए) और diskutil info UUID पढ़ने के लिए।

मुख्य कमांड के रूप में सहेजें और निम्नलिखित कमांड का उपयोग करके संकलन करें (आपको डेवलपर टूल की आवश्यकता है):

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

Mac OS X 10.7.1 पर, मेरे लिए अभी-अभी काम किया है (OS X Hint में जो है उसके बहुत समान)

सबसे पहले, उस वॉल्यूम का डिवाइस नाम पता करें जिसे आप माउंट नहीं करना चाहते हैं:

diskutil list

आंशिक उत्पादन इस तरह दिखता है:

/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

इस उदाहरण में, DroboBackup वास्तविक विभाजन है, इसलिए /dev/disk3s3 वह डिवाइस है जिसकी हमें अगली आवश्यकता है। फिर इसका UUID पता करें:

diskutil info /dev/disk3s3

ढूंढें Volume UUID, उदा। 3B5315C1-96AE-3471-B43C-2C41CDB12A64

फिर, निम्नलिखित दर्ज करें:

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

यह डिस्क को माउंट होने से रोकेगा।


3

मेरे पास परीक्षण करने के लिए एक Iomega प्रेस्टीज नहीं है, लेकिन आप ऐरॉन बर्गार्ड्ट की कोशिश कर सकते हैं डिस्क आर्बिट्रेटर उपयोगिता।

में परिचय से README (जोर मेरा):

डिस्क आर्बिट्रेटर मैक ओएस एक्स फोरेंसिक उपयोगिता है जिसे उपयोगकर्ता की सहायता के लिए डिज़ाइन किया गया है   इमेजिंग के दौरान सही फोरेंसिक प्रक्रियाओं का पालन किया जाता है   डिस्क डिवाइस।

डिस्क आर्बिट्रेटर अनिवार्य रूप से डिस्क के लिए एक यूजर इंटरफेस है   मध्यस्थता की रूपरेखा, जो एक कार्यक्रम में भाग लेने के लिए सक्षम बनाता है   स्वचालित संग्रहण सहित ब्लॉक भंडारण उपकरणों का प्रबंधन   फ़ाइल सिस्टम की। सक्षम होने पर, डिस्क आर्बिट्रेटर माउंटिंग को ब्लॉक कर देगा   फ़ाइल सिस्टम की पढ़ने-लिखने और उल्लंघन करने के रूप में बढ़ते से बचने के लिए   साक्ष्यों की अखंडता।

यह ध्यान रखना महत्वपूर्ण है कि डिस्क आर्बिट्रेटर है नहीं एक सॉफ्टवेयर लिखें   अवरोधक - यह वर्तमान में संलग्न उपकरणों की स्थिति को नहीं बदलता है   न ही यह किसी उपकरण को होने के लिए मजबूर करने के लिए नए संलग्न उपकरणों को प्रभावित करता है   सिफ़ पढ़िये। उपयोगकर्ता को अब भी सावधान रहना चाहिए कि वह गलती से न लिखे   जैसे कमांड के साथ डिस्क dd। इस तथ्य के कारण, एक हार्डवेयर   या सॉफ्टवेयर राइट-ब्लॉकर अभी भी सबसे अधिक ध्वनि के लिए वांछनीय हो सकता है   प्रक्रिया। डिस्क आर्बिट्रेटर अतिरिक्त के साथ एक लिखने-अवरोधक की तारीफ करता है   उपयोगी सुविधाओं और करने के लिए विशिष्ट फोरेंसिक सिफारिश को समाप्त   "डिस्क मध्यस्थता को अक्षम करें।"

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.