Instalé Debian en VirtualBox (para varios experimentos que generalmente dañaban mi sistema) e intenté iniciar el script de complemento invitado de VirtualBox. Me conecté como root e intenté iniciarlo autorun.sh
, pero recibí el «Permiso denegado». ls -l
muestra que el script tiene derechos ejecutables.
Lo sentimos, no puedo copiar la salida: VirtualBox no tiene ningún uso sin el complemento, ya que ni un directorio compartido ni un portapapeles compartido funcionan. Pero solo para que esté seguro, copié los derechos a mano:
#ls -l ./autorun.sh
-r-xr-xr-x 1 root root 6966 Mar 26 13:56 ./autorun.sh
Al principio pensé que puede ser que el script ejecute algo que dio el error. Traté de reemplazarlo /bin/sh
con algo como #/pathtorealsh/sh -xv
, pero no obtuve salida, parece que el script ni siquiera se puede ejecutar.
Ni siquiera tengo una idea de qué podría causarlo.
fuente
mount | grep noexec
?noexec
set. Probablemente puedas publicarlo como respuesta; Mientras tanto, estoy tratando de volver a montarlo con los derechos de un ejecutivo. Hm, ni siquiera sabía que el sistema de archivos podría tener ese atributo.sh ./autorun.sh
¿qué sucede?Respuestas:
Quizás su sistema de archivos esté montado con un
noexec
conjunto de opciones, por lo que no puede ejecutar ningún archivo ejecutable. De la documentación de montaje :Tratar:
Luego verifique si su sistema de archivos aparece en la salida.
En caso afirmativo, puede resolver este problema volviendo a montar el sistema de archivos con la
exec
opción:fuente
noexec
: "sh: 75: script.sh: Permiso denegado"bash -x ./filename.filetype
Deberia trabajar. Funcionó para mí cuando obtuve el permiso denegado como usuario root.fuente
noexec
opción de montaje, esto no funcionará, porque podría haber más archivos que deben ejecutarse; es decir, sefilename.filetype
quedaría sin aliento al intentar ejecutar otros archivos desde el mismo sistema de archivos. Puede verificarlo fácilmente con una prueba simplificada: cree un script de dos líneas que imprima "hola", luego simplemente se llame a sí mismo nuevamente, pero no establezca derechos ejecutables. Si lo ejecuta con-x
, imprimirá "hola", pero luego la línea de llamada recursiva provocará un error.Mi solución a este problema es usar la fuente . Estaba en un volumen de almacenamiento de datos muy importantes. Este volumen está montado como noexec. Tengo un script de shell simple que es ejecutable pero tengo un problema de permiso.
Solo probado en mi Ubuntu.
fuente