Instalei o Debian no VirtualBox (para vários experimentos que geralmente interrompiam meu sistema) e tentei iniciar o script de complemento de convidado do VirtualBox. Entrei como root e tentei iniciar autorun.sh
, mas recebi a «Permissão negada». ls -l
mostra que o script tem direitos executáveis.
Desculpe, mas não posso copiar a saída - o VirtualBox não tem absolutamente nenhum uso sem o complemento, pois nem um diretório compartilhado nem uma área de transferência compartilhada funcionam. Mas, para ter certeza, copiei os direitos manualmente:
#ls -l ./autorun.sh
-r-xr-xr-x 1 root root 6966 Mar 26 13:56 ./autorun.sh
A princípio, pensei que o script executasse algo que deu o erro. Tentei substituir /bin/sh
por algo como #/pathtorealsh/sh -xv
, mas não obtive saída - parece que o script nem pode ser executado.
Eu nem tenho uma idéia do que poderia causar isso.
fonte
mount | grep noexec
?noexec
conjunto. Provavelmente você pode publicá-lo como resposta; Enquanto isso, estou tentando remontar com direitos de execução. Humm, eu nem sabia que o sistema de arquivos poderia ter esse atributo.sh ./autorun.sh
que acontece?Respostas:
Talvez o seu sistema de arquivos esteja montado com o
noexec
conjunto de opções, para que você não possa executar nenhum arquivo executável. Na documentação da montagem :Experimentar:
Em seguida, verifique se o seu sistema de arquivos está listado na saída.
Se sim, você pode resolver esse problema, montando novamente o sistema de arquivos com a
exec
opção:fonte
noexec
: "sh: 75: script.sh: Permissão negada"bash -x ./filename.filetype
Deveria trabalhar. Funcionou para mim quando recebi permissão negada como usuário root.fonte
noexec
opção de montagem, isso não funcionará, porque pode haver mais arquivos que precisam ser executados; ou seja, ofilename.filetype
suspiro ao tentar executar outros arquivos do mesmo sistema de arquivos. Você pode verificá-lo facilmente com um teste simplificado: crie um script de duas linhas que imprima "olá" e depois se chame novamente, mas não defina direitos executáveis. Se você executá-lo com-x
, ele imprimiria "olá", mas a linha de chamada recursiva provocaria um erro.Minha solução para esse problema é usar a fonte . Eu estava em um volume de armazenamento de dados muito importantes. Este volume é montado como noexec. Eu tenho um script de shell simples que é executável, mas tenho problema de permissão.
Apenas testado no meu Ubuntu.
fonte