Come eseguo un file da un'unità USB FAT?


12

Sto cercando di installare un'app portatile sul mio drive USB in modo tale che sia compatibile con Ubuntu e Windows (in particolare, un programma chiamato eToys). Il supporto è già integrato nell'app per entrambi i sistemi operativi: c'è etoys.shper Ubuntu e etoys.exeper Windows. Ho deciso di installare su un disco FAT poiché può essere letto da entrambi i sistemi. Funziona bene con Windows, ma per qualche ragione non posso eseguire etoys.sh su Ubuntu.

Il problema non riguarda il file: quando l'intera cartella viene copiata sul disco rigido locale, l'app funziona perfettamente su Ubuntu. Ma quando provo a eseguirlo dall'USB, apre il file in un editor di testo.

Ho quindi provato a eseguirlo da un terminale, ma ho ricevuto il messaggio Autorizzazione negata.

Ho avuto lo stesso problema anche con altri eseguibili.

C'è un modo semplice per eseguire le cose da una chiavetta USB?


2
Domanda correlata qui: askubuntu.com/questions/23108/…
luri

Risposte:


20

A causa delle limitazioni del file system FA32, non è possibile.

Ora puoi imbrogliare:

  1. chiama sh etoys.shinvece di./etoys.sh
  2. se vuoi, puoi persino creare un altro script (che si troverebbe sul tuo disco rigido, ad esempio) che chiama semplicemente il tuo script sul disco USB:

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

Grazie mille! Il secondo trucco è certamente un'opzione, e lo terrò a mente. In alternativa, c'è un altro file system che potrei usare che funzionerebbe con Windows e Ubuntu e mi permettesse di eseguire i file?
Derek Redfern,

È possibile utilizzare ext2 o ext3, ma è necessario installare una piccola utility su Windows per farlo funzionare.

Un'altra domanda a riguardo: ho deciso di scegliere l'opzione di creare uno script sul disco rigido e funziona alla grande. Ma voglio anche avere script per programmi che non sono file .sh, ad esempio Portable Chromium, che è di tipo "eseguibile (application / x-eseguibile)". L'uso di sh non funziona e ./Chromium dà ancora il permesso negato. C'è un altro comando da usare per questo?
Derek Redfern,

Humm, immagino che potresti semplicemente imbrogliare: prima di eseguire il cromo, puoi modificarlo per renderlo eseguibile. Poiché il comando chmod verrà chiamato ogni volta, non importa più che le autorizzazioni non vengano eseguite al successivo inserimento dell'unità USB

Pensavo che non potessi essere affatto codificato su FAT, dato che non supporta le autorizzazioni Unix.
Derek Redfern,

8

Il montaggio del dispositivo con -o mode=<value>dovrebbe funzionare

mode=value

Impostare la modalità di tutti i file su valore e 0777ignorando le autorizzazioni originali. Aggiungi l'autorizzazione di ricerca alle directory che dispongono dell'autorizzazione di lettura. Il valore è indicato in ottale.


1
Devo impostare questo in fstab?
Derek Redfern,

@Bonsi Scott Non esiste alcuna mode=opzione per vfat, vedere mount (8) .
pevik,

6

In realtà ho trovato un'ottima soluzione su http://ubuntuforums.org/showthread.php?t=1665289 che ha risolto il problema.

Fondamentalmente, dice di eseguire il comando

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

e ciò impedirà il montaggio automatico dei dischi con l'opzione showexec.

Non mi piace rispondere alla mia domanda, ma questo ha funzionato per me e spero che aiuti anche altre persone.

per Ubuntu 18.04:

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

3

In definitiva, il problema sembra essere che udisksmonta il filesystem con l' showexecopzione, evitando qualsiasi tipo di file che non terminano in .exe, .bato .comper essere eseguito.

Una domanda correlata (come fornire opzioni di montaggio personalizzate agli udisk) può essere trovata qui: Come configurare per registrare i dati su pendrive all'istante? Si scopre che è possibile utilizzare la udevconfigurazione per farlo.

L'impostazione delle opzioni di montaggio predefinite per gli udisk non è davvero possibile? propone un'altra soluzione basata udisks-glue, ma sembra meno convincente, poiché alla fine si basa su udisks, in modo che sembra che tu possa aggiungere opzioni, ma non rimuoverle, e in particolare showexecè ancora lì).

In ogni caso, tendo a preferire questo a patchare un file binario.


2

Nessuna delle soluzioni mostrate ha funzionato per quanto potessi dire per ottenere un programma che ho scritto come un programma terminale Linux da eseguire nella mia partizione FAT32, ma la modifica del nome file del programma per includere l'estensione .exe ha funzionato (grazie per il suggerimento) , tutto quello che ho fatto è stato rinominare il nome del file in nomefile.exe per il programma terminale che stavo cercando di eseguire su una partizione FAT32, quindi disinstallarlo, rimontarlo e impostare le autorizzazioni del disco per consentire l'esecuzione, quindi andare al nome del file. exe e impostare i suoi permessi e quindi il segno di spunta si attaccherebbe anziché tornare a un segno meno, e quando imposto il percorso e ho inserito ./filename.exe al prompt del terminale il programma ha funzionato come dovrebbe e mostra la riga di comando incluso il nome del file .exe come inserito, sebbene la directory del file Ubuntu mostri il file come MSDOS / Windows, viene eseguito come programma Linux.


1

Quindi ho trovato una soluzione molto più semplice (e più sicura).

Usa gparted per formattare l'USB FAT32 e poi us Partition => Manage Flags per impostare i seguenti flag: boot, lba



Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.