Saltar al contenido

Archivos comunes ejecutables (*.pdf, etc.)

Mantén la atención porque en esta sección encontrarás el resultado que buscas.

Solución:

Esto es solo una cuestión de permisos. Si un archivo tiene permisos de ejecución, eso solo significa que los usuarios están permitió para ejecutarlo. Si tendrán éxito es otro asunto. Para que un archivo sea ejecutado, el usuario que lo ejecuta debe tener el derecho de hacerlo y el archivo debe ser un ejecutable válido. Los permisos mostrados por ls sólo afectan a la primera parte, permiso, y no tienen relación con el resto.

Por ejemplo:

$ cat file.csv
a,silly,file
$ chmod a+x file.csv
$ ls -l file.csv
-rwxr-xr-x 1 terdon terdon 13 May 29 15:22 file.csv

Este archivo ahora tiene permisos de ejecución (ver los 3 x en los permisos string -rwxr-xr-x). Pero si trato de ejecutarlo, obtendré un error:

$ ./file.csv 
./file.csv: line 1: a,silly,file: command not found

Esto se debe a que el shell está intentando ejecutar el archivo como un script de shell, y no hay comandos de shell válidos en él, por lo que falla.

El verde en tu ls mostrar significa que los archivos se han ejecutado permisoslo que no significa necesariamente que puedan ser ejecutado de cualquier manera.

Si configura accidentalmente el permiso de ejecución, o si se configuró debido a una importación desde un sistema de archivos sin soporte para el modelo básico de permisos de Linux, puede eliminar el bit de ejecución con

chmod a-x -- "$filename"

y ese archivo ya no se mostrará como “ejecutable”.


Tenga en cuenta que otros colores en la lista de archivos mayo establecerse en función de la extensión del archivo; pero en este caso es probable que solo sean los bits de permiso.

La respuesta aceptada perpetúa los mitos y una mala comprensión de cómo ocurre la “ejecución” de un archivo en Unix.

./cmd en el shell hace más que simplemente intentar ejecutar ./cmd: si se ejecuta ./cmd falla con ENOEXEC (como lo hace con cualquier archivo ejecutable que no sea válido binario o no comienza con un el asuntoincluido un script de shell válido), entonces el shell una. leer e interpretar por sí mismo el archivo como un script de shell o b. ejecutar /bin/sh u otra concha y pásala ./cmd como su primer argumento.

El mecanismo Shebang (#! /path/to/interpreter), aunque implementado por la mayoría de los sistemas Unix, no es estándar. Además, muchos sistemas como Linux también pueden “ejecutar” archivos comenzando con otras secuencias “mágicas” (o incluso en función de su extensión de archivo, similar a MSDOS).

Por ejemplo, puede tener archivos pdf “ejecutables” en Linux a través de binfmt_misc:

$ chmod +x 2503.pdf
$ ./2503.pdf
./2503.pdf: line 1: fg: no job control
./2503.pdf: line 1051: warning: here-document at line 2 delimited by end-of-file (wanted `/Linearized')
[... a lot of crazy errors in the same vein ...]

$ su -c 'echo :pdf-zathura:M::%PDF-1.::/usr/bin/zathura: > /proc/sys/fs/binfmt_misc/register'
$ ./2503.pdf
[start zathura and display the pdf file]

valoraciones y comentarios

Si te ha sido de provecho este post, sería de mucha ayuda si lo compartieras con otros seniors de esta forma nos ayudas a extender este contenido.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *