Não é possível executar arquivos compilados - bash: ./a.out: Permissão negada. (Eu tentei chmod)

0

Em primeiro lugar, há muitas perguntas como essa na UA. Ainda assim, nenhum deles resolveu o meu problema.

Eu compilei minha fonte C usando cc test.c e ela gerou a.out file.

No entanto, quando eu executo, recebo este erro -

bash: ./a.out: Permission denied

Minha origem não está no diretório inicial, ela está em uma partição FAT-32 diferente, então montei a unidade na qual o código está usando o seguinte comando -

$ udisks --mount /dev/sda7 --mount-options umask=022
Mounted /org/freedesktop/UDisks/devices/sda7 at /media/48E9-FD53
$ cd /media/48E9-FD53/C

Depois eu compilo meu código usando cc

Eu também tentei gcc . Mas ainda recebo o mesmo erro.

Então eu fiz - chmod +x a.out , ainda o mesmo problema. Também com ( chmod 755 a.out ) e chmod u+x a.out .

Eu também tentei compilar e executar o programa usando sudo .

Eu também tentei - sudo chown sannidhya:sannidhya a.out .

Eu tentei tudo o que encontrei na AU, mas ainda não consegui fazê-lo funcionar.

Como posso executar o arquivo .out (sem movê-lo para o diretório pessoal)?

Nota - Estou usando o Ubuntu 12.04 LTS.

Mas uma coisa estranha aqui está, mesmo depois de executar chmod +x a.out , na execução - ls -l a.out , eu recebo -

-rw-r--r-- 1

também quando verifico as propriedades de a.out , na guia Permissões , existem apenas dois modos disponíveis Read only e Read and Write .

    
por ShuklaSannidhya 17.04.2013 / 17:51

1 resposta

1

Se você copiar o binário do sistema de arquivos FAT32 para o seu sistema de arquivos ext * nativo, o binário deve ser executado quando receber as permissões corretas (+ x).

É possível que um sistema de arquivos seja montado sem direitos de execução. Portanto, além do chmod, você também desejará verificar as opções de montagem dos seus sistemas de arquivos.

    
por Wing Tang Wong 17.04.2013 / 18:11