Archivo de la categoría: Linux

Crear servicio en Linux

Para crear nuestro propio servicio en Linux debemos hacer un script en /etc/init.d, darle permisos de ejecución (755) y asociarlo a los runlevels que queramos. El script debe seguir unas pautas necesarias o no funcionará.

La cabecera ha de ser como sigue:


#!/bin/bash
#
# Startup script for WebSeniorDaemon
#
# chkconfig: 345 99 01
# description: WebSeniorDaemon process
# processname: webseniordaemon
#

Esto nos indica que se ejecutará en la shell bash, la linea chkconfig es necesaria para que luego podamos asociarlo a los runlevels, con S99 y K01 si fuera necesario.

A continuación debemos definir 2 funciones OBLIGATORIAS, start y stop:


start() 
{
   echo $"Inicio Servicio"
}

stop() 
{
   echo $"Servicio Parado"
}

Existen otras funciones opcionales, como depend(), donde indicaremos los requerimientos del servicio


depend() 
{
   need net
}

Una vez definidas debemos indicar el flujo del servicio según el argumento que le pasemos (start, stop o restart), añadimos:


case "$1" in
   start)
      start
      ;;
   stop)
      stop
      ;;
      ;;
   restart)
      stop
      start
      ;;
   *)
      echo $"Uso: service webseniordaemon {start|stop|restart}"
      exit 1
esac

Finalmente añadimos la linea de fin de script


exit

No olvidar darle permiso de ejecución y asociarlo a los runlevels necesarios:


$chmod 755 webseniordaemon
$chkconfig -level 235 webseniordaemon on

Anuncios

Proteger carpetas públicas del servidor web

Como ya sabrás obviamente, Apache cuenta con una carpeta configurable en la que desplegamos nuestros websites o aplicaciones webs. Si queremos restringir el acceso a nuestras aplicaciones, normalmente hacemos nuestro formulario de login que valide al usuario, ya sea en ASP, PHP, JSP… Por otra parte los ficheros de configuración (acceso a base de datos, direcciones IP de servidores de base de datos o web services, etc) que conforman la parte pricada de la aplicación para que no sean accesibles lo guardamos en alguna carpeta fuera del directorio público.

En ocasiones necesitamos que algunos ficheros estén accesibles a través del servidor para cierto usuario, pero a su vez, digamos que éstos no forman parte de nuestra aplicación. Imaginemos que nuestra aplicación genera un fichero log con los accesos al sistema. Podríamos ver el contenido de este log a través del servidor desde cualquier equipo, pero realmente no tiene mucho sentido que nos identifiquemos en la aplicación (pues no vamos a usar sus funcionalidades) pero tampoco son datos que deban estar expuestos a cualquiera.

Lo que podemos hacer es proteger este fichero usando la configuración del servidor en lugar del código de nuestra aplicación y que el explorador nos muestre una ventana de logueo. En el caso de Apache y Linux, debemos hacer lo siguiente:

1. Permitir que Apache pueda solicitar Autorización. Para ello editamos con cualquier editor de texto el archivo httpd.conf y buscamos la línea:

AllowOverride None

y sustituimos LA SEGUNDA OCURRENCIA (NUNCA LA PRIMERA; OJO) por

AllowOverride AuthConfig

2. Creamos la carpeta a proteger. Por ejemplo:

/var/www/html/websenior/logs

3. Añadimos la restricción de acceso. Debemos añadir dos ficheros a la carpeta, .htaccess (con el punto) que nos indica las propiedades del acceso y lista de usuarios que podrán acceder y .htpasswd (con el punto también) que incluye cada usuario y contraseña de entrada.

Nuestro .htaccess quedaría:

AuthName "Control de acceso restringido"
AuthType Basic
AuthUserFile /var/www/html/websenior/logs/.htpasswd
Require user kurroman

El .htpasswd no es posible generarlo directamente a través de un editor de texto, aunque existen herramientas para su creación, desde shell podemos hacer:

htpasswd -cmb .htpasswd kurroman mipassword

se finit!

¿Como añadimos mas usuarios? Debemos editar una linea en el .htaccess de la forma:

Require user kurroman fjtorres

y añadir su contraseña al .htpasswd lanzando en el shell la sentencia:

htpasswd -mb .htpasswd fjtorres supassword

fijaros que ahora hemos quitado la opción “-c” del comando. Si no la quito, me borraría y crearía de nuevo el .htpasswd, perdiendo los usuarios que ya existian.

¿y como borro usuarios manteniendo el resto? Pues editamos el .htaccess y quitamos el usuario, luego lanzaríamos la sentencia:

htpasswd D fjtorres

y con esto eliminamos al usuario.

Espero que os sea útil este artículo.