howto

Apache

Apache

Introducción

Apache es un servidor web.

Instalación

Para instalarlo tendremos que instalar el paquete apache2 desde nuestro gestor de paquetes gráfico favorito o ejecutando la siguiente orden:

>> sudo aptitude install apache2

Uso

  • Si lo hemos instalado como servicio:

>> sudo /etc/init.d/apache2 start
>> sudo /etc/init.d/apache2 stop
>> sudo /etc/init.d/apache2 restart
  • Si no lo hemos instalado como servicio (standalone):

>> /usr/local/apache2/bin/apachectl start
>> /usr/local/apache2/bin/apachectl restart
>> /usr/local/apache2/bin/apachectl stop

Configuración

El fichero de configuración

El fichero de configuración se llama httpd.conf y esta en la siguiente ruta:

  • Desde las fuentes: /usr/local/apache2/conf/httpd.conf
  • Desde el repositorio: /etc/apache2/httpd.conf

Directorio raiz por defecto

  • Desde las fuentes: /usr/local/apache2/htdocs
  • Desde el repositorio: /var/www/

Cambiar el directorio de las páginas web

Modificar en el fichero de configuración /usr/local/apache2/conf/httpd.conf la variable DocumentRoot con la ruta nueva:

DocumentRoot "/media/windows/WEB"

Seguridad

  • La variable ServerTokens nos permite decidir que información dice el servidor. ServerTokens por defecto tiene el valor Full, por seguridad es decir cuanto menos información. Un ejemplo de los valores de esta variable y de sus salidas serian los siguientes:
Prod: Apache
Major: Apache/2
Minor: Apache/2.0
Minimal: Apache/2.0.55
OS: Apache/2.0.55 (Debian)
Full: Apache/2.0.55 (Debian) PHP/5.1.2-1+b1 mod_ssl/2.0.55 OpenSSL/0.9.8b

Por lo que editaremos el fichero /etc/apache2/apache2.conf y pondremos la variable ServerTokens con el valor Prod:

ServerTokens Prod
  • La variable ServerSignature permite la configuración del pie de página que aparece en ciertos mensajes generados por el servidor (mensajes de error, salida de mod_info , etc.). Si se utiliza ServerSignature On, se añade una línea con el número de versión de Apache, el nombre del servidor ServerName, y el email del responsable ServerAdmin. Por ejemplo:
Not Found  
The requested URL /docu/proyecto_web/img34.png was not found on this server.

Apache/2.2.3 (Debian) DAV/2 SVN/1.4.2 mod_fastcgi/2.4.2 PHP/5.2.0-8+etch7 mod_ssl/2.2.3 OpenSSL/0.9.8c Server at www.realidadfutura.com Port 80

Por lo tanto la pondremos en Off. Editaremos el fichero /etc/apache2/apache2.conf y pondremos la variable ServerSignature en Off:

ServerSignature Off
  • Por seguridad es conveniente deshabilitar el método TRACE y dejar solo los que voy a necesitar GET,HEAD, POST y OPTIONS. Esto habra que indicarselo en cada VirtualHost gracias a la variable TraceEnable. Por ejemplo, para deshabilitarlo en el VirtualHost por defecto iremos al archivo /etc/apache2/sites-available/default y dentro de la etiqueta VirtualHost pondremos la variable TraceEnable en Off:
TraceEnable off

Impedir que ciertas IPs accedan a una carpeta del servidor

Crear o modificar un archivo de nombre .htaccess en la carpeta e introducirle el siguiente contenido:

Order Deny,Allow
Allow from 155.210.155.169
Deny from all

Para hacerlo de esta forma necesitaremos que este activa la opción AllowOverride de usar archivos .htaccess a un valor distinto a None

Impedir que otras webs usen nuestras imagenes

A veces otras webs pueden usar imagenes nuestras subidas en nuestro servidor (consumiendo nuestro respectivo ancho de banda). Para evitar esto tendremos que crear o editar el archivo .htaccess en la carpeta principal de nuestra página web y añadir las siguientes líneas:

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://tu-dominio.com [NC]
RewriteCond %{HTTP_REFERER} !^http://www.tu-dominio.com [NC]
RewriteRule .*\.(gif|jpg|swf|png|jpeg)$ - [NC,F]

Si ademas queremos que cuando usen una imagen nuestra, les aparezca otra, solo tendremos que cambiar la úlñtima línea por esta otra:

RewriteRule .*\.(gif|jpg|swf|png|jpeg)$ imagen_ladron.jpg [L]

Siendo imagen_ladron.jpg la imagen que queremos que les salga.

Security enhanced linux

Aveces podemos encontrarnos con el siguiente problema en el apache (aunque tengamos los permisos bien):

Permission denied: access to /index.html denied

Esto puede deberse a que algunos linux (similares a Red Hat, por ejemplo en Centos 5) implementan últimamente un sistema de seguridad llamado Security-Enhanced Linux.

Security-Enhanced Linux (o SELinux) es una arquitectura de seguridad integrada en el kernel 2.6.x usando los módulos de seguridad linux (o linux security modules, LSM). Este es un proyecto de la Agencia de Seguridad Nacional (NSA) de los Estados Unidos y de la comunidad SELinux. La integración de SELinux en Red Hat Enterprise Linux fue un esfuerzo conjunto entre al NSA y Red Hat

Usarlo

Por ejemplo: si queremos darle permisos al apache para que pueda acceder a una carpeta TU_CARPETA. Primero veremos que no tiene los permisos para que pueda ser accedida por el apache con la siguiente orden:

>> ls -Z TU_CARPETA
   drwxr-xr-x  root root system_u:object_r:home_root_t    TU_CARPETA

Entonces le daremos los permisos con la siguiente orden:

>> chcon -R -h -t httpd_sys_content_t TU_CARPETA

Por último comprobaremos que ya tiene los permisos:

>> ls -Z TU_CARPETA
   drwxrwxrwx  root root root:object_r:httpd_sys_content_t TU_CARPETA

Deshabilitarlo

Para saber si lo tenemos activado tendremos que ejecutar la siguiente orden (si esta off, significa que no esta activado lo que lo deshabilita, lo que quiere decir que esta activado):

>> getsebool -a | grep httpd
   allow_httpd_anon_write --> off
   allow_httpd_bugzilla_script_anon_write --> off
   allow_httpd_mod_auth_pam --> off
   allow_httpd_nagios_script_anon_write --> off
   allow_httpd_squid_script_anon_write --> off
   allow_httpd_sys_script_anon_write --> off
   httpd_builtin_scripting --> on
   httpd_can_network_connect --> off
   httpd_can_network_connect_db --> off
   httpd_can_network_relay --> off
   httpd_disable_trans --> off
   httpd_enable_cgi --> on
   httpd_enable_ftp_server --> off
   httpd_enable_homedirs --> on
   httpd_rotatelogs_disable_trans --> off
   httpd_ssi_exec --> off
   httpd_suexec_disable_trans --> off
   httpd_tty_comm --> on
   httpd_unified --> on

Activamos la opción de deshabilitar y comprobamos que se ha activado:

>> setsebool -P httpd_disable_trans 1
>> getsebool -a | grep httpd
   allow_httpd_anon_write --> off
   allow_httpd_bugzilla_script_anon_write --> off
   allow_httpd_mod_auth_pam --> off
   allow_httpd_nagios_script_anon_write --> off
   allow_httpd_squid_script_anon_write --> off
   allow_httpd_sys_script_anon_write --> off
   httpd_builtin_scripting --> on
   httpd_can_network_connect --> off
   httpd_can_network_connect_db --> off
   httpd_can_network_relay --> off
   httpd_disable_trans --> on
   httpd_enable_cgi --> on
   httpd_enable_ftp_server --> off
   httpd_enable_homedirs --> on
   httpd_rotatelogs_disable_trans --> off
   httpd_ssi_exec --> off
   httpd_suexec_disable_trans --> off
   httpd_tty_comm --> on
   httpd_unified --> on

Por último reiniciamos el apache para que tenga efecto:

>> sudo /etc/init.d/apache2 restart
   Parando apache2:                                             [  OK  ]
   Iniciando apache2:                                           [  OK  ]

Problemas

External APR-util

 Puede ser que apache nos de un erro como el siguiente:

configure: error: Cannot use an external APR-util with the bundled APR

Solución

Para solucionar este error, tendremos que instalar el paquete libaprutil1-dev:

>> sudo aptitude install  libaprutil1-dev
temas: 

Escritorio remoto en Ubuntu con Freenx

Escritorio remoto en Ubuntu con Freenx

Introducción

En Ubuntu hay muchas maneras de conectarnos por escritorio remoto. La que mas me gusta es con freenx (mas seguro que con VNC y mucho mas rápido). En este articulo veremos como instalarlo, configurarlo y usarlo.

Instalación

Tendremos que instalar dos partes. En el ordenador al que nos queremos conectar, tendremos que instalarle el servidor freenx. En el ordenador desde el que nos conectaremos al otro ordenador, tendremos que instalar el cliente nxclient.

Instalar el servidor

Lo primero que necesitaremos es tener un repositorio que tenga el paquete freenx-server. Si no tenéis ninguno podéis usar este:

deb http://ppa.launchpad.net/freenx-team/ubuntu TU_DISTRO main
deb-src http://ppa.launchpad.net/freenx-team/ubuntu TU_DISTRO main

Dependiendo de vuestra versión de ubuntu cambiareis TU_DISTRO por una de las siguientes que corresponda a vuestra distribución:

  • feisty
  • gutsy
  • hardy
  • intrepid
  • jaunty
  • karmic
  • lucid

Tambien podemos añadirlo con el siguiente comando:

>> sudo add-apt-repository ppa:freenx-team

Una vez lo tengamos en nuestro repositorio procederemos a instalarlo con las siguientes ordenes:

>> sudo aptitude update
>> sudo aptitude upgrade
>> sudo aptitude install freenx

Instalar el cliente

Para instalar el cliente tendremos que ir a la web http://www.nomachine.com e ir a la sección de descargas y seleccionar el programa NX Client y para que Sistema Operativo lo necesitamos (Windows o Linux), y si es para linux elegiremos después la versión para Ubuntu NX Client DEB for Linux.

Después de bajarlo lo instalaremos. Para instalarlo en Ubuntu desde consola tendremos que ejecutar la siguiente orden:

>> sudo dpkg -i nxclient_3.2.0-9_i386.deb

Configuración

Establecer el puerto donde sshd esta escuchando

Freenx una sshd para establecer las conexiones con más seguridad. Por ello tiene que saber en que puerto esta escuchando sshd. Por defecto piensa que está en el 22, pero si esta en otro puerto, tendremos que indicarselo. Para ello tendremos que editar el fichero /etc/nxserver/node.conf y descomentaremos la variable SSHD_PORT y le pondremos el valor de nuestro puerto.

Por ejemplo, si nuestro servidor sshd esta escuchando en el puerto 4022, tendremos que dejar la línea así:

SSHD_PORT=4444
temas: 

Ver las temperaturas en ubuntu con lm-sensors

Ver las temperaturas en ubuntu con lm-sensors

Introducción

Para ver las temperaturas de la placa base, procesator, etc, en un Ubuntu, disponemos de un programa llamado lm-sensors. En este artículo os voy a explicar como instalarlo y configurarlo. Si además de poder ver las temperaturas, queréis añadirlas a la barra de tareas de Ubuntu podéis hacerlo como os indico aquí.

Instalación

Para instalar el programa lm-sensors tendremos que instalar el paquete de nombre lm-sensors desde nuestro gestor de paquetes gráfico favorito o ejecutando el siguiente comando:

    >> sudo apt-get install lm-sensors

Ejecución

Una vez lo tengamos ya instado, podemos ver las temperaturas ejecutando el siguiente comando:

    >> sensors
   
      it8712-isa-0290
      Adapter: ISA adapter
      VCore 1: +1.34 V (min = +0.00 V, max = +4.08 V)
      VCore 2: +2.58 V (min = +0.00 V, max = +4.08 V)
      +3.3V: +3.38 V (min = +0.00 V, max = +4.08 V)
      +5V: +3.79 V (min = +0.00 V, max = +6.85 V)
      +12V: +11.90 V (min = +0.00 V, max = +16.32 V)
      -12V: -8.22 V (min = -27.36 V, max = +3.93 V)
      -5V: -4.29 V (min = -13.64 V, max = +4.03 V)
      Stdby: +4.41 V (min = +0.00 V, max = +6.85 V)
      VBat: +4.08 V
      fan1: 2556 RPM (min = 0 RPM, div = 8)
      fan2: 0 RPM (min = 0 RPM, div = 8)
      fan3: 0 RPM (min = 0 RPM, div = 8)
      M/B Temp: +25°C (low = +127°C, high = +127°C) sensor = thermistor
      CPU Temp: +39°C (low = +127°C, high = +127°C) sensor = thermistor
      Temp3: +71°C (low = +127°C, high = +127°C) sensor = thermistor

Configuración

  • El archivo de configuración
    /etc/sensors.conf
  • Detectar los sensores que tenemos:
    >> sudo sensors-detect

Ejemplo

Por ejemplo, para la placa Gigabyte GA-K8NF-9 (rev1):

Ejecutamos >> sudo sensors-detect y nos dice que tenemos los siguientes sensores:

    To make the sensors modules behave correctly, add these lines to
    /etc/modules:
    
    #----cut here----
    # I2C adapter drivers
    i2c-nforce2
    # Chip drivers
    eeprom
    # Warning: the required module k8temp is not currently installed
    # on your system. For status of 2.6 kernel ports check
    # http://www.lm-sensors.org/wiki/Devices. If driver is built
    # into the kernel, or unavailable, comment out the following line.
    pca9540
    k8temp
    it87
    #----cut here----

Probamos si tenemos los modulos que nos dice:

    >> sudo modprobe i2c-nforce2
    >> sudo modprobe eeprom
    >> sudo modprobe pca9540
    >> sudo modprobe k8temp
    >> sudo modprobe it87
    >> sudo depmod -a

Entonces probamos si funciona:

    >> sensors
    
    k8temp-pci-00c3
    Adapter: PCI adapter
    Core0 Temp:
                 +49°C
    
    it8712-isa-0290
    Adapter: ISA adapter
    VCore 1:   +1.36 V  (min =  +0.00 V, max =  +4.08 V)
    VCore 2:   +2.58 V  (min =  +0.00 V, max =  +4.08 V)
    +3.3V:     +3.36 V  (min =  +0.00 V, max =  +4.08 V)
    +5V:       +5.24 V  (min =  +0.00 V, max =  +6.85 V)
    +12V:     +11.97 V  (min =  +0.00 V, max = +16.32 V)
    -12V:     -11.16 V  (min = -27.36 V, max =  +3.93 V)
    -5V:       -1.59 V  (min = -13.64 V, max =  +4.03 V)
    Stdby:     +4.09 V  (min =  +0.00 V, max =  +6.85 V)
    VBat:      +4.08 V
    fan1:     2766 RPM  (min =    0 RPM, div = 8)
    fan3:        0 RPM  (min =    0 RPM, div = 8)
    M/B Temp:    +25°C  (low  =  +127°C, high =  +127°C)   sensor = thermistor
    CPU Temp:    +46°C  (low  =  +127°C, high =  +127°C)   sensor = thermistor
    Temp3:       +72°C  (low  =  +127°C, high =  +127°C)   sensor = thermistor

Si todo ha funcionado tenemos que ir al archivo /etc/modules y añadimos los sensores que no han dado error con modprobe:

    i2c-nforce2
    eeprom
    k8temp
    it87 

Problemas

Problema No sensors found

Al ejecutar el comando sensors nos aparece el siguiente mensaje:

>> sensors
No sensors found!
Make sure you loaded all the kernel drivers you need.
Try sensors-detect to find out which these are.

Solución

El problema está en que no hemos cargado los módulos que nos ha devuelto el comando sensors-detect.

temas: 

Abrir puertos en VirtualBox

Abrir puertos en virtualbox

Abrir puertos

Puede darse el caso de que nos encontremos con la necesidad de tener que acceder a un puerto de nuestra máquina virtual desde el exterior (Por ejemplo, si queremos acceder por ssh a la máquina virtual el puerto 22 tendrá que ser accesible desde el exterior). Para configurar esto no hay de momento forma de hacerlo con la interfaz gráfica de Virtualbox, pero se puede hacer por línea de comandos. Para abrir un puerto al exterior de una máquina virtual (Por ejemplo de nombre windows) tendremos que crear una regla (Por ejemplo, de nombre apache) para abrir un puerto de la máquina virtual (Por ejemplo el 80) para un protocolo (Por ejemplo, TCP) en un puerto de la máquina donde esta instalado el virtualbox (Por ejemplo, el 20080). De esta manera cuando accedamos al puerto que le indiquemos de la máquina que tiene instalado el VirtualBox, estaremos accediendo al puerto indicado de la maquina virtual.

Para hacer esto tendremos que apagar la máquina virtual (apagarlo, no pausarlo). Después ejecutaremos las siguientes ordenes:

  >> VBoxManage setextradata "windows" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/apache/Protocol" TCP
  >> VBoxManage setextradata "windows" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/apache/GuestPort" 80
  >> VBoxManage setextradata "windows" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/apache/HostPort" 20080

Si nos fijamos en cada línea, veremos que ponemos pcnet. Esto es el dispositivo de red que esta usando la máquina virtual para emular una tarjeta de red del tipo que le hemos dicho en la configuración. Dependiendo de un tipo u otro, tendremos que poner una cadena u otra. Los posibles tipos que hay son los siguientes:

  • Intel Network Adapter: e1000
  • PCNet: pcnet
  • ...

Para comprobar que se ha introducido bien podemos listar todas propiedades de la maquina virtual (Por ejemplo para la máquina de nombre windows):

  >> VBoxManage getextradata windows enumerate
    VirtualBox Command Line Management Interface Version 1.5.6_OSE
    (C) 2005-2008 innotek GmbH
    All rights reserved.
    
    Key: GUI/LastWindowPostion, Value: 425,339,644,531,max
    Key: GUI/Fullscreen, Value: off
    Key: GUI/Seamless, Value: off
    Key: GUI/AutoresizeGuest, Value: on
    Key: GUI/LastCloseAction, Value: save
    Key: VBoxInternal/Devices/pcnet/0/LUN#0/Config/apache/Protocol, Value: TCP
    Key: VBoxInternal/Devices/pcnet/0/LUN#0/Config/apache/GuestPort, Value: 80
    Key: VBoxInternal/Devices/pcnet/0/LUN#0/Config/apache/HostPort, Value: 20080

Como podemos observar aparecen las propiedades que hemos introducido.

Problemas

Error get MAC

Al encender la máquina virtual después de haber abierto puertos, nos indica este error:

Configuration error: Failed to get the "MAC" value.
VBox status code: -2103 (VERR_CFGM_VALUE_NOT_FOUND).

Solución

Este error aparece cuando abrimos los puertos indicando una tarjeta de red que no es la que le hemos indicado en la configuración a la máquina (pcnet, e1000, ...). Para solucionarlo tendremos que cambiar la tarjeta de red en la configuración de la máquina virtual por la correspondiente que hayamos puesto al abrir el puerto. O sino borrar los datos del puerto abierto y volverlo a poner para la tarjeta de red correcta. (Para mas información leer la guia de esta página)

Fuente

Crear y reparar archivos comprimirdos con volúmenes de recuperación (rev)

Volúmenes de recuperación

Introducción

Hoy os vamos a explicar otra manera de recuperar archivos rar dañados comprimidos en volumenes. Hace unos días os explicamos como hacerlo usando archivos par2 y hoy os vamos a explicar como hacerlo con volúmenes de recuperación (extensión rev).

Los volúmenes de recuperación o fichero .rev son ficheros especiales que pueden ser creados por WinRAR y que permiten reconstruir volúmenes ausentes o dañados. Solo pueden usarse con archivos multivolumen.

Creación de los ficheros de recuperación

Vamos a crear 10 archivos de recuperación a partir del fichero comprimido en volumenes. Para ello le pasaremos el parámetro rv seguido del numero de ficheros que queremos crear (en nuestro caso 10) y luego pondremos el nombre del primer fichero del volumen (en nuestro caso prueba.part01.rar)

>> rar rv10 prueba.part01.rar
 
RAR 3.80   Copyright (c) 1993-2008 Alexander Roshal   16 Sep 2008
Shareware version         Type RAR -? for help
 
Creating prueba.part01.rev
Creating prueba.part02.rev
Creating prueba.part03.rev
Creating prueba.part04.rev
Creating prueba.part05.rev
Creating prueba.part06.rev
Creating prueba.part07.rev
Creating prueba.part08.rev
Creating prueba.part09.rev
Creating prueba.part10.rev 100%
Done

Recuperación de un archivo dañado

Imaginemos que tenemos un archivo rar comprimido en volúmenes pero que nos faltan dos de esos volúmenes. Si tenemos los archivos de revisión (extensión rev) podremos intentar recuperar los archivos perdidos con ellos. Para ello tendremos que poner el parámetro rc seguido del nombre del primer archivo del volumen (en nuestro caso prueba.part01.rar)

>> rar rc prueba.part01.rar
  
RAR 3.80   Copyright (c) 1993-2008 Alexander Roshal   16 Sep 2008
Shareware version         Type RAR -? for help
 
Calculating control sums of all volumes.
5 recovery volumes found
Cannot find volume prueba.part12.rar
Cannot find volume prueba.part71.rar
2 volumes missing
Reconstructing... 100%
Done

Como podemos ver se han podido recuperar.

temas: 

Crear y reparar archivos comprimirdos con sus archivos par2

recuperar archivos multivolumen rar con archivos par2

Introducción

A veces puedes encontrarte con archivos comprimidos en varios volúmenes (prueba.part001.rar, prueba.part002.rar, prueba.part003.rar, ...). Puede darse el caso de que un archivo de este volumen no lo tengas o este corrupto (dañado). Hoy en día podemos disponer de herramientas que nos permitan descomprimir el contenido comprimido aun teniendo este problema (siempre que se haya comprimido creando unos archivos necesarios) si hay suficiente información para ello en el volumen.

Los ficheros Par2 pueden ser utilizados para reparar ficheros comprimidos dañados. Pero para ello se habrán tenido que crear al hacer el archivo comprimido. El proceso analiza los bloques de cada fichero rar y publica si esta completo, incompleto o perdido. Cada fichero par2 se puede utilizar para arreglar cierto número de bloques. Todo lo que necesitas es tener la suficiente cantidad de ficheros par2 que puedan arreglar los bloques perdidos para poder repararlos. Puedes reparar cualquier fichero rar dañado con cualquier fichero par2.

Lo primero que tendremos que hacer es instalar el programa:

>> sudo apt-get install par2

Creación de los ficheros par2

Si vamos a comprimir algo en varios archivos rar, podemos crear los  archivos par2 para que cuando lo queramos descomprimir y no tengamos alguno de los  archivos o que alguno de los archivos se haya dañado con el tiempo o al transprotarlo. Como ejemplo, vamos a crear una lista de archivos comprimidos. Vamos a comprimir el fichero prueba.avi con una compresión del 1 en archivos de 5 megas:

>> rar a prueba.rar -v5m -m1 prueba.avi
  ...
>> ls
  prueba.avi         prueba.part02.rar  prueba.part04.rar  prueba.part06.rar  prueba.part08.rar  prueba.part10.rar
  prueba.part01.rar  prueba.part03.rar  prueba.part05.rar  prueba.part07.rar  prueba.part09.rar

Ahora vamos a crear 4 archivos par2 de nombre prueba y con un tamaño igual para los 4:

>> par2create -u -n4 prueba prueba.part*.rar
   ...  
   Block size: 25012
   Source file count: 10
   Source block count: 2004
   Redundancy: 10%
   Recovery block count: 200
   Recovery file count: 4
  
   Opening: prueba.part01.rar
   ...
   Opening: prueba.part10.rar
   Computing Reed Solomon matrix.
   Constructing: done.
   Wrote 5002400 bytes to disk
   Writing recovery packets
   Writing verification packets
   Done

Ya tenemos creados los archivos par2, lo comprobamos:

>> ls
   prueba.avi   prueba.part01.rar  prueba.part03.rar  prueba.part05.rar  prueba.part07.rar 
   prueba.part09.rar  prueba.vol000+16.par2  prueba.vol048+64.par2   prueba.par2
   prueba.part02.rar  prueba.part04.rar  prueba.part06.rar  prueba.part08.rar  prueba.part10.rar 
   prueba.vol016+32.par2  prueba.vol112+88.par2

Otros ejemplos serían:

  • Crear archivos par2 del mismo tamaño y con un 10% de redundancia:
>> par2create -u -r10 prueba prueba.part*.rar

Recuperación con ficheros par2

Si queremos descomprimir un archivo comprimido en varios archivos rar pero no tenemos todos los archivos o alguno de estos esta dañado, podemos hacerlo si tenemos los archivos par2. Vamos a ver un ejemplo de uso si un archivo troceado en trozos con archivos PAR2 y que le falta 1 archivo (prueba.part019.rar). Estos son los archivos que tenemos:

>> ls
  prueba.md5
  prueba.par2
  prueba.part001.rar
  ...
  prueba.part018.rar
  prueba.part020.rar
  ...
  prueba.part030.rar
  prueba.vol000_50.PAR2
  prueba.vol050_50.PAR2
  prueba.vol100_50.PAR2

Ahora vamos a ejecutar el programa par2 para que compruebe cuantos archivos faltan o estan dañados y si tiene los suficientes bloques para recuperarlos:

>> par2repair prueba.par2
   par2cmdline version 0.4, Copyright (C) 2003 Peter Brian Clements.
  
   par2cmdline comes with ABSOLUTELY NO WARRANTY.
  
   This is free software, and you are welcome to redistribute it and/or modify
   it under the terms of the GNU General Public License as published by the
   Free Software Foundation; either version 2 of the License, or (at your
   option) any later version. See COPYING for details.
  
   Loading "prueba.par2".
   Loaded 370 new packets
   Loading "prueba.vol100_50.PAR2".
   Loaded 50 new packets including 50 recovery blocks
   Loading "prueba.vol000_50.PAR2".
   Loaded 50 new packets including 50 recovery blocks
   Loading "prueba.vol050_50.PAR2".
   Loaded 50 new packets including 50 recovery blocks

   There are 30 recoverable files and 0 other files.
   The block size used was 2000000 bytes.
   There are a total of 1529 data blocks.
   The total size of the data files is 19021486678 bytes.
   
   Verifying source files:
   
   Target: "prueba.part001.rar" - found.
   ...
   Target: "prueba.part058.rar" - found.
   Target: "prueba.part059.rar" - missing.
   Target: "prueba.part060.rar" - found.
   ...
   Target: "prueba.part130.rar" - found.
   
   Scanning extra files:
   
   Repair is required.
   1 file(s) are missing.
   30 file(s) are ok.
   You have 1495 out of 1529 data blocks available.
   You have 150 recovery blocks available.
   Repair is possible.
   You have an excess of 116 recovery blocks.
   34 recovery blocks will be used to repair.

   Computing Reed Solomon matrix.
   Constructing: done.
   Solving: done.

   Wrote 16776448 bytes to disk
   ...
   Wrote 13108224 bytes to disk

   Verifying repaired files:

   Target: "prueba.part019.rar" - found.

   Repair complete.

Como podemos ver había suficientes bloques para recuperar el archivo perdido y lo ha recuperado.

temas: 

Raid 1 por software en linux

raid 1 en linux con ubuntu

Introducción

En linux existe un programa para hacer raid por software. Este se llama mdadm. En esta guia explicaré como hacer un raid 1 con dos particiones del mismo tamaño.

Detectar un raid ya construido

Puede ser que hayamos creado un raid anteriormente en otro SO y queramos montarlo en el nuestro. Para ello podemos decirle al programa que los gestiona, que escanée las particiones para descubrir los raid que hay en ella.

Para ello tendremos que ejecutar los siguientes comandos:

>> sudo apt-get install mdadm
>> sudo mdadm --assemble --scan

Hacer un raid

Lo primero será tener instalado mdadm, que es el programa que hará el raid por software. Instalamos el programa mdadm con la siguiente orden:

>> sudo apt-get install mdadm

Por ejemplo, tenemos una partición con datos (/dev/sda5) y queremos hacer un raid 1 con otra partición que tenemos sin datos (/dev/sdb1). Lo primero será desmontar las dos particiones:

>> sudo umount /dev/sda5
>> sudo umount /dev/sdb1

Comprobamos que las dos particiones tienen el mismo tamaño:

>>sudo fdisk -l
...
/dev/sda5            5227       35741   245111706   83  Linux
...
/dev/sdb1               1       30515   245111706   83  Linux
...

Ahora vamos a crear el raid con la partición que no tiene los datos originales (acordaros que si creáis varios raid, tendréis que poner un nombre a cada uno: /dev/md0, /dev/md1, ...):

>> sudo mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb1 missing
  mdadm: /dev/sda5 appears to contain an ext2fs file system
      size=245111704K  mtime=Sun Jun 21 13:01:34 2009
  Continue creating array? y
  mdadm: array /dev/md0 started.

Ahora formateamos la partición del raid. Por ejemplo, para crear un sistema de ficheros de linux lo haremos con la siguiente orden (podemos formatearlo con lo que queramos: ntfs, fat32, ext4, ...):

>> sudo mkfs -t ext4 /dev/md0

Ya tenemos el raid creado con la partición sin datos. Ahora vamos a pasar los datos, de la partición que los contiene, al raid. Para hacerlo, primero tendremos que montar las particiones:

>> sudo mount /dev/sda5 /media/datos
>> sudo mount /dev/md0 /media/raid

Ahora copiaremos todos los datos de /media/datos a /media/raid (no hay que copiar las carpetas del sistema de archivos como lost+found).

Una vez hemos llegado aquí, ya tendremos el raid creado con los datos dentro, pero solo con 1 disco. Ahora añadiremos  al raid la partición que tenía los datos (/dev/sda5) para que se reconstruya con los datos del raid:

>> sudo mdadm --manage /dev/md0 --add /dev/sda5
   mdadm: added /dev/sdb1

Se empecará a copiar la información de la partición primaria en la que hemos añadido ahora. Para ver como va el proceso podremos ejecutar el siguiente comando para ver el % que lleva: 

>> cat /proc/mdstat
  Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
  md0 : active raid1 sdb1[2] sda5[0]
        245111616 blocks [2/1] [U_]
        [>....................]  recovery =  0.3% (857600/245111616) finish=66.4min speed=61257K/sec

O tambien podemos ver el proceso de reconstrucción con este otro comando:

>> sudo mdadm --detail /dev/md0
/dev/md0:
...
    Update Time : Sun Jun 21 15:38:24 2009
          State : clean, degraded, recovering
 Active Devices : 1
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 1
 
 Rebuild Status : 13% complete
...
    Number   Major   Minor   RaidDevice State
       0       8        5        0      active sync   /dev/sda5
       2       8       17        1      spare rebuilding   /dev/sdb1

Esperaremos hasta que desaparezca esta línea. Una vez acabado este proceso, iremos al fichero /etc/mdadm/mdadm.conf y añadiremos la línea en la que indicamos las particiones queu forman el raid, quedando el fichero de la siguiente forma:

...
# by default, scan all partitions (/proc/partitions) for MD superblocks.
# alternatively, specify devices to scan, using wildcards if desired.
DEVICE partitions
# auto-create devices with Debian standard permissions
CREATE owner=root group=disk mode=0660 auto=yes
# automatically tag new arrays as belonging to the local system
HOMEHOST <system>
# instruct the monitoring daemon where to send mail alerts
MAILADDR root
# definitions of existing MD arrays
# This file was auto-generated on Thu, 21 May 2009 21:47:53 +0200
# by mkconf $Id$
ARRAY        /dev/md0 devices=/dev/sda5,/dev/sdb1

Una vez que ya tenemos creado dispositivo raid, vamos a ponerla en el /etc/fstab para que el ordenador la monte cada vez qeu se encienda. Lo primero que tenemos que saber es el UUID de nuestra particion raid. Para ello tendremos que ejecutar la siguiente orden (por ejemplo pasa saber el UUID del dispositivo md0):

>> sudo vol_id -u /dev/md0
XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX

(* En versiones ams nuevas de ubuntu podemos usar >> sudo blkid)

Una vez tenemos el UUID vamos a editar el fichero /etc/fstab, comentaremos las líneas en las que aparezcan los dispositivos que forman parte del raid (en nuestro caso /dev/sdb1 y /dev/sda5) si es que estan en el fichero (igual aparecen por su UUID, podeis saber cual es con la orden sudo vol_id -u /dev/XXX) y añadiremos la línea del nuevo dispositivo:

# /dev/sda5
#UUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX       /media/SIN_RAID1        ext3    relatime        0       2
# /dev/sdb1
#UUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX       /media/SIN_RAID2        ext3    relatime        0       2
# /dev/md0
UUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX    /media/CON_RAID    ext3    relatime    0    2

Quitar un raid

Lo primero que tendremos que saber es que particiones forman el raid. Por ejemplo, si queremos desacer el raid /dev/md1, tendremos que ejecutar el siguiente comando para saber las particiones que lo forman:

>> sudo mdadm --detail /dev/md1
/dev/md1:
...   
Number Major Minor RaidDevice State
0 8 6 0 active sync /dev/sda6
1 8 34 1 active sync /dev/sdc2

Como podemos ver, el raid esta formado por las particiones /dev/sda6 y /dev/sdc2. Una vez sabemos esto pararemos el raid y lo desmontamos con las siguientes ordenes:

>> mdadm --stop /dev/md1
>> sudo umount /dev/md1

Ahora limpiaremos las dos particiones de la configuración del raid con las siguientes ordenes:

>> mdadm --zero-superblock /dev/sda6
>> mdadm --zero-superblock /dev/sdc2

Y por último tendremos que ir al fichero /etc/mdadm/mdadm.conf y tendremos que quitar la línea correspondiente a el raid, en nuestro caso la siguiente:

ARRAY /dev/md1 devices=/dev/sda6,/dev/sdc2

Con esto ya habremos quitado el raid /dev/md1.

Comprobar el estado de un raid

Si lo que queremos es comprobar el estado de un raid, tendremos que ejecutar el siguiente comando. Por ejemplo para comprobar el estado del rad /dev/md0:

>> sudo mdadm --detail /dev/md0
/dev/md1:
        Version : 00.90
  Creation Time : Thu Jul  2 22:46:31 2009
     Raid Level : raid1
     Array Size : 271610816 (259.03 GiB 278.13 GB)
  Used Dev Size : 271610816 (259.03 GiB 278.13 GB)
  Raid Devices : 2
  Total Devices : 2
  Preferred Minor : 1
  Persistence : Superblock is persistent
 
    Update Time : Fri Jul  3 00:07:06 2009
          State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
 
           UUID : 8fe624fd:cef7961e:ce24d2e1:c686696d (local to host pcpedro)
         Events : 0.14
  
   Number   Major   Minor   RaidDevice State
       0       8        6        0      active sync   /dev/sda6
       1       8       34        1      active sync   /dev/sdc2

Problemas

Unexpected inconsistency

Al encender el ordenador, cuando esta cargando ubuntu se para el proceso y saca el siguiente mensaje:

Log of fsck -C3 -R -A -a
Sat Sep 19 13:01:06 2009
 
fsck 1.41.4 (27-Jan-2009)
D: The filesystem size (according to the superblock) is 61277926 blocks
The physical size of the device is 61277904 blocks
Either the superblock or the partition table is likely to be corrupt!
 
D: UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY.
    (i.e., without -a or -p options)
 
fsck died with exit status 4
Sat Sep 19 13:01:07 2009
----------------

Se queda parado en la consola y tengo que poner exit para que siga la carga de ubuntu.

Solución

Este problema me apareció cuando metí al raid un sistema de ficheros ya creado para no tener qeu mover los datos que contenía. Y para solucionarlo, tuve que seguir estos pasos:

  • Quitar el raid (según indico en este artículo).
  • Volverlo ha hacer mediendo al raid una partición vacía.
  • Formatear el raid.
  • Copiar los datos en el raid.
  • Y por último meter la otra particion por el raid.

Has no superblock

A veces, cuando intentas activar un raid, puede aparecer el siguiente error:

>> sudo mdadm -A /dev/md1
mdadm: /dev/sdd2 has no superblock - assembly aborted

Miramos primero que raids tenemos activados:

>> cat /proc/mdstat
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10]
md1 : inactive sda7[1](S)
      271610816 blocks
       
md_d1 : inactive sdd3[0](S)
      271610816 blocks

unused devices: <none>

Solución

Como podemos ver, hay un dispositivo que se ha creado con una de las particiones del raid md1, por eso no deja activarlo. Para solucionarlo tendremos que parar los dos raid (el que no nos funciona y el desconocido) y luego activaremos y montaremos el nuestro:

>> sudo mdadm --stop /dev/md_d1
mdadm: stopped /dev/md_d1
>> sudo mdadm --stop /dev/md1
mdadm: stopped /dev/md1
>> sudo mdadm -A /dev/md1
mdadm: /dev/md1 has been started with 2 drives.
>> sudo mount /dev/md1
temas: 

Deshabilitado el cambio de usuario al acceder a carpetas compartidas en Windows XP

Usuario invitado deshabilitado en carpetas compartidas en windows xp

Puede darse el caso de que si compartimos una carpeta en un Windows XP cuando intentamos acceder a ella desde otra máquina nos fuerza a autentificarnos con el usuario invitado (no podemos cambiar de usuario). Esto puede deberse a que por defecto en Windows XP Home Edition y en Windows XP Professional unidos a un grupo de trabajo, esta activado la interfaz de uso compartido simple de archivos.

Si la desactivamos, tendremos más control sobre los permisos concedidos a usuarios individuales. Sin embargo, para mantener seguras las carpetas y archivos deberemos tener un conocimiento avanzado de los permisos de recursos compartidos y de NTFS.

Si os aparece deshabilitado el usuario con el que os autentificáis, tendréis que hacer lo siguiente para desactivar la interfaz de uso compartido simple de archivos:

  • Entramos en Mi PC.
  • Vamos al menú Herramientas y le damos a Opciones de carpeta.
  • Seleccionamos la pestaña Ver.
  • Buscamos la opción Utilizar uso compartido simple de archivos (recomendado) y lo desactivamos.
  • Y por último le damos al botón Aceptar.

Ahora ya podremos indicarle el usuario con el que queremos autentificarnos al acceder a la carpeta compartida.

temas: 

Como grabar el Activate.iso para la Xbox 360

Grabar el activate.iso para la xbox 360

 Algunos usuarios de la xbox 360 habréis oido hablar del Activate.iso. Este dvd se usa para varias cosas:

  • Pasar a modo Vendor los lectores Samsung y así poder flashearlos.
  • Jugar a juegos de wave 3 parcheados para poder jugar con un ixtreme 1.5 y anteriores en una consola con ixtreme 1.5.1 y posteriores.

Lo podéis bajar de aquí. (La contraseña para descomprimirlo es activate.intropedro.com).

Para grabarlo solo he encontrado la forma de hacerlo con windows (Yo lo hice desde un Windows virtual en mi VirtualBox de Ubuntu). Para grabarlo utilicé el programa ImgBurn

  • Nos bajamos el programa de su páguina web: http://www.imgburn.com/
  • Lo instalamos.
  • Lo ejecutamos.
  • Nos vamos al menú Herramientas y entramos en Opciones ...
  • Seleccionamos la pestaña Grabar y en Salto de capa (Para medios DL) seleccionamos Calcular óptimo y le damos a Aceptar.
  • Entonces en la pantalla principal del programa seleccionaremos Grabar imagen en disco.
  • Seleccionamos el archivo activate.iso.
  • Ponemos 2,4x en el campo de Velocidad de escritura en el cuadro de opciones.
  • Le damos al icono de grabar.
  • Nos saldrá un mensaje diciendonos "that the image is small enough for a regular DVD R, do you want to continue anyway?". Le decimos que Si para grabarlo en un DVD de doble capa.
  • Nos aparecerá otro mensaje diciendonos: "even though the image is small enough to fit into one layer its best to write in both layers, do wou wanna go away from the norm and write in only one layer?". Le decimos que No para que la grabe en las dos caras.
  • Empezará el proceso de grabación y terminará correctamente. Ya podremos utilizar nuestro disco.

Instalar dos tomcats en la misma máquina como servicios

 Dos tomcats en la misma máquina

Introducción

Instalar dos tomcats en la misma máquina como servicios no es una tarea facil a simple vista, ya que hay que seguir unos pasos en los cuales hay que modificar el registro de windows. Los pasos a seguir son los siguientes:

  • Instalar el primer tomcat como servicio de windows.
  • Modificar unos datos del servicio.
  • Modificar unos datos del monitor del tomcat instalado.
  • Modificar el desinstalador del tomcat instalado.
  • Cambiar los puertos del tomcat.
  • Instalar el segundo tomcat como servicio.

Ahora os explico los pasos más detalladamente.

Instalación

Se realiza la instalación de primer tomcat marcando la opción tomcat/service.

Una vez realizada la instalación se va a modificar el registro del sistema, para esto hay que ejecutar la aplicación regedit. Tendremos que ir al menú inicio, darle a ejecutar y escribiremos regedit y le daremos al enter. Ahora haremos los siguientes cambios:

Modificamos el servicio

  • Vamos a la ruta HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet \Services\ y le cambiamos de nombre a Tomcat5 por otro cualquiera, por ejemplo Tomcat5_primario.
  • Vamos a HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet \Services\Tomcat5_primario y cambiamos el valor de la variable DisplayNameModificar de Apache Tomcat al que queramos, por ejemplo por Apache Tomcat Primario.
  • Vamos a HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet \Services\Tomcat5_primario y cambiamos el valor de la variable ImagePath del valor c:\tomcat\bin\tomcat5.exe //RS//Tomcat5 por  c:\tomcat\bin\tomcat5.exe //RS//Tomcat5_primario. (Cuidado! tiene que ser el mismo nombre que le pusimos a la carpeta del primer paso).
  • Ahora iremos a HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet \Services\Tomcat5_2\Enum y cambiaremos el valor de la variable 0 de Root\LEGACY_TOMCAT5\0000 por otro como por ejemplo Root\LEGACY_TOMCAT5_PRIMARIO\0000.
  • Ahora dependiendo si estamos en un Windows de 32 bits o de 64 bits tendremos que hacer cosas diferentes:
    • Para un windows de 32bits haremos lo siguiente:
      • Vamos a HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Procrun 2.0 y renombraremos al carpetatomcat5 por otra como por ejemplo tomcat5_primario.
      • Por último iremos a HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\tomcat y renombraremos la carpeta 5.5 por otro nombre, por ejemplo 5.5_primario.
    • Para un Windows de 64bits haremos lo siguiente:
      • Vamos a HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Apache Software Foundation\Procrun 2.0 y renombraremos al carpeta tomcat5 por otra como por ejemplo tomcat5_primario.
      • Por último iremos a HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Apache Software Foundation\tomcat y renombraremos la carpeta 5.5 por otro nombre, por ejemplo 5.5_primario.

Modificamos el monitor del tomcat

Para windows de 32 bits:

  • Nos movemos a HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run y renombramos la variable ApacheTomcatMonitor por otro nombre, por ejemplo ApacheTomcatMonitorPrimario y le cambiamos el valor de "C:\tomcat\bin\tomcat5w.exe" //MS//Tomcat5 por el nuevo "C:\tomcat\bin\tomcat5w.exe" //MS//Tomcat5_primario. (Cuidado! el último nombre tiene que ser igual al nombre que le pusimos en el primer paso de la edición del servicio)

Para windows de 64 bits:

  • Nos movemos a HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run y renombramos la variable ApacheTomcatMonitor por otro nombre, por ejemplo ApacheTomcatMonitorPrimario y le cambiamos el valor de "C:\tomcat\bin\tomcat5w.exe" //MS//Tomcat5 por el nuevo "C:\tomcat\bin\tomcat5w.exe" //MS//Tomcat5_primario. (Cuidado! el último nombre tiene que ser igual al nombre que le pusimos en el primer paso de la edición del servicio)

Modificamos el desinstalador del tomcat

Para Windows de 32 bits:

  • Vamos a  HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\ y renombramos Apache Tomcat 5.5 por Apache Tomcat 5.5_2.
  • Vamos a  HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Apache Tomcat 5.5 y cambiamos el valor de la variable DisplayName de Apache Tomcat 5.5 (remove only) por el de Apache Tomcat 5.5 (remove only) 2 (Asi sabremos cual es cual en la lista de programas para desinstalar).

Para Windows de 64 bits:

  • Vamos a  HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\ y renombramos Apache Tomcat 5.5 por Apache Tomcat 5.5_2.
  • Vamos a  HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Apache Tomcat 5.5 y cambiamos el valor de la variable DisplayName de Apache Tomcat 5.5 (remove only) por el de Apache Tomcat 5.5 (remove only) 2 (Asi sabremos cual es cual en la lista de programas para desinstalar).

Cambiamos los puertos para que no colisionen

  • Modificar en el fichero server.xml el valor de los siguientes puertos por otros:
...
<Server port="8005" shutdown="SHUTDOWN">
...
<Connector port="8080" maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true"
...
<Connector port="8009" enableLookups="false" redirectPort="8443" protocol="AJP/1.3" />
...

Ya tenemos todos cambiado, ahora podremos instalar el segundo tomcat con todo por defecto.

temas: