Rodando o script sh: «Permissão negada» apesar do bit executável e direitos de root

16

Eu instalei o Debian em VirtualBox (para várias experiências que usualmente quebraram meu sistema) e tentei iniciar o addon do VirtualBox guest roteiro. Eu entrei como root e tentei lançar autorun.sh , mas recebi «Permission denied». ls -l mostra que o script tem direitos executáveis.

Desculpe, não consigo copiar a saída - o VirtualBox absolutamente não tem uso sem o addon, já que nem um diretório compartilhado nem uma área de transferência compartilhada funciona. Mas só para você ter certeza copiei os direitos pelas mãos:

#ls -l ./autorun.sh
-r-xr-xr-x 1 root root 6966 Mar 26 13:56 ./autorun.sh

A princípio, achei que pode ser que o script execute algo que forneceu o erro. Eu tentei substituir /bin/sh por algo como #/pathtorealsh/sh -xv , mas não obtive nenhuma saída - parece que o script não pode ser executado.

Eu nem tenho ideia do que poderia causar isso.

    
por Hi-Angel 24.08.2014 / 07:51

3 respostas

24

Talvez o seu sistema de arquivos esteja montado com noexec conjunto de opções, para que você não possa executar nenhum arquivo executável. Da documentação mount :

noexec

Do not allow direct execution of any binaries on the mounted filesystem. (Until recently it was possible to run binaries anyway using a command like /lib/ld*.so /mnt/binary. This trick fails since Linux 2.4.25 / 2.6.0.)

Tente:

mount | grep noexec

Em seguida, verifique se o seu sistema de arquivos está listado na saída.

Se sim, você pode resolver este problema, re-montando o sistema de arquivos com a opção exec :

mount -o remount,exec filesystem
    
por 24.08.2014 / 08:20
2

bash -x ./filename.filetype deve funcionar. Funcionou para mim quando obtive permissão negada como usuário root.

    
por 05.04.2016 / 18:57
1

Minha solução para esse problema é usar source . 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 um problema de permissão.

./fixsamplesheet.sh # this guy is executable
-bash: ./fixsamplesheet.sh: Permission denied

source fixsamplesheet.sh # worked fine

Espero que isso ajude você. Apenas testado no meu Ubuntu.

    
por 20.04.2018 / 21:52