मैं FAT USB ड्राइव से किसी फ़ाइल को कैसे निष्पादित कर सकता हूं?


12

मैं अपने यूएसबी ड्राइव पर एक पोर्टेबल ऐप इंस्टॉल करने की कोशिश कर रहा हूं, जैसे कि यह उबंटू और विंडोज दोनों के साथ संगत है (विशेष रूप से, एक प्रोग्राम जिसे ईटॉयस कहा जाता है)। समर्थन पहले से ही दोनों ऑपरेटिंग सिस्टम के लिए ऐप में बनाया गया है - etoys.shउबंटू के लिए और etoys.exeविंडोज के लिए है। मैंने एक FAT ड्राइव पर स्थापित करने का निर्णय लिया क्योंकि दोनों प्रणालियों से पढ़ा जा सकता है। यह विंडोज के लिए ठीक काम करता है, लेकिन किसी कारण से मैं Ubuntu पर etoys.sh को निष्पादित नहीं कर सकता।

समस्या फ़ाइल के साथ नहीं है - जब पूरे फ़ोल्डर को स्थानीय हार्ड ड्राइव पर कॉपी किया जाता है, तो ऐप उबंटू में बहुत अच्छा काम करता है। लेकिन जब मैं इसे यूएसबी से निष्पादित करने का प्रयास करता हूं, तो यह एक पाठ संपादक में फाइल को खोलता है।

मैंने तब इसे एक टर्मिनल से चलाने की कोशिश की, लेकिन मुझे संदेश मिल गया अनुमति से इनकार कर दिया।

मुझे अन्य निष्पादनों के साथ भी यही समस्या है।

क्या यूएसबी स्टिक से चीजों को निष्पादित करने का एक आसान तरीका है?


2
संबंधित प्रश्न यहां: askubuntu.com/questions/23108/…
luri

जवाबों:


20

FA32 फ़ाइल सिस्टम की सीमाओं के कारण, आप नहीं कर सकते।

अब, आप धोखा दे सकते हैं:

  1. sh etoys.shइसके बजाय या तो कॉल करें./etoys.sh
  2. यदि आप चाहें, तो आप एक और स्क्रिप्ट भी बना सकते हैं (जो कि आपकी हार्ड ड्राइव पर होगी, उदाहरण के लिए) जो केवल यूएसबी स्क्रिप्ट पर आपकी स्क्रिप्ट को कॉल करती है:

    #!/bin/bash
    sh /media/USB/etoys.sh
    

बहुत धन्यवाद! दूसरा धोखा निश्चित रूप से एक विकल्प है, और मैं इसे ध्यान में रखूंगा। वैकल्पिक रूप से, क्या एक और फाइल सिस्टम है जिसका मैं उपयोग कर सकता हूं जो विंडोज और उबंटू दोनों के साथ काम करेगा और मुझे फाइलों को निष्पादित करने देगा?
डेरेक रेडफेरन

आप ext2 या ext3 का उपयोग कर सकते हैं, लेकिन आपको इसे काम करने के लिए विंडोज पर एक छोटी उपयोगिता स्थापित करने की आवश्यकता है।

इस बारे में एक और सवाल - मैंने हार्ड ड्राइव पर स्क्रिप्ट बनाने के विकल्प के साथ जाने का फैसला किया और यह बहुत अच्छा काम करता है। लेकिन मैं उन प्रोग्रामों के लिए स्क्रिप्ट भी रखना चाहता हूं जो .sh फाइलें नहीं हैं - उदाहरण के लिए, पोर्टेबल क्रोमियम, जो "निष्पादन योग्य (एप्लिकेशन / एक्स-निष्पादन योग्य)" टाइप है। श का उपयोग करने से काम नहीं होता है, और /। क्रोमियम अभी भी अनुमति से इनकार करता है। क्या इसके लिए उपयोग करने के लिए एक और कमांड है?
डेरेक रेडफेरन

हम्म, मुझे लगता है कि आप बस धोखा दे सकते हैं: क्रोमियम को निष्पादित करने से पहले, आप इसे निष्पादन योग्य बनाने के लिए इसे चोद सकते हैं। चूंकि हर बार chmod कमांड को कॉल किया जाएगा, इसलिए यह कोई मायने नहीं रखता है कि जब आप USB ड्राइव

मुझे लगा कि आप FAT पर बिल्कुल भी चुमोद नहीं कर सकते हैं क्योंकि यह यूनिक्स की अनुमति का समर्थन नहीं करता है।
डेरेक रेडफेरन

8

डिवाइस को माउंट करने के साथ -o mode=<value>काम करना चाहिए

mode=value

0777मूल अनुमतियों के मूल्य और अवहेलना करने के लिए सभी फ़ाइलों का मोड सेट करें । उन निर्देशिकाओं में खोज अनुमति जोड़ें, जिन्होंने अनुमति पढ़ी है। अष्टक में मान दिया जाता है।


1
क्या मुझे इसे fstab में सेट करना चाहिए?
डेरेक रेडफेरन

@ बोन्सी स्कॉट mode=vfat के लिए कोई विकल्प नहीं है , माउंट (8) देखें
पाविक

6

मुझे वास्तव में http://ubuntuforums.org/showthread.php?t=1665289 पर एक महान समाधान मिला जिसने समस्या को ठीक किया।

मूल रूप से, यह कमांड को चलाने के लिए कहता है

sudo sed -i -e 's|showexec|\x00\x00\x00\x00\x00\x00\x00\x00|g' /usr/lib/udisks/udisks-daemon

और यह शोकेस विकल्प के साथ ऑटो-माउंटिंग से डिस्क को रोक देगा।

मुझे अपने सवाल का जवाब देना पसंद नहीं है, लेकिन इसने मेरे लिए काम किया और मुझे उम्मीद है कि यह अन्य लोगों को भी मदद करेगा।

ubuntu 18.04 के लिए:

sudo sed -i -e 's|showexec|\x00\x00\x00\x00\x00\x00\x00\x00|g' /usr/lib/udisks2/udisksd

3

अंत में, मुद्दा यह है कि हो रहा है udisksकीलों से फाइल सिस्टम showexecकिसी भी फाइल है कि में समाप्त नहीं रोक रहा है, विकल्प .exe, .batया .comचलाने के लिए।

एक संबंधित प्रश्न (udisks को कस्टम माउंट विकल्प कैसे दें) यहां पाया जा सकता है: कैसे तुरंत पेंड्राइव में डेटा रिकॉर्ड करने के लिए कॉन्फ़िगर करें? udevऐसा करने के लिए आप कॉन्फ़िगरेशन का उपयोग कर सकते हैं ।

क्या udisks के लिए डिफ़ॉल्ट माउंट विकल्प सेट करना वास्तव में संभव नहीं है? के आधार पर एक और समाधान प्रस्तावित करता है udisks-glue, लेकिन यह कम आश्वस्त लगता है, क्योंकि यह अंततः पर निर्भर करता है udisks, ताकि ऐसा लगे कि आप विकल्प जोड़ सकते हैं, लेकिन उन्हें हटा नहीं सकते हैं, और विशेष रूप showexecसे अभी भी है)।

किसी भी मामले में, मैं पसंद करता हूं कि एक बाइनरी फ़ाइल को पैच करना।


2

दिखाए गए समाधानों में से किसी ने भी काम नहीं किया, जहां तक ​​मैं अपने एफएटी 32 विभाजन में चलने के लिए लिनक्स टर्मिनल प्रोग्राम के रूप में लिखे गए प्रोग्राम को प्राप्त करने के लिए कह सकता था, लेकिन कार्यक्रम के फ़ाइल नाम को शामिल करने के लिए बदलना। एक्सएक्सएक्स एक्सटेंशन ने काम किया (टिप के लिए धन्यवाद)। , मैंने जो FAT32 पार्टीशन पर निष्पादित करने की कोशिश कर रहा था, उस टर्मिनल प्रोग्राम के लिए फाइलनाम का नाम बदलकर फ़ाइलनाम के रूप में रखा, और फिर इसे अन-माउंट किया, इसे फिर से माउंट किया और डिस्क अनुमतियों को निष्पादित करने की अनुमति दी, फिर फ़ाइल नाम पर जाएं। exe और इसकी अनुमतियाँ सेट करें और फिर चेक मार्क एक माइनस में वापस आने के बजाय चिपक जाएगा, और जब मैंने पथ सेट किया और टर्मिनल में दर्ज किया गया ।/filename.exe टर्मिनल प्रॉम्प्ट पर प्रोग्राम को उसी तरह चलाया जाना चाहिए जैसे कि कमांड लाइन को दिखाना चाहिए और फ़ाइल नाम सहित कमांड लाइन दिखाता है। .exe दर्ज किया गया, हालाँकि उबंटू फ़ाइल निर्देशिका फ़ाइल को MSDOS / Windows के रूप में दिखाती है जो इसे लिनक्स प्रोग्राम के रूप में चलाती है।


1

इसलिए मुझे बहुत सरल (और सुरक्षित समाधान) मिला।

USB FAT32 को प्रारूपित करने के लिए gparted का उपयोग करें और फिर हमें विभाजन => निम्न झंडे सेट करने के लिए झंडे प्रबंधित करें: boot, lba


0

आप umask=000मोड का उपयोग कर सकते हैं :

umount /dev/sdb1
mount -o umask=000 -t vfat /dev/sdb1 /media/sdb1

स्रोत: wiki.linuxquestions.org , माउंट (8) में अनुभाग "वसा के लिए माउंट विकल्प" ।


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