Como eu executo um arquivo de uma unidade USB FAT?

9

Estou tentando instalar um aplicativo portátil no meu drive USB, de modo que ele seja compatível com o Ubuntu e o Windows (especificamente, um programa chamado eToys). O suporte já está embutido no aplicativo para os dois sistemas operacionais - há etoys.sh para o Ubuntu e etoys.exe para o Windows. Eu decidi instalar em uma unidade FAT desde que pode ser lido de ambos os sistemas. Isso funciona bem para o Windows, mas, por algum motivo, não consigo executar o etoys.sh no Ubuntu.

O problema não está no arquivo - quando a pasta inteira é copiada para o disco rígido local, o aplicativo funciona muito bem no Ubuntu. Mas quando eu tento executá-lo a partir do USB, ele abre o arquivo em um editor de texto.

Eu então tentei executá-lo a partir de um terminal, mas recebi a mensagem Permissão negada.

Eu tive o mesmo problema com outros executáveis também.

Existe uma maneira fácil de executar coisas a partir de um stick USB?

    
por Derek Redfern 25.01.2011 / 01:22

8 respostas

7

Na verdade, encontrei uma ótima solução no link que resolveu o problema.

Basicamente, diz para executar o comando

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

e isso evitará que os discos sejam montados automaticamente com a opção showexec.

Eu não gosto de responder minha própria pergunta, mas isso funcionou para mim e espero que ajude outras pessoas também.

para o Ubuntu 18.04:

sudo sed -i -e 's|showexec|\x00\x00\x00\x00\x00\x00\x00\x00|g' /usr/lib/udisks2/udisksd
    
por Derek Redfern 02.02.2011 / 05:09
19

Por causa das limitações do sistema de arquivos FA32, você não pode.

Agora, você pode trapacear:

  1. ou ligue para sh etoys.sh em vez de ./etoys.sh
  2. se você quiser, você pode até criar outro script (que estaria no seu disco rígido, por exemplo) que simplesmente chama seu script na unidade USB:

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

Montar o dispositivo com -o mode=<value> deve funcionar

mode=value

Defina o modo de todos os arquivos para valorizar & amp; 0777 desconsiderando as permissões originais. Adicione permissão de pesquisa a diretórios que tenham permissão de leitura. O valor é dado em octal.

    
por Bonsi Scott 25.01.2011 / 06:20
2

Por fim, o problema parece ser que udisks monta o sistema de arquivos com a opção showexec , impedindo que qualquer arquivo que não termine em .exe , .bat ou .com seja executado. / p>

Uma questão relacionada (como dar opções de montagem personalizadas para os udisks) pode ser encontrada aqui: Como configurar para gravar dados no pendrive instantaneamente? Acontece que você pode usar a configuração udev para fazer isso.

Está definindo opções de montagem padrão para udisks realmente não possível? propõe outra solução baseada em udisks-glue , mas parece menos convincente, pois em última análise depende de udisks , de modo que parece que você pode adicionar opções, mas não removê-las, e em particular showexec Ainda está lá).

De qualquer forma, tenho a tendência de preferir isso ao remendar um arquivo binário.

    
por Virgile 15.02.2013 / 14:50
2

Nenhuma das soluções mostradas funcionou tanto quanto eu poderia dizer para obter um programa que escrevi como um programa terminal Linux para rodar na minha partição FAT32, mas mudar o nome do arquivo do programa para incluir a extensão .exe funcionou (obrigado por a dica), tudo que fiz foi renomear filename to filename.exe para o programa de terminal que eu estava tentando executar em uma partição FAT32, e então desmontá-lo, montá-lo novamente e definir as permissões de disco para permitir a execução, depois ir para filename.exe e definir suas permissões e, em seguida, a marca de seleção iria ficar em vez de voltar para um menos, e quando eu definir o caminho e digitou ./filename.exe no prompt do terminal, o programa funcionou como deveria e mostra o comando linha incluindo filename.exe como digitada, embora o diretório de arquivos do Ubuntu mostre o arquivo como MSDOS / Windows ele é executado como um programa Linux.

    
por Dan Hudgins 04.07.2013 / 05:37
1

Então eu encontrei uma solução muito mais simples (e mais segura).

Use o gparted para formatar o USB FAT32 e depois nós Partition = > Manage Flags para definir os seguintes flags: boot, lba

    
por MrSteve 07.08.2013 / 22:28
0

Você pode usar o modo umask=000 :

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

Fonte: wiki.linuxquestions.org , seção "Opções de montagem para gordura" em mount(8) .

    
por pevik 22.11.2016 / 22:47
-1

Se a sintaxe é bash ...

bash yourscript
    
por Sergio Abreu 25.07.2018 / 15:51