Estou executando o Ubuntu no computador 1 e no computador 2. Compilei um programa C ++ no computador 1 e posso executá-lo usando o terminal ./program_name
. Corre bem.
No entanto, quando tento fazer isso no computador 2, ele diz: bash: ./program_name: permission denied
O que há de errado e o que posso fazer sobre isso?
progam_name
?bash program_name
.sh
arquivo Ele se recusou a executar com esta mensagem de erro. Eu diria que esse tópico é definitivamente sobre o StackOverflow. Eu nomeei para reabrir.Respostas:
chmod u+x program_name
. Então execute.Se isso não funcionar, copie o programa do dispositivo USB para um volume nativo no sistema. Em seguida,
chmod u+x program_name
na cópia local e execute isso.Os sistemas Unix e similares ao Unix geralmente não executam um programa, a menos que esteja marcado com permissão para execução. A maneira como você copiou o arquivo de um sistema para outro (ou montou um volume externo) pode ter desativado a permissão de execução (como um recurso de segurança). O comando
chmod u+x name
adiciona permissão para o usuário que possui o arquivo para executá-lo.Esse comando altera apenas as permissões associadas ao arquivo; ele não altera os controles de segurança associados a todo o volume. Se forem controles de segurança no volume que estão interferindo na execução (por exemplo, uma
noexec
opção pode ser especificada para um volume nofstab
arquivo Unix , que diz para não permitir permissão de execução para arquivos no volume), você poderá remontar o volume com opções para permitir a execução. No entanto, copiar o arquivo para um volume local pode ser uma solução mais rápida e fácil.fonte
/tmp
. Acontece que meus tmpfs/tmp
sofrem o mesmo problema, e eu tenho que copiar o arquivo executável em um volume nativo real, ou seja, minha pasta pessoal ~ em uma partição ext4.chmod
faz uma alteração durável. Se as permissões mudarem após o usochmod
para habilitá-las, outra coisa será alterada. (Isso pode incluir outra coisa para excluir e recriar o arquivo ou o volume em que o arquivo está sendo desmontado e remontado. Se o volume estiver sendo remontado, existem maneiras de especificar permissões padrão para arquivos em volumes externos, mas isso está além do escopo Eu posso responder agora).Tente o seguinte:
fonte
sudo
Geralmente não é necessário, a menos que o programa está em um diretório onde você não tem permissão de escrita (caso em que, como é que você instalá-lo lá em primeiro lugar?)Parece que você não tem o sinalizador de execução definido nas permissões de arquivo, tente:
fonte