Skip to main content

Cómo descubrir las versiones en un servidor LAMP en Ubuntu Server 12.04 LTS

Un servidor LAMP es un servidor WEB formado por las aplicaciones Apache, MySQL y PHP, ejecutándose en un sistema operativo Linux. En esta entrada veremos como podemos saber las versiones instaladas de cada uno de estos componentes usando comandos de la terminal.

El Kernel

El kernel linux es el corazón de nuestro sistema operativo Ubuntu. Es el pilar sobre la que toda esta magia funciona. Para saber que versión de kernel tenemos instalado basta con ejecutar en un terminal el comando siguiente:

uname -a

Mostrará un texto similar al siguiente sacado de una máquina virtual con debian

Linux debian 2.6.32-5-686 #1 SMP Sun Sep 23 09:49:36 UTC 2012 i686 GNU/Linux

El Sistema Operativo

El sistema operativo es el conjunto de aplicaciones básicas que permiten la administración del sistema.  Para saber la versión de nuestro sistema operativo usaremos el siguiente comando:

lsb_release -a

En un sistema operativo Ubuntu Server 12.01 LTS mostrará el siguiente texto:

Distributor ID:    Ubuntu
Description:    Ubuntu 12.04.1 LTS
Release:    12.04
Codename:    precise

El servidor web Apache

El servidor web es la aplicación responsable de servir la páginas web en nuestro equipo servidor al navegador de un equipo cliente. Para saber la versión de un servidor Apache usaremos la siguiente orden:

apache2 -v

Comando que mostrará algo semejante a:

Server version: Apache/2.2.22 (Ubuntu)
Server built:   Nov  8 2012 21:37:30

El interprete PHP

Un servidor LAMP se sirve como lenguaje del lado del servidor de PHP. PHP es un potente lenguaje de script, con una sintaxis similar a C y un curva de aprendizaje relativamente baja. Aplicaciones que son la base de Internet como WordPress, Drupal, o Phpbb están programadas en PHP. Conocer la versión que se ejecuta en el servidor es importante por muy diversas razones. Mediante el siguiente comando podremos saber la versión instalada.

php -v

En un sistema Ubuntu Server 12.04 LTS mostrará algo como:

PHP 5.3.10-1ubuntu3.4 with Suhosin-Patch (cli) (built: Sep 12 2012 18:59:41)
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies

El servidor de bases de datos MySQL

La aplicación MySQL es un SGDB que permite a las aplicaciones alojadas en el servidor almacenar y recuperar datos de forma relacional. Descubrir la versión del nuestro servidor MySQL es un poquito más complicado a lo visto anteriormente. Veamos algunas opciones.

Preguntando al administrador de paquetes APT

Apt lleva un registro de los paquetes instalados. Por lo que simplemente tenemos que preguntarle que instaló. El comando siguiente nos servirá:

apt-cache show mysql-server | grep Version

Mostrará algo como.

Version: 5.5.28-0ubuntu0.12.04.3

Preguntando a MySQL

Este comando nos servirá también pero necesitaremos conocer la contraseña de root:

mysqladmin -uroot -p -hlocalhost version | grep "Server version"

Y mostrará algo similar a:

Server version        5.5.28-0ubuntu0.12.04.3

Con los anteriores comandos vimos como saber la versión de los elementos de un servidor LAMP. Los comandos fueron probados en un servidor Ubuntu 12.04 LTS y en una máquina virtual Debian. Consecuentemente deberían ser válidos en cualquier otro entorno equivalente.

clear

Enviar correos desde la terminal con Mail en Ubuntu Server 12.04 LTS

A veces necesitamos enviar correos desde la línea de comandos. No como lo hace una aplicación como Mutt, sino directamente desde la línea de comando o desde un script o desde las tareas de cron.
Para estos casos disponemos de una ligera aplicación en el paquete mailutils llamada mail.
Para instalar mail basta con instalar el paquete mailutils. Con el siguiente comando ejecutado en una terminal lo tendremos hecho.

sudo aptitude install mailutils

Modo de empleo.

La aplicación mail dispone de un modo interactivo para enviar correos desde la línea de comandos. Por ejemplo para enviar un correo a user@example.com:

mail user@example.com

Y nos mostrará algo como:

Cc:
Subject: 

En “Cc:” podemos poner un destinatario que recibirá copia. En “Subject:” el asunto del mensaje. Después podremos escribir libremente el contenido del mensaje. Y cuando terminemos de redactar el contenido pulsaremos CONTRL-D para finalizar y enviar el mensaje.
Pero esto en realidad no es lo que pretendíamos. Esto ya lo podemos hacer mejor con Mutt. Aunque viene bien conocer este uso.

Enviar mensajes desde la línea o scripts

Para enviar un mensaje a una dirección de correo desde la terminal o desde dentro de un script  basta con:

echo "El mensaje a enviar" | mail user@example.com

Para que lleve el mensaje lleve asunto usaremos la opción “-s”, como en:

echo "El mensaje a enviar" | mail -s "Asunto" user@example.com

Y para añadir un fichero adjunto usaremos la opción “-a”, como en:

echo "El mensaje a enviar" | mail -a fichero.ext user@example.com

Cómo configurar SFTP con usuarios enjaulados en Ubuntu Server 12.04

El servicio ssh es excelente y lo es por las muchas posibilidades que brinda. Una de ellas es la sustitución del viejo y poco seguro servicio FTP. El servicio ssh ofrece un protocolo llamado SFTP que funciona parecido al FTP, pero de forma más segura. Aplicaciones como Filezilla tienen soporte para este protocolo.

Nada más instalar SSH en nuestro servidor Ubuntu, ya queda disponible para usar con nuestros usuarios y un cliente SFTP. Pero un problema que tiene esto es que el cliente SFTP puede navegar por todo el sistema de ficheros exponiendo el contenido del servidor. Esto lógicamente no nos gusta nada.

Pero podemos enjaular (chroot) los usuarios para que no puedan perderse entre los directorios del servidor. Y esto es magnífico, porque podemos así permitirles subir sus archivos a estos usuarios y que queden publicados en Internet.

Veamos como hacerlo.

Creamos un grupo nuevo.

Los usuarios de este grupo tendrán automáticamente restringido el sistema de directorios a su propio directorio enjaulado. No pudiendo salir y perderse más allá de su directorio raíz.

sudo groupadd hostusers

Creamos el usuario.

Este usuario tiene la particularidad que no podrá acceder a un terminal y sólo podrá acceder mediante un cliente sftp a sus directorios enjaulados.

sudo useradd -g hostusers -d /home -s /sbin/nologin testuser
sudo passwd testuser

Verificamos que el usuario se creo con:

grep testuser /etc/passwd

Configuramos el servicio sftp enjaulado.

Tenemos que editar el fichero sshd_config donde se configura el servicio del servidor ssh. En este archivo preparamos ssh para funcionar como queramos. Cambiando el sftp-server que viene configurado por defecto por el internal-sftp.

sudo nano /etc/ssh/sshd_config

Comentamos la línea para deshabilitarla:

#Subsystem sftp /usr/lib/openssh/sftp-server

Al final del archivo de configuración añadimos una línea nueva para que use el sftp interno:

Subsystem sftp internal-sftp

Y después añadimos el siguiente texto para instruir al servicio ssh cual será el directorio enjaulado.

Match Group hostusers
ChrootDirectory /hosting/%u
ForceCommand internal-sftp

La primera línea indica que las siguientes sólo aplican a los usuarios del grupo hostusers. La segunda línea indica que los usuarios estarán enjaulados en un directorio con su propio nombre. Y la tercera indica que se debe forzar para estos usuarios el uso del sftp interno.

Creamos el directorio de la jaula.

sudo mkdir /hosting

Creamos los directorios para el usuario.

sudo mkdir /hosting/testuser
sudo mkdir /hosting/testuser/home
sudo mkdir /hosting/testuser/home/public_html

Para estos usuarios especiales /hosting/testuser será como / para el usuario testuser. Este usuario no podrá ver nada por encima de su directorio raíz  El directorio public_html queda ahí para poder usarlo con Apache y orientar los dominios virtuales a ese directorio. De modo que cuando esté configurado Apache, lo que cada usuario suba ahí se publicará en Internet.

Aplicamos los permisos correctos.

Como estos directorios son creados por root debemos cambiarles el propietario para que el usuario testuser pueda usarlos.

sudo chown testuser:hostusers /hosting/testuser/home
sudo chown testuser:hostusers /hosting/testuser/home/public_html

Podremos comprobar que los permisos son correctos con el alias ll (disponible en Ubuntu Server para ls -ld)

ll /hosting/testuser/home

Reiniciar el servicio SSH

Finalmente reiniciamos el servicio ssh para que los cambios aplicados tomen efecto.

sudo service ssh restart

Ahora deberíamos poder acceder con un cliente SFTP como Filezilla.

Más usuarios

Si queremos añadir mas usuarios enjaulados repetiremos para cada nuevo usuario. En cada comando sustituiremos testuser por el nombre del nuevo usuario que queremos crear en cada uno de los pasos siguientes:

  • Creamos el usuario.
  • Creamos los directorios.
  • Aplicamos los permisos correctos
  • Reiniciar el servicio SSH.

Con estas instrucciones podemos permitir que usuarios suban sus ficheros al servidor y no puedan comprometer la visibilidad de los contenidos en él. Estas instrucciones están probadas en Ubuntu Server 12.04 LTS.