Linux para administradores de sistemas Windows: Entender como ejecutar aplicaciones que se funcionan en Linux

Ejecutar aplicaciones de Linux desde la línea de comando y el escritorio

El uso de aplicaciones es el propósito principal de un servidor® Linux. Ya sea que su aplicación recientemente instalada se ejecute desde el escritorio o desde la línea de comando, este artículo explica cómo usar su experiencia con Microsoft® Windows® para conocer rápidamente la forma de ejecutar aplicaciones en Linux.

Tracy Bost, Consultant and Trainer, Freelance

Author photo - Tracy BostTracy Bost es ingeniero de sistemas y un avezado desarrollador de software. Además, brinda conferencias y capacitaciones sobre el sistema operativo Linux. Tracy cuenta con una certificación RHCE (Red Hat Certified Engineer) y una certificación MCSE (Microsoft Certified Systems Engineer), también es un miembro activo de Linux Foundation. Ha trabajado en muchas industrias, entre las que se incluyen los sectores de hipotecas, bienes raíces y organizaciones sin fines de lucro.



25-06-2012

Prerrequisitos

Para aprovechar al máximo este artículo, debe contar con experiencia en el trabajo con aplicaciones de escritorio en un entorno de Windows. Presumo que los lectores tienen un conocimiento básico de cómo usar el escritorio de Linux. Es recomendable trabajar en equipo con sistema Linux, para explorar los conceptos y los ejemplos que se mencionan en este artículo.


Visión general

Otros artículos en esta serie

Ver más artículos en la serie Linux para administradores de sistemas Windows.

A veces, ejecutar una aplicación en Linux por primera vez requiere de un pequeño esfuerzo extra. Es posible que algunas aplicaciones, como los servicios de servidores, no se instalen como servicios; por lo tanto, es necesario iniciarlas desde la línea de comando. En las cuentas de usuario que inician las aplicaciones, habilite la opción de permisos de ejecución (x) en los archivos de aplicación.


Ejecución de aplicaciones en el espacio del usuario

Linux ejecuta los procesos en el espacio kernel o el espacio del usuario. El espacio del usuario es el área del sistema operativo donde generalmente se ejecutan las aplicaciones. Para describirlo de manera simple, cada cuenta de usuario tiene su propio espacio de usuario y las aplicaciones trabajan dentro de ese territorio.

De manera predeterminada, solo el usuario raíz tiene acceso al espacio kernel. El usuario raíz es el superusuario en Linux, similar a la cuenta de administrador en Windows. Si ejecuta una aplicación en la cuenta del usuario raíz se puede generar un riesgo de seguridad, algo que no es recomendable.

Muchos servicios de servidores no necesitan permisos como usuario raíz para iniciarse. Sin embargo, una vez que se inició, el usuario raíz generalmente lo cede a una cuenta de servicio. Las cuentas de servicio en Linux son técnicamente las cuentas de usuario estándar. La principal diferencia radica en el hecho de que las cuentas de servicios solo se usan para ejecutarlos, no están diseñadas para que una persona intente realmente iniciar sesión con ellas.


Configuración de los permisos

Puede configurar los permisos de ejecución de un archivo con el comando chmod . La configuración umask de Linux evita generalmente que se ejecute un archivo descargado; esta acción tiene sus razones, ya que ayuda a mantener la seguridad de su equipo Linux.

En la mayoría de las distribuciones Linux, la configuración umask es 022, lo que significa que, de manera predeterminada, un archivo nuevo tiene la configuración de permiso 644. La representación numérica de los permisos es la siguiente: lectura (4), escritura (2) y ejecución (1). De esta manera, la descarga de una aplicación con el permiso predeterminado 644 significa que el propietario del archivo tiene permiso de lectura y de escritura, mientras que el propietario del grupo y demás usuarios tienen permiso de solo lectura.

Por ejemplo, para proporcionar el permiso de ejecución de un archivo a todos, use el comando chmod a+x . a representa todos, el signo más (+) representa agregar y x significa ejecutar. De manera similar, si la aplicación es un servicio de servidor, debe asegurarse de que solo las cuentas autorizadas tienen acceso para ejecutar el servicio.

Si una aplicación es capaz de ejecutarse con los permisos de una cuenta de usuario estándar, pero solo los usuarios de un grupo específico necesitan usarla, puede establecer el permiso de propietario del grupo como ejecutable y agregar los usuarios a un grupo.

Incluso es posible ser más específico: puede además configurar permisos en la lista de control de acceso (ACL) para un archivo ejecutable, de esta manera le proporciona a un grupo o usuario específico el permiso para ejecutar la aplicación. Use la utilidad setfacl para establecer los permisos en la ACL.

Para aquellas aplicaciones, como los servicios de servidores, que necesitan iniciar el proceso como un usuario raíz, las opciones se reducen. Tabla 1 muestra las diferentes opciones para permitir a los usuarios ejecutar servicios de servidores que requieren privilegios de usuario raíz.

Tabla 1. Opciones para ejecutar las aplicaciones que requieren privilegios de usuario raíz
OpciónDescripción
Como usuario raízNo se recomienda para los servicios de servidores. Apto para aplicaciones cuando los usuarios conocen la contraseña raíz y la seguridad de la aplicación no es una prioridad principal.
SetUIDNo se recomienda debido a problemas de seguridad. SetUID permite que el usuario estándar ejecute un archivo como otro usuario, por ejemplo, el usuario raíz.
sudoDe uso común, se considera una práctica recomendada. sudo concede al usuario o al miembro de un grupo el permiso para ejecutar un archivo que de otra manera requeriría privilegios de usuario raíz. No es necesario que el usuario conozca la contraseña raíz.
Cuenta de usuario estándar con permisos de archivoEstablece el permiso de ejecución en un archivo para el propietario de la cuenta de usuario, el propietario del grupo u otro (todos). Esta es una forma común de conceder el permiso para ejecutar una aplicación a los usuarios que no requieren privilegios de usuario raíz.
Cuenta de usuario estándar con permisos en la ACLSi bien no es una opción muy común, es aceptable cuando no desea conceder a un usuario el acceso sudo acceso ni cambiar los permisos de un archivo. Si usa el comando setfacl en un archivo, puede conceder el derecho de ejecutarlo a un usuario o un grupo de usuarios específico.

Ejecución desde la línea de comando

La ejecución de una aplicación desde la línea de comando es una tarea esencial cuando administra servidores Linux. Muchas aplicaciones tienen scripts de shell—similares a los archivos por lotes (.bat) de Windows—que inician las aplicaciones y realizan otras tareas como establecer variables y asignar procesos a otros usuarios. Por ejemplo, es posible que una aplicación necesite una máquina virtual java™ (JVM) para ejecutarse. En ese caso, los scripts de shell pueden establecer las variables de entorno correspondientes y luego ejecutar el comando Java para ejecutar el archivo Java (JAR) o el archivo de clase. Esto también es válido para aplicaciones que usan Perl, Python, e incluso C#. (Sí, las aplicaciones compiladas en C# pueden ejecutarse en Linux).

Cuenta de usuario estándar y comandos con privilegio de usuario raíz

Tenga en cuenta que, en los listados de este artículo, cada comando comienza con un signo de dólar ($) o el símbolo numeral (#). En el shell de Linux, estos símbolos tienen un significado. El signo de dólar en la línea de comando shell indica que el usuario tiene privilegios de una cuenta estándar; el símbolo numeral denota privilegios de usuario raíz (administrador). Para ejecutar los comandos en los listados que tienen el símbolo numeral, es necesario tener un acceso sudo o un acceso directo a la cuenta de usuario raíz para efectuar el comando.

Una forma común de ejecutar aplicaciones desde la línea de comando o la línea de comando shell es mediante el comando ./ . Si usa el punto (.) y la barra diagonal (/) en Linux, quiere decir que desea ejecutar el archivo como un ejecutable. Por ejemplo, para ejecutar un ejecutable de nombre myapp, debe usar el comando ./myapp . De forma similar, puede escribir antes del nombre del archivo el entorno de lenguaje, como los siguientes:

  • sh
  • php
  • python
  • perl
  • java

De manera cada vez más frecuente, las aplicaciones empaquetadas tienen scripts de shell que establecen las variables de entorno y proporcionan la ruta del ejecutable en tiempo de ejecución del lenguaje con el símbolo #! , como #!/usr/bin/python. Debería familiarizarse también con este método.

Listado 1 Use el script predeterminado catalina.sh para iniciar el servidor de aplicaciones Apache Tomcat con el método ./ . Luego, inicie el servidor con el método sh . Dado que el puerto predeterminado es 8080, no se necesitan modificaciones especiales para iniciar el servicio como un usuario estándar.

Listado 1. Ejecución de una aplicación desde la línea de comando
    $ ./catalina.sh start 
    Using CATALINA_BASE:   /opt/apache-tomcat-7.0.26
    Using CATALINA_HOME:   /opt/apache-tomcat-7.0.26
    Using CATALINA_TMPDIR: /opt/apache-tomcat-7.0.26/temp
    Using JRE_HOME:        /usr
    Using CLASSPATH:   /opt/apache-tomcat-7.0.26/bin/bootstrap.jar:
    /opt/apache-tomcat-7.0.26/bin/tomcat-juli.jar
    $ ./catalina.sh stop
    
    .....................................................................
    $ sh catalina.sh start 
    
    Using CATALINA_BASE:   /opt/apache-tomcat-7.0.26
    Using CATALINA_HOME:   /opt/apache-tomcat-7.0.26
    Using CATALINA_TMPDIR: /opt/apache-tomcat-7.0.26/temp
    Using JRE_HOME:        /usr
    Using CLASSPATH:   /opt/apache-tomcat-7.0.26/bin/bootstrap.jar:
    /opt/apache-tomcat-7.0.26/bin/tomcat-juli.jar

Imagine iniciar un servidor web con un Protocolo de transferencia de hipertexto (HTTP) típico. En Linux, cualquier puerto inferior al puerto 1024 se considera un puerto con privilegios y solo los usuarios raíz pueden abrir los puertos con privilegios. Dado que los servidores web se ejecutan de manera predeterminada en el puerto 80, el usuario raíz debe iniciar el proceso. Sin embargo, como se mencionó anteriormente, no se considera seguro ejecutar un servicio como el usuario raíz. El procedimiento correcto es iniciar el servicio como un usuario raíz y, luego, cederlo a un usuario estándar o una cuenta de servicio.

Afortunadamente, muchos servicios de servidores ya cuentan con los scripts para hacer justamente eso. Si desarrolla el servidor web Apache desde el origen, descubrirá que se inicia como un usuario raíz y luego cede los subprocesos httpd al usuario apache .

Listado 2 inicia una complicación predeterminada del servidor web Apache 2. El proceso de instalación realiza algunas tareas, entre las que se incluye la ejecución del comando apachectl . Dado que este proceso requiere el uso del puerto 80, se inicia con privilegios del usuario raíz. Sin embargo, el comando ps indica que los procesos httpd se ejecutan en la cuenta de usuario apache .

Listado 2. Inicio del servidor web Apache
# cd /usr/local/apache2/bin
# apachectl start
#ps aux | grep httpd
apache   23094  0.0  0.3  11784  1912 ?        S    10:41   0:00 /usr/sbin/httpd -k start
apache   23095  0.0  0.3  11784  1912 ?        S    10:41   0:00 /usr/sbin/httpd -k start
apache   23096  0.0  0.3  11784  1912 ?        S    10:41   0:00 /usr/sbin/httpd -k start
apache   23097  0.0  0.3  11784  1912 ?        S    10:41   0:00 /usr/sbin/httpd -k start
apache   23098  0.0  0.3  11784  1912 ?        S    10:41   0:00 /usr/sbin/httpd -k start

Ejecución de aplicaciones en segundo plano

Es posible que algunos de los software instalados no sean tan fáciles de usar como el servidor web Apache. A menos que esté llevando a cabo una tarea con el solucionador de problemas o que desee ver exactamente lo que sucede con una aplicación, es probable que quiera ejecutarla en segundo plano, una vez que comienza el proceso. En caso contrario, la aplicación finaliza cuando se cierra el shell. Cuando ejecuta un servicio de servidor, no se recomienda detenerlo cada vez que cierra el shell terminal ni cerrar la sesión.

Si ejecuta una aplicación en segundo plano, esta continúa funcionando incluso cuando se cierra la ventana del shell. Si desea iniciar una aplicación en segundo plano, puede anexar el símbolo Y comercial (&) al final del comando de ejecución. Por ejemplo, puede abrir un archivo con el editor vi y ejecutarlo en segundo plano con el comando vi /etc/sysconfig/network & , puesto que & abre el archivo /etc/sysconfig/network y lo mantiene en segundo plano. Puede usar la utilidad nohup para permitir que el proceso continúe, incluso luego de cerrar la sesión. Por ejemplo: nohup vi /etc/sysconfig/network &.

Listado 3 abre un archivo para editar en el editor Vim y lo deja en segundo plano.

Listado 3. Ejecución de una aplicación en segundo plano
    # vi /etc/sysconfig/network &
    [1] 24940
    # jobs
    [1]+  Stopped   vi /etc/sysconfig/network

Puede usar el comando jobs para ver todas las aplicaciones que se están ejecutando en segundo plano. Se asigna un número de secuencia, comenzando con el 1, a cada trabajo que se ejecuta en segundo plano. El trabajo en el Listado 3 es el número de trabajo 1. 24940 es el ID de proceso (PID). Puede enviar una aplicación al primer plano con el comando fg y el número de trabajo específico. En este ejemplo, el usuario no utiliza el proceso, de manera que este se muestra como Detenido. Sin embargo, el comando fg 1 abre la terminal nuevamente para el proceso activo de la edición del archivo.


Ejecución de aplicaciones desde el escritorio

En Linux, la ejecución de aplicaciones con una interfaz gráfica de usuario (GUI) desde el escritorio no es muy diferente a la de Windows. En la mayoría de las ocasiones, es necesario entender la manera en que se agrupan las aplicaciones en menús en su entorno de escritorio específico. Linux dispone de muchas aplicaciones de escritorio para diferentes tareas. Algunas son nativas; otras son aplicaciones multiplataforma desarrolladas con C# y usan el mismo entorno de tiempo de ejecución, de la misma forma que las aplicaciones de .NET Framework. Incluso descubrirá que puede ejecutar su aplicación de Windows favorita en Linux, mediante un entorno virtual como Wine.

Aplicaciones de Linux nativas

Es bastante probable que encuentre una aplicación de Linux alternativa para su aplicación basada en Windows favorita. La ejecución de aplicaciones de Linux nativas en el escritorio es clara y concisa. Generalmente, encontrará estas aplicaciones organizadas en menús, como en Windows, y solo debe hacer clic en ellas para ejecutarlas, como lo haría con una aplicación de Windows.

Para aquellas aplicaciones que requieren privilegios de usuario raíz, se le pedirá que escriba la contraseña raíz antes de continuar. Este es un concepto similar a la opción Run as Administrator de Windows. Caso contrario, todas las aplicaciones se ejecutan en el espacio de usuario de la cuenta con la que inició sesión.

En Windows, puede crear accesos directos en el escritorio. Linux tiene unos accesos directos similares llamados iniciadores que puede ubicar en el panel o en el escritorio. Cuando hace clic en el iniciador, se ejecuta el programa.

Figura 1 Muestra dos iniciadores para el explorador web Mozilla Firefox en el escritorio GNOME. Un iniciador está ubicado en el panel, el otro se visualiza en el escritorio.

Figura 1. Vista de los iniciadores en el escritorio y en el panel
Vista de los iniciadores en el escritorio y en el panel

Mono

Muchas aplicaciones de Windows se desarrollan con .NET Framework. Mono es una implementación de código abierto de .NET que se ejecuta en varias plataformas, lo que incluye Linux. De hecho, el sitio web de Mono lo describe como una implementación de C# en Common Language Runtime (CLR) que es compatible a nivel binario con .NET. Actualmente, Xamarin soporta este proyecto.

En Linux, las aplicaciones desarrolladas con .NET Framework (o Mono) se ejecutan de la misma forma que en Windows. Sin embargo, tenga en cuenta el comando umask de Linux y los permisos de archivo predeterminados. También deberá proveer los permisos de ejecución al archivo, para que Linux permita llevar a cabo la ejecución.

Algunas aplicaciones multiplataforma desarrolladas en Mono que se pueden instalar en el escritorio Linux GNOME, como F-Spot, residen en el menú con las aplicaciones de GNOME nativas. F-Spot es una aplicación de código abierto para administrar fotografías. Si bien es una aplicación de C#, aparece como una aplicación nativa en el escritorio GNOME. Una vez que crea un iniciador para una aplicación, puede hacer clic en él y ejecutarlo de la misma forma que lo hace en Windows.

Figura 2 muestra la ubicación de F-Spot, la aplicación basada en Mono, y cómo crear un iniciador de escritorio y un iniciador de panel.

Figura 2. Creación de un iniciador para F-Spot
Creación de un iniciador para F-Spot

Wine

Wine le permite ejecutar software de Windows en Linux y en otros sistemas operativos. Gracias a Wine, puede instalar esas aplicaciones y ejecutarlas de la misma manera que lo hace en Windows. Wine todavía se encuentra en la etapa de desarrollo, es por ello que no todos los programas de Windows funcionan con Wine. Si la aplicación se compila para el sistema operativo Windows y se puede ejecutar correctamente con Wine, todo indica que se trata de una aplicación de escritorio y no de una aplicación de servidor. Asegúrese de revisar la documentación de Wine para obtener información sobre la posibilidad de ejecutar la aplicación en Linux, dado que Wine no soporta completamente todas las aplicaciones.

Cuando utiliza Wine con Linux, cuenta con una carpeta oculta en el directorio principal de su cuenta que emula al entorno de Windows, como se muestra en el Listado 4.

Listado 4. Carpeta oculta de Wine que emula el entorno de Windows
    $ cd /home/tbost/.wine/drive_c/windows
    $ls
    cf8e.tmp
    command
    explorer.exe
    Fonts
    help
    hh.exe
    inf
    Installer
    ls.txt
    Microsoft.NET
    notepad.exe
    pwd.txt
    regedit.exe
    rundll.exe
    system
    system32
    system.ini
    temp
    twain_32.dll
    twain.dll
    winhelp.exe
    winhlp32.exe
    win.ini
    winsxs

Luego de instalar una aplicación con Wine, podrá encontrarla en el menú del escritorio y ejecutarla de la misma forma que en Windows.

Por ejemplo, Camstudio es una herramienta de código abierto para grabar y administrar videos de captura de pantalla. Hoy en día, no existe una versión para el sistema operativo Linux. Sin embargo, mediante el uso de Wine, instalé la versión de Windows en un escritorio de Linux. Generalmente, las aplicaciones relacionadas con Wine se encuentran en Applications > Wine > Programs, como se muestra en el Figura 3.

Figura 3. Ejecución de una aplicación de Windows en Linux mediante Wine
Ejecución de una aplicación de Windows en Linux mediante Wine

Conclusión

Otros artículos en esta serie

Ver más artículos en la serie Linux para administradores de sistemas Windows .

Cuando administra un servidor Linux, está seguro que encontrará software que se ejecuta desde el escritorio y la línea de comando. Una vez que aprenda a configurar las cuentas de usuario y los permisos correspondientes, podrá ejecutar esas aplicaciones de manera segura. Los procesos de ejecución prolongada, como los servicios de servidores, pueden ejecutarse desde la línea de comando y establecerse adecuadamente en segundo plano. Si tiene aplicaciones que están desarrolladas para ejecutarse desde el escritorio, también puede seguir este proceso—incluso puede hacerlo con aplicaciones de Windows.

Recursos

Aprender

Obtener los productos y tecnologías

  • Aprenda más sobre la ejecución de aplicaciones de Windows en Linux con Wine en el sitio web del proyecto.
  • Descubra cómo ejecutar aplicaciones de .NET Framework en Linux con Mono en el sitio web del proyecto.
  • Acceda al software de prueba IBM (disponible en DVD o para descargarse) y experimente con su próximo proyecto de desarrollo en código abierto, mediante el software destinado especialmente para desarrolladores.

Comentar

Comentarios

developerWorks: Ingrese

Los campos obligatorios están marcados con un asterisco (*).


¿Necesita un IBM ID?
¿Olvidó su IBM ID?


¿Olvidó su Password?
Cambie su Password

Al hacer clic en Enviar, usted está de acuerdo con los términos y condiciones de developerWorks.

 


La primera vez que inicie sesión en developerWorks, se creará un perfil para usted. La información en su propio perfil (nombre, país/región y nombre de la empresa) se muestra al público y acompañará a cualquier contenido que publique, a menos que opte por la opción de ocultar el nombre de su empresa. Puede actualizar su cuenta de IBM en cualquier momento.

Toda la información enviada es segura.

Elija su nombre para mostrar



La primera vez que inicia sesión en developerWorks se crea un perfil para usted, teniendo que elegir un nombre para mostrar en el mismo. Este nombre acompañará el contenido que usted publique en developerWorks.

Por favor elija un nombre de 3 - 31 caracteres. Su nombre de usuario debe ser único en la comunidad developerWorks y debe ser distinto a su dirección de email por motivos de privacidad.

Los campos obligatorios están marcados con un asterisco (*).

(Por favor elija un nombre de 3 - 31 caracteres.)

Al hacer clic en Enviar, usted está de acuerdo con los términos y condiciones de developerWorks.

 


Toda la información enviada es segura.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=90
Zone=Linux
ArticleID=822413
ArticleTitle=Linux para administradores de sistemas Windows: Entender como ejecutar aplicaciones que se funcionan en Linux
publish-date=06252012