Cuando trato de correr ./script.shme sale Permission deniedpero cuando corro bash script.shtodo está bien.
¿Qué hice mal?
bash
shell-script
permissions
mount
Piotr Stapp
fuente
fuente

getfacl script.sh?Respuestas:
Permisos POSIX incorrectos
Significa que no tiene establecido el bit de permiso de ejecución
script.sh. Cuando se ejecutabash script.sh, solo necesita permiso de lecturascript.sh. Consulte ¿Cuál es la diferencia entre ejecutar "bash script.sh" y "./script.sh"? para más información.Puede verificar esto ejecutando
ls -l script.sh.Es posible que ni siquiera necesite comenzar un nuevo proceso de Bash. En muchos casos, simplemente puede ejecutar
source script.sho. script.shejecutar los comandos de script en su shell interactivo actual. Probablemente desee iniciar un nuevo proceso Bash si el script cambia el directorio actual o modifica el entorno del proceso actual.Listas de control de acceso
Si los bits de permiso POSIX están configurados correctamente, la Lista de control de acceso (ACL) puede haberse configurado para evitar que usted o su grupo ejecuten el archivo. Por ejemplo, los permisos POSIX indicarían que el script de shell de prueba es ejecutable.
Sin embargo, intentar ejecutar el archivo da como resultado:
El
getfaclcomando muestra la razón por la cual:En este caso, mi grupo principal es el
domain usersque ha revocado los permisos de ejecución al restringir la ACL consudo setfacl -m 'g:domain\040users:rw-' t.sh. Esta restricción puede ser levantada por cualquiera de los siguientes comandos:Ver:
Sistema de archivos montado con la opción noexec
Finalmente, la razón en este caso específico para no poder ejecutar el script es que el sistema de archivos en el que reside el script se montó con la
noexecopción. Esta opción anula los permisos POSIX para evitar que se ejecute cualquier archivo en ese sistema de archivos.Esto se puede verificar ejecutando
mountpara enumerar todos los sistemas de archivos montados; las opciones de montaje se enumeran entre paréntesis en la entrada correspondiente al sistema de archivos, p. ej.Puede mover el script a otro sistema de archivos montado o volver a montar el sistema de archivos permitiendo la ejecución:
Nota: He utilizado
/tmpcomo ejemplo aquí, ya que hay buenas razones de seguridad para mantenerse/tmpmontado con elnoexec,nodev,nosuidconjunto de opciones.fuente
Tratar
chmod 755 script.shesto hará que el archivo sea ejecutable. Entonces intenta,
./script.shEspero que esto funcione.
fuente
En mi win7 con admin ejecutando cmd; Tengo archivos .sh asociados con cygwin64 / bin / bash, pero fue bloqueado por cmd. Ninguna de las sugerencias anteriores ayudó (chmod, setfacl, mount).
La solución a continuación funcionó, es un administrador de acl-fixer martillo de administración cada vez que las carpetas / archivos se vuelven inaccesibles para el administrador en win7, que a menudo es):
fuente