Як виконати файл із USB-накопичувача FAT?


12

Я намагаюся встановити портативний додаток на свій USB-накопичувач таким чином, щоб він був сумісний як з Ubuntu, так і з Windows (зокрема, з програмою під назвою eToys). Підтримка вже вбудована в додаток для обох операційних систем - є etoys.shдля Ubuntu та etoys.exeдля Windows. Я вирішив встановити на привід FAT, оскільки це можна прочитати з обох систем. Це добре працює для Windows, але я чомусь не можу виконати etoys.sh на Ubuntu.

Проблема не у файлі - коли вся папка скопійована на локальний жорсткий диск, додаток чудово працює в Ubuntu. Але коли я намагаюся виконати його з USB, він відкриває файл у текстовому редакторі.

Потім я спробував запустити його з терміналу, але мені надійшло повідомлення " Дозвіл відхилено".

У мене була така ж проблема і з іншими виконуваними файлами.

Чи є простий спосіб виконати речі з USB-накопичувача?


2
Пов'язані питання тут: askubuntu.com/questions/23108 / ...
Лурі

Відповіді:


20

Через обмеження файлової системи FA32 ви не можете.

Тепер ви можете обдурити:

  1. або зателефонувати sh etoys.shзамість./etoys.sh
  2. якщо ви хочете, ви можете навіть створити інший сценарій (наприклад, лежачи на вашому жорсткому диску), який просто викликає ваш сценарій на USB-накопичувачі:

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

Велике спасибі! Другий чіт, безумовно, варіант, і я пам’ятаю про це. Крім того, чи є інша файлова система, яку я міг би використовувати, яка б працювала як з Windows, так і з Ubuntu і дозволила мені виконувати файли?
Дерек Редферн

Ви можете використовувати ext2 або ext3, але вам потрібно встановити невелику утиліту для Windows, щоб вона працювала.

Ще одне питання з цього приводу - я вирішив піти з можливістю створення сценарію на жорсткому диску, і він чудово працює. Але я також хочу мати сценарії для програм, які не є .sh файлами - наприклад, Portable Chromium, який має тип "виконуваний файл (додаток / х-виконуваний)". Використання sh не працює, а ./Chromium все одно дає дозвіл відмовлено. Чи є для цього інша команда?
Дерек Редферн

Humm, я думаю, ти можеш просто обдурити: перед виконанням хрому, ти можеш chmod це зробити його виконаним. Оскільки команду chmod буде викликати щоразу, це вже не має значення, що дозволи не виконуватимуться наступного разу, коли ви вставите USB-накопичувач

Я думав, що ти взагалі не можеш chmod на FAT, оскільки він не підтримує дозволи Unix.
Дерек Редферн

8

Монтаж пристрою за допомогою -o mode=<value>повинен працювати

mode=value

Встановіть у режимі всіх файлів значення та 0777зневага до оригінальних дозволів. Додайте дозвіл на пошук до каталогів, які мають дозвіл на читання. Значення наводиться у вісімці.


1
Я повинен встановити це у fstab?
Дерек Редферн

@Bonsi Scott Немає mode=можливості для vfat, див. Mount (8) .
pevik

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

і це запобіжить автоматичне встановлення дисків за допомогою опції showexec.

Я не люблю відповідати на власне запитання, але це спрацювало на мене, і я сподіваюся, що це допомагає і іншим людям.

для 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для запуску.

Пов’язане запитання (як надати користувацькі параметри монтування удискам) можна знайти тут: Як налаштувати запис даних, щоб миттєво мандрувати? Виявляється, ви можете використовувати udevконфігурацію для цього.

Чи дійсно неможливо встановити параметри кріплення за замовчуванням для удиски? пропонує ще одне рішення, засноване на udisks-glue, але воно здається менш переконливим, оскільки воно в кінцевому підсумку покладається на udisksтак, що, здається, ви можете додавати варіанти, але не видаляти їх, а зокрема showexec, все ще є).

У будь-якому випадку я, як правило, віддаю перевагу цьому виправленню бінарного файлу.


2

Жодне із показаних рішень не працювало настільки, наскільки я міг сказати, щоб отримати програму, яку я написав як термінальну програму Linux для запуску в моєму розділі FAT32, але зміна назви файлу програми на включення .exe розширення спрацювало (дякую за пораду) , все, що я зробив, було перейменувати ім’я файлу на filename.exe для термінальної програми, яку я намагався виконати на розділі FAT32, а потім зняти його, встановити наново та встановити дозволи на диск, щоб дозволити виконання, а потім перейти до імені файлу. exe і встановити його дозволи, і тоді галочка буде триматися, а не повертатися до мінуса, і коли я встановив шлях і ввів ./filename.exe в термінальному рядку, програма запустилася як слід і показує командний рядок, включаючи ім'я файлу .exe як введено, хоча каталог файлів Ubuntu відображає файл як MSDOS / Windows, він запускається як програма Linux.


1

Тому я знайшов набагато простіше (і безпечніше рішення).

Використовуйте gparted для форматування USB FAT32, а потім нам Partition => Manage Flags, щоб встановити наступні прапори: boot, lba



Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.