Jak wykonać plik z napędu FAT USB?

12

Próbuję zainstalować aplikację przenośną na moim dysku USB, tak aby był zgodny zarówno z Ubuntu, jak i Windows (konkretnie programem o nazwie eToys). Obsługa jest już wbudowana w aplikację dla obu systemów operacyjnych - jest dostępna etoys.shdla Ubuntu i etoys.exeWindows. Zdecydowałem się zainstalować na dysku FAT, ponieważ można go odczytać z obu systemów. Działa to dobrze w systemie Windows, ale z jakiegoś powodu nie mogę uruchomić etoys.sh na Ubuntu.

Problem nie dotyczy pliku - gdy cały folder jest kopiowany na lokalny dysk twardy, aplikacja działa świetnie w Ubuntu. Ale kiedy próbuję uruchomić go z USB, otwiera plik w edytorze tekstu.

Następnie próbowałem uruchomić go z terminala, ale dostałem komunikat Odmowa dostępu.

Miałem ten sam problem z innymi plikami wykonywalnymi.

Czy istnieje prosty sposób na wykonanie czynności z pamięci USB?

Derek Redfern
źródło
2
Podobne pytanie tutaj: askubuntu.com/questions/23108/...
Luri

Odpowiedzi:

20

Z powodu ograniczeń systemu plików FA32 nie można tego zrobić.

Teraz możesz oszukiwać:

  1. albo zadzwoń sh etoys.shzamiast./etoys.sh
  2. jeśli chcesz, możesz nawet utworzyć inny skrypt (na przykład na dysku twardym), który po prostu wywołuje skrypt na dysku USB:

    #!/bin/bash
    sh /media/USB/etoys.sh
    
Stefano Palazzo
źródło
Dzięki wielkie! Drugi kod jest z pewnością opcją i będę o tym pamiętać. Alternatywnie, czy istnieje inny system plików, który mógłbym użyć, który działałby zarówno w systemie Windows, jak i Ubuntu i pozwalał mi wykonywać pliki?
Derek Redfern,
Możesz użyć ext2 lub ext3, ale musisz zainstalować małe narzędzie w systemie Windows, aby działało.
Jeszcze jedno pytanie - zdecydowałem się na opcję utworzenia skryptu na dysku twardym i działa świetnie. Ale chcę też mieć skrypty dla programów, które nie są plikami .sh - na przykład Portable Chromium, który jest typu „wykonywalny (application / x-executable)”. Używanie sh nie działa, a ./Chromium nadal daje odmowę dostępu. Czy można do tego użyć innego polecenia?
Derek Redfern
Humm, myślę, że możesz po prostu oszukiwać: przed wykonaniem chromu możesz go chmod, aby był wykonywalny. Ponieważ komenda chmod będzie wywoływana za każdym razem, nie ma już znaczenia, że ​​uprawnienia nie zostaną przeniesione przy następnym włożeniu dysku USB
Myślałem, że w ogóle nie możesz chmod na FAT, ponieważ nie obsługuje on uprawnień Unix.
Derek Redfern
8

Montaż urządzenia -o mode=<value>powinien działać

mode=value

Ustaw tryb wszystkich plików na wartość i 0777ignorowanie oryginalnych uprawnień. Dodaj uprawnienia do wyszukiwania do katalogów, które mają uprawnienia do odczytu. Wartość podana jest ósemkowo.

Bonsi Scott
źródło
1
Czy powinienem ustawić to w fstab?
Derek Redfern
@Bonsi Scott Nie ma mode=opcji dla vfat, patrz mount (8) .
pevik
6

Znalazłem świetne rozwiązanie na http://ubuntuforums.org/showthread.php?t=1665289, które rozwiązało problem.

Zasadniczo mówi o uruchomieniu polecenia

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

i zapobiegnie to automatycznemu montowaniu dysków za pomocą opcji showexec.

Nie lubię odpowiadać na własne pytanie, ale to zadziałało dla mnie i mam nadzieję, że pomoże to także innym ludziom.

dla Ubuntu 18.04:

sudo sed -i -e 's|showexec|\x00\x00\x00\x00\x00\x00\x00\x00|g' /usr/lib/udisks2/udisksd
Derek Redfern
źródło
3

Ostatecznie, sprawa wydaje się, że udisksmontuje system plików z showexecopcją zapobiegania dowolny plik, który nie kończy się .exe, .batczy .comdo uruchomienia.

Powiązane pytanie (jak nadać niestandardowym opcjom montowania udisk) można znaleźć tutaj: Jak skonfigurować rejestrowanie danych w celu natychmiastowego pendrive? Okazuje się, że można udevdo tego użyć konfiguracji.

Czy ustawienie domyślnych opcji montowania udisk jest naprawdę niemożliwe? proponuje inne rozwiązanie oparte na udisks-glue, ale wydaje się mniej przekonujące, ponieważ ostatecznie się na nim opiera udisks, tak więc wydaje się, że można dodawać opcje, ale ich nie usuwać, a w szczególności showexecnadal istnieje).

W każdym razie wolę to niż łatanie pliku binarnego.

Virgile
źródło
2

Żadne z przedstawionych rozwiązań nie działało, o ile mogłem powiedzieć, aby uzyskać program napisany jako program terminalowy Linux do uruchomienia na mojej partycji FAT32, ale zmiana nazwy pliku programu na rozszerzenie .exe zadziałała (dziękuję za podpowiedź) , wszystko, co zrobiłem, to zmienić nazwę pliku na filename.exe dla programu terminalowego, który próbowałem uruchomić na partycji FAT32, a następnie odinstalować, ponownie zamontować i ustawić uprawnienia dysku, aby umożliwić wykonanie, a następnie przejść do nazwy pliku. exe i ustawić swoje uprawnienia, a następnie znacznik wyboru będzie się trzymać zamiast wracać do minusa, a kiedy ustawię ścieżkę i wprowadzę ./filename.exe w wierszu polecenia, program uruchomił się tak, jak powinien i pokazuje wiersz poleceń wraz z nazwą pliku .exe jak wprowadzono, chociaż katalog plików Ubuntu pokazuje plik jako MSDOS / Windows, ale działa jako program Linux.

Dan Hudgins
źródło
1

Znalazłem więc znacznie prostsze (i bezpieczniejsze rozwiązanie).

Użyj gparted, aby sformatować USB FAT32, a następnie nas Partition => Manage Flags, aby ustawić następujące flagi: boot, lba

MrSteve
źródło
0

Możesz użyć umask=000trybu:

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

Źródło: wiki.linuxquestions.org , sekcja „Opcje montowania dla tłuszczu” w mount (8) .

pevik
źródło
-1

Jeśli składnia to bash ...

bash yourscript
Sergio Abreu
źródło