Loading




Enviar respuesta 
 
Calificación:
  • 1 votos - 5 Media
  • 1
  • 2
  • 3
  • 4
  • 5
[guia] Ejecutables y Tipos de archivos en Linux
 
31-07-2008, 11:11 PM
Mensaje: #1
[guia] Ejecutables y Tipos de archivos en Linux
En este artículo, trataré de explicar brevemente cómo identificar los ejecutables en linux y cómo determinar a que tipo de archivo pertenece.

Es muy común que a quienes están migrando desde Windows les surja la duda de cómo identificar el archivo ejecutable de una aplicación.
Pues claro, en Windows la estructura de directorios y archivos es completamente diferente a nuestro mundo.

En Windows (XP) casi todos los programas se encuentran bajo una carpeta "Archivos de Programa", el sistema operativo está en su propia carpeta "Windows" y el almacenamiento se realiza en la unidad C:.

En Linux, la distribución del sistema operativo y las aplicaciones tiene una organización muy distinta. No existe la unidad ( c: ) como concepto.
Todo se desprende de un "árbol" de directorios cuya raíz, es justamente, root (/).

Entonces vemos que nos queda un árbol mas o menos así:
Código:
/              Raíz del sistema de archivos
/dev           Contiene ficheros del sistema que representan los dispositivos
/etc           Contiene archivos de configuración del sistema y los servicios
/home          Es la carpeta donde se almacenan los archivos de los usuarios
/lib           Tiene librerías
/mnt           Es una carpeta para montar otros recursos, como un cdrom por ejemplo
/proc          Tiene archivos que reciben o envían información al kernel del sistema
/usr           Aquí se encuentran los programas
/usr/bin       Programas de uso general
/usr/sbin      Programas de uso administrativo (solo los puede correr el usuario root)
/var           Carpeta que contiene entre otras cosas, archivos de log
/tmp           Carpeta de uso temporal (se borra al reiniciar)
Cuando vemos dónde se almacena un programa (por ejemplo firefox) vemos que lo hace en varios lugares diferentes:
Código:
$ find / -name firefox*
/usr/share/pixmaps/firefox.png
/usr/share/man/man1/firefox.1.gz
/usr/bin/firefox
/usr/lib/firefox-3.0.1
~/.mozilla/firefox
El primero es el ícono, el segundo la documentación, el tercero es el programa en si (ya que está dentro de /usr/bin), el cuarto es la carpeta de las librerías que usa firefox y el último es una carpeta de preferencias de mi usuario (nótese que el símbolo ~ representa mi carpeta: /home/mi-usuario)

¿Pero cómo reconocemos un programa o un archivo ejecutable?

En linux, casi cualquier archivo puede ser ejecutable.
Hagamos una pequeña prueba. Abramos una terminal y corramos el siguiente comando:
Código:
$ ls -la /usr/bin/fil*
-rwxr-xr-x 1 root root  15036 mar 11 05:57 /usr/bin/file
-rwxr-xr-x 1 root root 380324 jul  1 15:32 /usr/bin/file-roller
Sabemos que son programas porque se encuentran en la carpeta /usr/bin, pero también porque vemos los atributos de los archivos "rwxr-xr-x"
r = read (lectura)
w = write (escritura)
x = execute (ejecución)

Recomiendo que lean esta guía escrita por Hermes sobre los permisos de archivos.

¿Pero que clase de archivo ejecutable es?

Digo clase, porque un ejecutable puede ser de tipo ELF o script.
Para saber que tipo de archivo es existe el comando "file"

Código:
$ file /usr/bin/file
/usr/bin/file: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.9, stripped
Vemos que el mismo comando file se reconoce a si mismo como un ejecutable tipo ELF de 32-bit

Otros ejemplos:
Código:
$ file Google_Earth_CZXD.bin
Google_Earth_CZXD.bin: Bourne shell script text executable

$ file vbox-usb.sh
vbox-usb.sh: Bourne-Again shell script text executable

$ file freesshdt.pl
freesshdt.pl: perl script text executable

$ file animation.rb
animation.rb: ASCII English text, with CRLF line terminators

$ file MobileMediaConverter
MobileMediaConverter: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.2.5, stripped

$ file bookmarks.html
bookmarks.html: exported SGML document text

$ file bookmarks.html.tar.gz
bookmarks.html.tar.gz: gzip compressed data, was ".fr.4988.0.bookmarks.html.tar", from Unix, last modified: Thu Jan  3 00:48:18 2008

$ file GTAINSTALLER.exe
GTAINSTALLER.exe: PE32 executable for MS Windows (GUI) Intel 80386 32-bit
De todos estos ejemplos el único "intruso" es GTAINSTALLER.exe ya que es nativo de windows.

Nota acerca de los scripts

Los Bourne-Again Shell (bash), Shell (sh) y Perl scripts (pl) tienen un encabezado que le indica al comando file que tipo de archivo es.
Si visualizaramos el contenido de un script seguramente nos encontraríamos con una primera línea como esta:
#!/bin/bash

o si fuese perl, sería
#!/usr/bin/perl

Otro dato curioso.

El caso del instalador de Google Earth.
Si lo analizamos, es un archivo shell script, ya que el comando file así lo indica, pero si lo miramos por dentro veremos que es un shell script que tiene pegado un archivo tar. El mismo script se encarga de extraer el archivo tar, verificar la suma MD5 y ejecutar otro script llamado setup.sh.

Conclusión
Vimos que cualquier archivo puede ser ejecutable en linux.
Podemos encontrarnos con un shell script, un ejecutable ELF, la combinación de scripts y archivadores, etc.
Pero lo más importante es que siempre debe leerse primero el archivo README, ya sea un paquete tar.gz con código fuente o incluso el encabezado de los scripts, ya que hay muchos programadores que suelen comentar sus scripts con indicaciones e instrucciones de uso.

Diviertanse y tengan cuidado con lo que ejecutan!
Saludos

Reglas del Foro | : ? : | Doragonraidā
Visita su sitio web Encuentra todos sus mensajes
Cita este mensaje en tu respuesta
 
16-11-2009, 03:39 PM
Mensaje: #2
RE: [guia] Ejecutables y Tipos de archivos en Linux
we gracias x hacerme llegar esta info... la verdad vamos paso a pasito aprendiendo... ejecutando debian pa implementar jejeje 1-grin
Encuentra todos sus mensajes
Cita este mensaje en tu respuesta
 
03-01-2010, 11:36 AM
Mensaje: #3
RE: [guia] Ejecutables y Tipos de archivos en Linux
Una verdadera joyita para novatos y no tanto!!
Estaba necesitando tiempo para ponerme al día con el material del foro. Con esta guia me acerco más al armado del "rompecabezas", aunque todavía falta bastante...
Muchísimas gracias Drago!!

Me gustaría cambiar el mundo, pero no me dan el código fuente [img]http://s6.tinypic.com/2m2xm5t_th.jpg[/img]
Visita su sitio web Encuentra todos sus mensajes
Cita este mensaje en tu respuesta
Enviar respuesta 


Posibles temas similares...
Tema: Autor Respuestas: Vistas: Último mensaje
  [guia] LXC - Linux Containers dragonauta 2 3.327 17-04-2013 12:05 PM
Último mensaje: lg_max
myBB [guia] Tareas automatizadas con Cron Hermes 1 5.700 30-06-2010 05:11 PM
Último mensaje: martinezalberto
  [guía] Sistema de archivos de linux dragonauta 9 11.162 11-12-2009 04:55 PM
Último mensaje: dragonauta
myBB [guia] El comando DD Hermes 6 74.621 09-11-2009 02:01 PM
Último mensaje: negfre

Salto de foro:


Usuario(s) navegando en este tema: 1 invitado(s)
Contáctanos | Portal de Noticias | Volver arriba | Volver al contenido | Archivo (Modo simple) | Sindicación RSS