Cómo ejecutar aplicaciones que se ejecutan en Linux
Si la aplicación se ejecuta con permisos de cuenta de usuario estándar, pero solo los usuarios de un grupo específico necesitan usar la aplicación, puede configurar los permisos del propietario del grupo en Ejecutar y luego agregar esos usuarios al grupo medio.
Más específicamente, puede establecer permisos de lista de control de acceso (ACL) en un archivo ejecutable para otorgar permiso a usuarios o grupos específicos para ejecutar la aplicación. Utilice la utilidad setfacl para configurar permisos ACL.
Para aplicaciones que requieren que el usuario root inicie procesos, como servicios de servidor, tiene varias opciones. A continuación se resumen las opciones que permiten a los usuarios ejecutar servicios de servidor que requieren privilegios de root.
Descripción de la opción
Como usuario root, no se recomienda para servicios de servidor. Se puede utilizar para aplicaciones cuando el usuario ya conoce la contraseña de root y la fuga de aplicaciones no es una preocupación importante.
No se recomienda SetUID por razones de seguridad. setUID permite a los usuarios estándar ejecutar archivos como otro usuario (como root).
sudo se usa comúnmente y se considera una buena práctica. sudo permite a un usuario o miembro de un grupo ejecutar archivos que también pueden requerir privilegios de root. El usuario no necesita conocer la contraseña de root.
Cuenta de usuario estándar con permisos de archivo Establezca permisos de ejecución en el archivo para el propietario del usuario, el propietario del grupo u otros (Todos). Este es un método común para otorgar permiso para ejecutar una aplicación a un usuario que no requiere privilegios de root.
Las cuentas de usuario estándar con permisos ACL son menos comunes, pero son una solución viable si no desea otorgarle al usuario acceso sudo o permiso para cambiar archivos. Al utilizar el comando setfacl en un archivo, puede otorgar permiso a un usuario o grupo de usuarios específico para ejecutar el archivo.
Ejecutar desde la línea de comandos
Ejecutar aplicaciones desde la línea de comandos es una tarea esencial a la hora de gestionar un servidor Linux. Muchas aplicaciones utilizan scripts de shell (similares a los archivos por lotes .bat de Windows) para iniciar la aplicación y realizar otras tareas, como configurar variables y asignar procesos a otros usuarios. Por ejemplo, una aplicación puede requerir una máquina virtual Java (JVM) para ejecutarse. En este caso, el script de shell puede establecer las variables de entorno apropiadas y luego ejecutar el comando Java para ejecutar el archivo Java (JAR) o el archivo de clase. Lo mismo se aplica a las aplicaciones que utilizan Perl, Python o incluso C# (por supuesto, las aplicaciones compiladas en C# también se ejecutarán en Linux).
Una forma común de ejecutar una aplicación desde la línea de comandos o el símbolo del shell es utilizar el comando ./. Si utiliza un punto (.) y una barra diagonal (/) en Linux, y una barra diagonal (/) en Linux, le está indicando al entorno que desea que el archivo se ejecute como ejecutable. Por ejemplo, para ejecutar un ejecutable llamado myapp, usaría el comando ./myapp. Del mismo modo, puede anteponer el nombre del archivo con el idioma local, por ejemplo:
sh
php
python
perl p >
java
Pero más comúnmente, las aplicaciones de la suite usan scripts de shell para proporcionar el idioma local usando el símbolo #! para establecer una variable de entorno que proporcionará la disponibilidad de tiempo de ejecución del archivo de ejecución. ruta, como #! /usr/bin/python. También deberías estar familiarizado con este método.
El Listado 1 utiliza el script predeterminado catalina.sh para iniciar el servidor de aplicaciones Apache Tomcat a través del método ./. Luego, use el método sh para iniciar el servidor.
Dado que el puerto predeterminado es 8080, los usuarios estándar no necesitan realizar ningún cambio especial para iniciar el servicio.
Listado 1. Ejecutar la aplicación desde la línea de comandos
Considere iniciar un servidor web típico de Protocolo de transferencia de hipertexto (HTTP). En Linux, cualquier puerto por debajo de 1024 se considera un puerto privilegiado y sólo el root puede abrir puertos privilegiados. De forma predeterminada, el servidor web se ejecuta en el puerto 80, por lo que se requiere root para iniciar el proceso. Sin embargo, como se mencionó anteriormente, ejecutar servicios como root se considera inseguro. El procedimiento correcto es iniciar el servicio como root y luego transferirlo a un usuario estándar o cuenta de servicio.
Afortunadamente, muchos scripts de servicios de servidor pueden hacer esto. Si construye un servidor web Apache desde cero, encontrará que se inicia como root y luego el comando & ejecuta el archivo en segundo plano porque & puede abrir el archivo /etc/sysconfig/network y mantenerlo en segundo plano. Puede utilizar la utilidad nohup para admitir procesos que continúan ejecutándose después de salir. Por ejemplo, nohup vi /etc/sysconfig/network &.