¿Qué hace el permiso de "ejecución"?

31

Me sorprende que todavía no entiendo el permiso "Ejecutar" en Linux.

Hay tres permisos: leer, escribir y ejecutar. Entiendo que leer y escribir literalmente, pero ¿qué hace exactamente ejecutar?

Digamos que tengo example.phppermiso de ejecución. ¿Con qué puedo hacer example.php?

usuario45326
fuente

Respuestas:

32

Básicamente significa que puede decirle al sistema operativo que ejecute el código en el archivo. Por ejemplo, si el archivo era un ejecutable binario, el acceso de escritura le permitiría modificarlo, el acceso de lectura le permitiría verlo, pero sin permisos de ejecución no podría ejecutar el programa. En el caso de un script, es un poco más complicado, ya que no necesariamente necesita 'ejecutar' el programa, simplemente puede leer su contenido en un intérprete, que tiene el privilegio de ejecución, pero no necesita ejecutar permisos en el script en sí.

Algunos scripts en Linux son ejecutables, a menudo verá una línea en la parte superior como

#! / bin / bash o

#! / bin / python

Esa línea le dice al núcleo que el archivo puede ejecutarse llamando al programa relevante (y no es solo texto). Entonces puedes ejecutar tu script como

./guión

en lugar de tener que hacer

python ./script

bdk
fuente
¿Qué significa esto para los tipos de archivo no basados ​​en texto, por ejemplo. .pngo .avi?
iono
1
Básicamente lo mismo, la extensión del archivo no importa. Si tiene #!/bin/bashal principio de su .aviarchivo, se ejecutará como bash. Si es un formato avi real, probablemente no podrá ejecutarlo porque interpretarlo como comandos no tendrá sentido y fallará.
Mifeet
¿Es el #!realmente interpretado por el núcleo?
masterxilo
17

"execute" permite al usuario ejecutar ejecutables. Para los directorios, es permitido ingresar al directorio utilizando el comando cd.

Phil Rykoff
fuente
1
Ese acceso a la parte del directorio es enorme. Nunca lo adivinarías solo por el nombre del modo en sí.
oldboy
2

Para fines prácticos, el permiso de lectura implica la capacidad de ejecutar.

Sin embargo, lo contrario no es cierto; hay algún valor en la capacidad de dar permiso para ejecutar código sin dar permiso para leerlo.

Adam Lee
fuente
Esto realmente tiene mucho sentido.
masterxilo
Tuve una confusión con READ / EXECUTE, y esperaba tal respuesta. gracias
T.Todua
2

Es para ejecutar aplicaciones desde la GUI o la línea de comandos. Para el uso de php "normal" (a través del servidor web), eso no cambia nada. Hablando con precisión, depende de la configuración, pero en la mayoría de los casos comunes no necesita el permiso + x para permitir cargar su página web php a través del navegador.

Para correr desde la línea de comandos necesitas:

  • agregar #!/usr/bin/phpal comienzo del script
  • agregar permiso + x
  • su script debe estar en su ruta de búsqueda ejecutable (variable de entorno $ PATH) o debe especificar el directorio en el que se encuentra antes del nombre de su script. Esto podría ser un nombre de ruta absoluto, como /etc/xdg/fooo /home/fred/bar, o un directorio relativo, como dir1/prog1o ./prog2.
Maciek Sawicki
fuente