Come si esegue un file da un'unità USB FAT?

9

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

Il problema non è con il file - quando l'intera cartella viene copiata sul disco rigido locale, l'app funziona perfettamente in Ubuntu. Ma quando provo ad eseguirlo da 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 con altri eseguibili.

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

    
posta Derek Redfern 25.01.2011 - 01:22

8 risposte

7

In realtà ho trovato un'ottima soluzione al link 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 questo impedirà ai dischi di auto-montarsi 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
    
risposta data Derek Redfern 02.02.2011 - 05:09
19

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

Ora puoi imbrogliare:

  1. chiama sh etoys.sh invece di ./etoys.sh
  2. se vuoi, puoi anche creare un altro script (che si trova sul disco rigido, ad esempio) che chiama semplicemente il tuo script sull'unità USB:

    #!/bin/bash
    sh /media/USB/etoys.sh
    
risposta data user9521 25.01.2011 - 01:29
8

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

mode=value

Imposta la modalità di tutti i file sul valore & amp; 0777 che ignora le autorizzazioni originali. Aggiungi permessi di ricerca alle directory che hanno permesso di leggere. Il valore è dato in ottale.

    
risposta data Bonsi Scott 25.01.2011 - 06:20
2

In definitiva, sembra che il problema sia che udisks monta il filesystem con l'opzione showexec , impedendo che qualsiasi file che non finisce in .exe , .bat o .com venga eseguito.

Una domanda correlata (come fornire opzioni di montaggio personalizzate agli udisks) può essere trovata qui: Come configurare per registrare i dati in modo immediato su pendrive? Scoprire che è possibile utilizzare la configurazione di udev per farlo.

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

In ogni caso, io preferisco tendenzialmente applicare un patch a un file binario.

    
risposta data Virgile 15.02.2013 - 14:50
2

Nessuna delle soluzioni mostrate ha funzionato per quanto ho potuto capire per ottenere un programma che ho scritto come un programma terminale Linux da eseguire nella mia partizione FAT32, ma ho cambiato il nome del file per includere l'estensione .exe (grazie per il suggerimento), tutto ciò che ho fatto è stato rinominare filename in filename.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 to filename.exe e impostare le sue autorizzazioni e quindi il segno di spunta sarebbe bastone piuttosto che tornare a un segno meno, e quando ho impostato il percorso e inserito ./filename.exe al prompt del terminale il programma è eseguito come dovrebbe e mostra il comando linea che include filename.exe come inserito, sebbene la directory dei file di Ubuntu mostri il file come MSDOS / Windows che esegue come un programma Linux.

    
risposta data Dan Hudgins 04.07.2013 - 05:37
1

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

Utilizza gparted per formattare l'USB FAT32 e quindi noi Partition = & gt; Gestisci i flag per impostare i seguenti flag: boot, lba

    
risposta data MrSteve 07.08.2013 - 22:28
0

Puoi utilizzare la modalità umask=000 :

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

Fonte: wiki.linuxquestions.org , sezione "Opzioni di montaggio per il grasso" in mount(8) .

    
risposta data pevik 22.11.2016 - 22:47
-1

Se la sintassi è bash ...

bash yourscript
    
risposta data Sergio Abreu 25.07.2018 - 15:51

Leggi altre domande sui tag