Bienvenidos

Saludos y una cordial bienvenida a todos, gracias por el interés en mi site, mi nombre es Rolando F. Blanco C:. Tengo más de 17 años trabajando en el mundo de la informática, y después de mucho andar me encontré con la oportunidad de probar GNU/Linux.

Habiendo iniciado con Corel Linux, pasé por distribuciones como Suse, Red Hat, Knoppix, Gnoppix, Debian y otras, hasta que encontré Ubuntu.

Para ser totalmente sincero, mi opinión es que todas las distribuciones son buenas, porque finalmente todas son Linux, yo me “enganche” a Ubuntu, porque simplemente funciona, así tengo todo el poder de GNU/Linux, con una facilidad de uso que me permite en todo momento utilizar mi computador como una herramienta de trabajo, el computador trabaja para mi y no lo contrario. No tengo que estar pendiente de virus, de si tengo software legal o si funciona correctamente o no.

Me he clasificado en este mundo Linux como un “Padawan” y creo que lo seré eternamente, pues es impresionante como todos los días aprendo algo nuevo. Sin duda alguna este es un mundo de continuo aprendizaje.

Solo espero que la información que ire publicando acá, sea de utilidad para algunos y de distracción para otros.

En este sitio, publicaré varias secciones, una dedicada a Ubuntu y otras a reflexiones personales y temas variados. Como queda claro que no soy un GURU ni GUIA para nadie, los invito a participar y no olviden:

“…no me pidas que te guie, pues no se si podre llevarte a tiempo, no me pidas que te siga pues no se si podré seguirte el paso, mejor caminemos juntos y veremos que tan lejos llegaremos como hermanos”

Certificados SSL (S/MIME) para tus correos (iPhone y iPad)

Hola, saludos “Amigos Invisibles”

En esta oportunidad, quiero compartir con todo, una breve y humilde explicación para que aprendan a crear y usar sus certificados SSL para los clientes de Correo y para sus dispositivos mobiles.

Seguramente consideren esto innecesario, sin embargo, les comento que cualquiera puede lograr enviar un correo en su nombre con tan sólo unos pocos pasos y conocimientos, es por ello y considerando las debilidades del protocolo de envio de correos (SMTP – Simple Mail Transfer Protocol) Que hoy día es recomendable la creación y configuración de un Certificado SSL (S/MIME) que nos permita firmar y/o encriptar información sensible entre uno o mas destinatarios y nuestra cuenta origen.

NOTA MUY IMPORTANTE: Todos lo que vamos a hacer, deberá hacerse con el MOZILLA FIREFOX, no lo intente con Internet Explorer/Safari por inseguros, tampoco con CHROME, porque NO me funcionó al intentar instalar los certificados, es preferible hacerlo con Firefox y luego los exportamos.

Para ello, debemos contar con un Certificado, este puede ser el de su preferencia, yo he encontrado y escogido los de COMODO.COM . Una vez accedas a ese link, debes seleccionar donde dice FREE DOWNLOAD

Una vez hagas click allí, deberás llenar un formulario:

Fijate bien, que existe la colocación de un Password especial, este es de suma importancia, pues será el único con el que podrás Revocar la valides del Certificado en caso de que se comprometa.

No la olvides, escribela y guardala en lugar seguro (tu cartera no es un lugar seguro), entonces el sistema te enviará varios e-mails.

El primero de los e-mails, te pedira que hagas click en un enlace, para confirmar que haz colocado una cuenta de correo válida.

El segundo correo, es tan sólo una bienvenida y recomendaciones de uso de tus certificados.

El tercero, te pedía que que accedas a otro link o enlace, en el cual encontrarás entonces que te solicitan un correo (el mismo al que le estas generando el certificado) y una clave.

NOTA: NO ES LA CLAVE DE REVOCACIÓN, es una clave de recolección del correo, la cual va especificada en el mismo correo que te acaba de llegar. Copiala y Pegala en el formuario.

Entonces se procederá a instalar tu certificado, con llaves Públicas y Privadas en tu equipo, de hecho, instalará los Certificados propiamente en tu Navegador FIREFOX.

Luego de que esté listo, nos toca entonces exportar nuestros certificados, para ello nos metemos en el Firefox en las preferencias del Firefox, allí seleccionas Avanzadas y luego la Pestaña “Cifrado”

Allí existe entonces un boton que dice “Ver Certificados” hagamos click en este y se abrirá una ventana nueva, donde nos mostrará los certificado que tengamos instalados, en esa ventana encontraremos unas pestañas, tenemos que seleccionar es la que dice “Sus Certificados”.

Alli puedes seleccionar tu certificado (yo tengo dos instalados) y haces click en Resguardar, entonces te aparecerá una ventana donde indicaras un nombre de archivo, la extensión o tipo de archivo, el navegador lo establecerá sólo.

Este es el archivo que deberás cuidar y atesorar, fijate al crearlo te perdira que le pongas una clave, pues alli van tus Llaves Privadas, por favor NO OLVIDES LA CLAVE, ya que la necesitarás cada vez que quieras instalar el certificado.

Ahora bien, si quieres instalarlo en tu Celular, lo único que tienes que hacer es enviarte el archivo por correo, y si tienes un iPhone por ejemplo, te pedirá instalar el Certificado,

entonces te pedirá la clave

 

y luego podrás acceder a la parte del telefono en “Ajustes” > “Correos, contactos, calen.”

 

 

 

 

Una vez allí, selecciona tu cuenta de correo, al entrar en ella entonces aparecerá nuevamente el nombre de la cuenta, seleccionalo.

 

Esto te llevará a la parte donde colocas la clave, si te fijas al final, está una opción “Avanzado”, seleccionala

Verás como aparecerá ahora S/MIME, activalo, y luego selecciona “Firmar”

Veras entonces que aparecerá tu certificado, seleccionalo.

Cumplido el proceso de creación, descarga, resguardo y activación de tu certificado en tu cliente de correos, entonces ahora en adelante, los correos que salgan desde tus cuentas activadas con el certificado, saldrán firmados digitalmente, además puedes hasta cifrar información con otras personas que cuenten con Certificados Digitales.

En caso de querer colocar tu Certificado en tu cliente de correo, tan sólo tienes que buscar en las opciones del mismo, en la sección de seguridad, y allí selecciona entonces el archivo que generamos y que debes cuidar con mucho recelo.

Espero que esta breve explicación le pueda servir a alguien, y le recuerdo a mis lectores, que esta información la he publicado, sólo para recordarla y como futura referencia a futuro.

Saludos!

 

Permisos de Archivos en Linux

Hace pocos días, una amiga me preguntó acerca de como funcionaba eso de los permisos de los archivos en Linux, por ello le pasé el Link de la mejor y más fácil información que encontré a través de GUIA UBUNTU, pero al escuchar de parte de ella que se le hacia más rápido encontrar mi página (debe ser que la tiene en favoritos) entonces procedí a publicarla acá.

El Enlace original de tan extraordinaria labor es http://www.guia-ubuntu.org/index.php?title=Sistema_de_ficheros Donde podrán ver el articulo original.

Permisos

El sistema de permisos de Linux es simple y efectivo. Existen tres tipos de permisos:

  • Ejecución: Si es para un archivo será ejecutable y si es para un directorio significa que podemos pasar por él. Es representado por una X.
  • Lectura: Si es para un archivo significa que podemos leerlo y si es un directorio es que podemos leerlo también. Es representado por una R.
  • Escritura: Si es para un archivo será que podemos escribir en él y si es para un directorio significa que podemos crear ficheros dentro de él. Es representado por una W

También existen tres tipos de roles sobre los que se aplican estos permisos. Un archivo pertenece a un usuario y a un grupo:

  • Usuario: El propietario del archivo.
  • Grupo: Grupo al que pertenece el archivo.
  • Otros: Los demás usuarios.

Veamos un ejemplo:

$ ls -l pg_backup.sh
-rwxr-x---  1  pepito usuarios  453  2005-02-17  09:35  pg_backup.sh

El archivo pg_backup.sh pertenece al usuario pepito y al grupo usuarios. Los permisos que tiene para el usuario son rwx lo que significa que el usuario pepito puede leer el archivo, escribir en él y ejecutarlo. Por la extensión vemos que es un script, por lo que es normal que se pueda ejecutar. Para el grupo tiene los permisos r-x. Eso significa que los miembros del grupo usuarios pueden leer el archivo y ejecutarlo, pero no modificarlo. Los permisos para los demás usuarios (otros) son , por lo que un usuario que no sea pepito ni pertenezca al grupo usuarios no podrá leer, escribir ni ejecutar el archivo.

Cambio de permisos
Interfaz gráfica

Podrás cambiar los permisos de forma gráfica; sólo tienes que darle con el botón derecho del ratón sobre el directorio o el archivo al que quieras cambiar el permiso y seleccionar la pestaña permisos.

Opciones gráficas de permisos
Consola

El comando chmod se usa para designar los permisos de un archivo. Sólo el dueño del archivo y el root pueden cambiar los permisos. La sintaxis de chmod es:

chmod {a, u, g, o} {+, -} {r, w, x} nombre del archivo

donde:

u: corresponde al dueño del archivo
g: corresponde al grupo
o o a: corresponde al resto de los usuarios, a para todos (all) y o para otros (others)

Para autorizar o desautorizar el permiso:

+: autoriza
-: desautoriza
=: resetea los permisos

Los tipos de permisos son:

r: lectura
w: escritura
x: ejecución

El comando chmod también acepta otros valores para cambiar los permisos. Es probable que hayas visto algo como:

sudo chmod 751 [nombre del archivo]

Es otro modo de gestionar los permisos; de forma binaria. El sistema es muy simple y cómodo: se considera un bit para lectura (r) otro para escritura (w) y otro para ejecución (x). Las combinaciones posibles son ocho y se muestran en la tabla siguiente:

Octal r w x
0 0 0 0
1 0 0 1
2 0 1 0
3 0 1 1
4 1 0 0
5 1 0 1
6 1 1 0
7 1 1 1

Un uno equivale a activar y un cero a desactivar los permisos. El equivalente octal de los permisos se aplica en orden: dueño, grupo y cualquiera (u,g,a). Entonces en el ejemplo anterior el valor 751 actúa:

  1. Cediendo todos los permisos al dueño.
  2. Cediendo permiso de lectura y ejecución al grupo.
  3. Cediendo permiso de ejecución a cualquiera.
Cambio de propietario/grupo
Interfaz gráfica

De forma gráfica solamente podrás cambiar el grupo al que pertenece un archivo. Para hacerlo tienes que darle con el botón derecho del ratón sobre el directorio o el archivo al que quieras cambiar el grupo y seleccionar la pestaña permisos.

Opciones gráficas de permisos

Para poder cambiar también el usuario al que pertenece el archivo deberá usar la consola. Mira más abajo para saber como hacerlo.

Consola

El cambio de propietario se hace empleando el comando chown :

chown (propietario):(grupo) (archivo)

Pondremos un ejemplo, supongamos que el usuario gaccardo desea darle una copia del archivo test.sxw al usuario pigu, el usuario pigu debe ser propietario de su copia para poder modificarla. Para esto debe cambiar el propietario y el grupo utilizando el comando chown.

Haciendo “ls -l” nos encontramos con un fichero asi:

-rwx-rw-r-- gaccardo gaccardo 435 sep 4 11:38 test.sxw

Por lo que en este caso el usuario gaccardo (actual propietario) deberá hacer :

[gaccardo@servidor priv]chown pigu:pigu test.sxw

Si vuelve a hacer “ls -l” encuentra que ha cambiado el actual propietario

-rwx-rw-r-- pigu pigu 435 sep 4 11:38 test.sxw
Ver también
Artículo en vídeo

Aquí puedes ver lo explicado en formato vídeo.

TIPS de Seguridad: Complejidad de las Claves o Contraseñas

TIPS de Seguridad para mitigar el riesgo de ser víctima de un Hacking a tus cuentas de correo y redes sociales:

Hoy día, los algoritmos para descifrar contraseñas son cada vez más efectivos y rápidos, aún más al considerar la potencia de los computadores y su incremento exponencial determinado por la Ley de Moore hacen que cada vez la seguridad sea mas insegura.

Para solventar esto, y mitigar el riesgo de ser víctimas de que nos descifren nuestras claves, entonces debemos incrementar la longitud y complejidad de las claves usadas.
El tiempo necesario para descifrar una contraseña se basa en la siguiente formula:

Dónde:

  • Número de posibles caracteres: Es el número de dígitos o caracteres que nos permite introducir. Algunos servicios sólo permiten letras, esto nos daría 26 caracteres en minúsculas y 26 caracteres en mayúsculas, si le agregamos números, entonces se aumenta 10 caracteres, si el sitio permite símbolos estaríamos hablando de más o menos 30 caracteres imprimibles más. Lo cual arroja un resultado aproximado de 92 caracteres en total.
  • Longitud de la contraseña: El tamaño de la clave o contraseña que se quiere descifrar. Ejemplo “pato” es una contraseña con 4 caracteres de longitud.
  • Cálculos por Segundo: Es el número de contraseñas aproximado que una computadora común puede procesar en un segundo. En nuestro ejemplo sería 10,000,000 de operaciones por segundo.

 

Aplicando lo antes expuesto, entonces podemos determinar que una clave como la palabras “SEGURO” puede ser descifrada aproximadamente en unos 30 Segundo, mientras otra como “miCl4v3es@segur4″ se toma unos 193 Trillones de Años.

 

 

Para lograr obtener una clave segura, una de las reglas fundamentales es elegir una buena contraseña y estas se basan en su longitud y en la variedad de los caracteres que la componen, cuanto mayor sea su tamaño y más heterogéneos los elementos que la integran, más difícil será que la descifre un eventual atacante.

Una buena práctica consiste en crear claves de al menos 12 caracteres de longitud, compuesta por letras, dígitos y símbolos especiales.

Para tener en cuenta…
Hay muchos usuarios que optan por utilizar la misma contraseña para varias de sus aplicaciones y servicios, evitando así tener que recordar varias contraseñas diferentes, sin embargo esto aumenta el riesgo de que un atacante robe su identidad digital empleando diversos métodos.

Es imprescindible determinar la importancia de las cuentas a proteger. Las contraseñas de acceso al equipos, al correo, a la banca electrónica y a cualquier aplicación que contenga información confidencial, deben ser únicas para cada servicio, de mayor complejidad y deben sustituirse periódicamente.

1.- Cómo proteger tus cuentas:  Es importante mantener en secreto tus datos de cuenta. Nadie, excepto tú debería saber tu contraseña y/o respuesta secreta; ni tu hermano, ni tu mejor amigo.

Mis humildes sugerencias

Cambia tu contraseña regularmente
.

Evita usar la misma contraseña en otros sitios, tratando que sea diferente a la que utilizas en tu correo electrónico, twitter, facebook, gmail, google+, etc.

Utiliza combinaciones, es recomendable el uso de mayúsculas y minúsculas combinadas con números y signos de puntuación (en especial aquellos que son comunes en su ubicación en el teclado sin importar en que idioma) al momento de crear tu contraseña e intenta que no guarde relación con tu nombre, domicilio, gustos musicales o cualquier dato que pueda vincularse contigo. Te recomiendo el uso de oraciones completas y que sus palabras esten en varios idiomas, de esta forma para intentar descubrirla por ataques de fuerza bruta tardarían miles de años con un supuesto inmenso poder computacional

No abras correos anónimos, mucho menos si te pide alguna confirmación de cuenta en cualquier servicio electrónico, en ningún momento el Los Administradores de estos servicios te enviara un correo pidiendo que ingreses tus datos en ninguna pagina, o correos de confirmación en la cual este involucrada tu contraseña de ingreso. Esto no se usa a fin de evitar los ataques de Phishing.
Evita contraseñas como: “Dios”, “Amor”, “Sexo”, “Pasión”, “Rojo”,”1234567″, “password”, “P4ssw0rd”, “Clave”, “abc123″, “admin”, inclusive la combinación entre estas y/o números. En caso contrario entraras de lleno al no tan selecto grupo de usuarios con las claves mas fragiles y propensas a ser descubiertas.
Cuida tu Equipo: No instales aplicaciones descargas de la Internet de sitios que no sean de tu extrema confianza, evita el uso de software ilegal, si usas MacOS X, descarga aplicaciones de la AppStore, si usas Linux, instala aplicaciones sólo de repositorios de confianza y nada que haya podido ser modificado por algún desconocido.

Ahora bien, si realmente estás preocupado por si tu contraseña es segura o no, o si estás completamente seguro de que lo es, te invito a que visites entonces http://howsecureismypassword.net/

 

 

Instalando servico ‘M$-ClickOnce’ en Ubuntu + Apache2 (Instalaciones, Actualizaciones y Ejecución de Aplicaciones Windows via WEB)

Para una de las empresas con que laboro, se ha hecho necesario mejorar la forma en que despliegan sus aplicaciones Stand Alone que han sido desarrolladas en casa, para ello me han solicitado que establezca un servidor M$-IIS, a lo que me negué rotundamente (claro esta con la alternativa en la mano) y les propuse usar un Ubuntu Server 10.04.3 con Apache2.

Ellos no tuvieron objeción alguna, para lo que investigaron los desarrolladores, y entendieron que si se podía usar otro motor WEB distinto al IIS. Por lo que comenzaron a modificar sus aplicativos e instaladores a fin de que funcionaran correctamente.

A continuación, y como siempre, para que no se me olvide, dejo anotado que fue lo que hicimos…

En primer lugar procedimos a la instalación, común de un servicio Apache2 sobre el equipo Ubuntu. para ello como de costumbre:

sudo apt-get update && sudo apt-get install apache2

Luego de tener listo el apache, se crearon las carpetas dentro del directorio /var/www donde se colocarían los instaladores de cada aplicativo

sudo mkdir -p /var/www/MiAplicacion

y luego se definió un un archivo .htaccess al cual le colocaremos el contenido referente al aplicativo a instalar.

touch /var/www/MiAplicacion/.htaccess

Agregamos al archivo creado (.htaccess) el siguiente contenido: (Pudes hacerlo con vim, nano, o lo que mas te guste, yo uso vi, por eso lo hice asi:

sudo vi /var/www/MiAplicacion/.htaccess

Pulsa la tecla “i” y entraras en modo edición, escribe lo siguiente:

AddType application/x-ms-application application
AddType application/x-ms-manifest manifest
AddType application/octet-stream deploy
AddType application/x-msdownload dll

Una vez escrito todo, procedes pulsando la tecla <ESC> del teclado, puedes hacerlo par de veces, esto hará que el vi entre en modo comandos, para invocar los comandos de Guardar y Cerrar pulsaras, dospuntos:” y luego las letras wq y finalmente enter, recuerda que todo debe ser en minúsculas.

:wq

Entonce, tendras nuevamente el prompt del BASH (Interprete de Comandos), alli nos toca ahora tan solo incluir los respectivos MIME para que el APACHE interprete correctamente las extensiones a publicar, para ello procedemos editando el archivo /etc/apache2/mods-available/mime.conf

vi /etc/apache2/mods-available/mime.conf

Dentro de este archivo procederemos a colocar el siguiente contenido, de la misma forma que lo hicimos antes:

## MIME incluido para que funcione el Apache como IIS en el Clickonce
 AddType application/x-ms-application                   .application
 AddType application/x-ms-manifest                      .manifest
 AddType application/octet-stream                       .deploy
 AddType application/octet-stream                       .msu
 AddType application/octet-stream                       .msp

###

Habiendo hecho todo esto, tan sólo nos toca reiniciar el servicio de Apache2 y pedirle a nuestros desarrolladores que coloquen los instaladores que generan ellos con el Visual Studio en el directorio /var/www/MiAplicacion   y  Listo.

De ahora en adelante, instalar, actualizar y ejecutar la aplicación será mucho mas fácil y rápido para aquellos que aun dependen de ello. (Espero que pronto se vaya todo a Web)

Cómo crear imágenes de disco VMware en Ubuntu con qemu?

Con frecuencia, estoy aprovisionando nuevos equipos virtuales, y normalmente luego de hacerlo, el usuario funcional, recuerda que no me explicó que allí, además de los servicios se almacenarían cierta cantidad de archivos, que sobrepasan el espacio originalmente considerado en el FileSystem.

En consecuencia, me toca colocarle mas disco, lo que mas me molesta de esto, es que siempre olvido el comando para crear el disco, en consecuencia procederé a documentarlo acá. Así si se me olvida, siempre tendré un sitio conocido donde recordarlo.

El comando para crear discos en qemu es el qemu-img, este  se le deben pasar los parámetros que permitirán indicarle que tipo y características tendrá la imagen de disco a crear.  El siguiente ejemplo, muestra como crear un disco de 10Gb tipo vmdk

# qemu-img create -f vmdk mynewdisk.vmdk 10G

Esta unidades .vmdk que crea el qemu, si mal no recuerdo haber leído, son versión 3, muchos me preguntan que porque uso .vmdk si ese es el formato nativo de VMware. Resulta que estas imágenes .vmdk pueden ser usadas tanto en por qemu como por VirtualBox y logicamente por VMWare (workstation y/o ESXi) lo que me permite en caso de tener que ante un desastre, restaurar el servicio, hacerlo mucho mas rápido, pues la portabilidad permite ofrecer rápidas respuestas y soluciones.

 

Como configurar un servidor Web que atienda por nombre del URL (Ubuntu+Apache2+VirtualHost)

Saludos amig@s todos,

Hace unos dias atras, un buen amigo y colega me pedió ayuda para entender como hacer un Name Virtual Host con el Apache2 en su servidor Ubuntu. Por lo que al igual que en otras oportunidades he preferido hace una breve explicación de como al menos lo hago y lo entiendo yo. Así pues acá dejo una breve explicación. NO es un HOWTO es simplemente como he entendido.

NOTA IMPORTANTE: Asumo que usted tiene instalado Apache2 en su servidor, de no ser así recuerde ejecutar en su consola: sudo apt-get install apache2

Es importante definir que es un Name Virtual Host, cuando accedemos a una pagina web, es decir cuando colocamos el URL o nombre del sitio en nuestro navegador, este luego de la resolución de nombre, procede a acceder al servidor WEB por el puerto que corresponda (normalmente 80 y 443). Lo importante del proceso es que nuestra maquina le envia como pregunta al servidor web, la URL o el nombre del sitio que esta buscando.

Este nombre lo ve el servicio de Apache2, y es gracias a esto que podemos definir que pagina servir al momento de que accedan.

Normalmente todo esto se configuraba antes en el archivo /etc/httpd/httpd.conf . En Ubuntu ahora eso ha cambiado, pues ahora el archivo de configuración es el /etc/apache2/apache.conf

Sin embargo, para evitar accidentes y la mitigar la probabilidad de dañar el archivo en cuestión, ahora tambien se crearon los directorios:

  • /etc/apache2/sites-available
  • /etc/apache2/sites-enabled

En el /etc/apache2/sites-available/ se encuentran los archivos de configuración para cada sitio que queramos hospedar, por defecto existe un archivo llamado default y su contenido suele ser:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /var/www/>
           RewriteEngine on
           RewriteBase /
           RewriteCond 5[REQUEST-FILENAME] 1-f
           RewriteCond 5[REQUEST-FILENAME] 1-d
           RewriteRule 69.804 index.php/q=41 [L,QSA]
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog /var/log/apache2/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog /var/log/apache2/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>

Como podemos ver, el contenido del archivo es en sí una declaración de VirtualHost, que comienza indicando:

'<VirtualHost *:80>' = HostVirtual por todas las interfaces por el puerto 80
'DocumentRoot /var/www' = La raíz del los documentos de este sitio
'<Directory /var/www/>'= En el directorio tal se mostrará

Ok, entonces para esto sirve para que toda petición WEB que venga por el puerto 80 (HTTP) muestre el contenido del directorio /var/www

Para poder hacer entender al Apache2 que debe entregar otra página distinta a /var/www hacemos lo siguiente. Supongamos que vamos a hospedar una pagina web de un sitio llamado CONTOSO.ORG entonces lo primero que debemos hacer es crear nuestro directorio donde se colocarán los archivos de este sitio web. Para ello hacemos:

rolando@webserver: ˜$ sudo mkdir -p /var/www/contoso

rolando@webserver: ˜$ sudo touch /var/www/contoso/index.html

rolando@webserver: ˜$ sudo echo “HOLA MUNDO” > /var/www/contoso/index.html

Con esto hemos creado entonces un directorio en el cual colocar los archivos que queremos servir a el sitio contoso.

Ahora nos toca hacer que el Apache2 lo entienda cuando llamamos a un sitio con ese nombre y que entregue entonces la pagina que hemos creado.

Para ello lo primero que haremos es copiar el archivo default con el nombre de contoso para que no se nos olvide y sea mas facil identificarlo, para ello hacemos:

rolando@webserver: ˜$ sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/contoso

Luego editamos el contenido del mismo, para hacer las siguientes modificaciones:

"
<VirtualHost *:80>
        ServerAdmin webmaster@localhost
     ServerName contoso.org
 ServerAlias www.contoso.org
        DocumentRoot /var/www/contoso

        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/contoso/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog /var/log/apache2/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog /var/log/apache2/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>
"

Una vez lista las modificaciones realizadas en negritas, debemos entender que aunque hayamos creado el archivo contoso dentro de /etc/apache2/sites-available/ este está disponible mas no está habilitado.

Entonces debemos habilitarlo, para ello tenemos que crear un enlace simbolico que apunte del directorio de disponibles (/etc/apache2/sites-available/) al directorio de sitios habilitados (/etc/apache2/sites-enabled/) para conseguir esto ejecutaremos:

rolando@webserver: ˜$ sudo ln -s /etc/apache2/sites-available/contoso /etc/apache2/sites-enabled/

Habiendo creado el enlace simbolico de este nuevo sitio, procedemos entonces a reiniciar el servicio de apache2 con:

rolando@webserver: ˜$ sudo /etc/init.d/apache2 restart

Si todo lo hemos hecho bien, entonces nuestro sitio web atenderá ademas de la pagina por defecto con los archivos de /var/www/ cuando le pregunten a este por contoso.org o por www.contoso.org entregará las paginas existente en /var/www/contoso

Espero que esta breve explicación, sirva como incentivo para seguir revisando, aprendiendo y entendiendo cada vez mas el funcionamiento del Apache Server en un Servidor de Ubuntu server.

Claro debe quedar que podemos tener tantos sitios virtuales como nuestro servidor soporte, y además que para que funcione todo bien, los servidores DNS deben estár resolviendo correctamente el sitio y apuntando a nuestro servidor Apache2.

Si no tienes control sobre tus DNS Servers, puedes probar temporalmente colocando las entradas en el archivo /etc/hosts

Cómo montar recurso compartido remoto de Windows en Linux

Como ya he escrito anteriormente, en GNU/Linux existe toda una jerarquía de archivos, que pretende organizar los archivos de nuestro sistema, recordemos tambien que para Linux existe tan sólo tres tipos de archivos, Los Especiales, Los Normales y Los de Directorio.

El montaje via SMB o CIFS, pretende conectar un recurso compartido por Windows como una carpeta (Archivo de Directorio) y poder acceder al mismo en una carpeta local dentro de nuestra jerarquia.

Utilizaré el comando mount para montar a distancia el recurso compartido de Windows en Linux de la siguiente manera:

Procedimiento para montar recurso compartido de Windows a en jerarquía Linux

1) Asegúrese de que tiene la siguiente información:
–> Windows nombre de usuario y contraseña para acceder a nombre del recurso compartido
–> NombreDeRecursoCompartido (por ejemplo, / / ​​server / share) o la dirección IP
–> El nivel de raíz el acceso de Linux

2) Ingresar al equipo Linux como usuario root (o utilizar el comando su o sudo)

3) Crear el punto de montaje requerido:

# mkdir -p /ruta/donde_montar

4) Utilice el comando mount de la siguiente manera:

# mount -t cifs //windowsserver/recursocompartido -o username=nombreusuariowindows,password=PasswordUsuarioWin /ruta/donde_montar

Utilice el comando siguiente si usted está usando una versión antigua, como Red Hat Enterprise Linux <= 4 o Debian <= 3:

# mount -t smbfs -o username=nombreusuariowindows,password=PasswordUsuarioWin //windowsserver/recursocompartido /ruta/donde_montar

Donde,

  • -t smbfs: Tipo de archivo del sistema que se monte
  • -t cifs: Tipo de archivo del sistema que se monte (Nueva versión del smbfs)
  • -o: son las opciones pasadas al comando mount, en este ejemplo que había pasado dos opciones. El primer argumento es el nombre de usuario  (nombreusuariowindows) y el segundo argumento es una contraseña para conectarse.
  • //windowsserver/recursocompartido: Windows 2000/NT nombre del recurso compartido en Windows.
  • /ruta/donde_montar  punto de montaje (para compartir el acceso después del montaje)

Buscando entre archivos

En estos días, me preguntaron acerca de como hacer una busqueda de un contenido desde BASH, por lo que se me ocurrio escribir algo mas completo acerca del tema en mi Blog, sin embargo, me tome la libertad de googlear a ver si alguien ya lo había escrito, y encontré entonces lo que a continuación publico.

Aprendí de acá unos truquitos que espero les sirvan:

Autor: Guido Shocher, LinuxFocus
Traducido por Ruben Sotillo
Copyright pertenece al autor

Buscando ficheros por nombres

Probablemente puedes recordar este problema: Tenías algún tipo de fichero y no podías recordar donde lo pusiste.

Aquí es donde el comando find viene a ser útil. ¿Cómo usarlo? find viene, por supuesto, con un extenso man page pero veamos unos “casos típicos”: Buscar un archivo llamado lostfile.txt, recorriendo el árbol de directorios comenzando en el directorio actual:

find . -name lostfile.txt -print

find acepta también wildcards. Recuerda colocar entre comillas los wildcards, de lo contrario el shell no los reconocerá como tales. Aquí un ejemplo:

find . -name “lost*” -print

Este comando puede ser un poco lento cuando necesites buscar en un árbol de directorios muy grande. Aquí el comando locate puede ayudar. Este realmente no busca directamente un archivo en el sistema de ficheros. Busca en una base de datos. Es bastante más rápido pero la base de datos podría estar desactualizada. En algunas distribuciones la base de datos localizada es actualizada cada noche pero puedes, por supuesto, correr el comando updatedb manualmente de vez en cuando para actualizarla. locate realiza búsquedas de subcadenas.

locate lostfile

Este localiza los ficheros lostfile.txt o mylostfile.txt, etc…

Hasta ahora estabamos buscando ficheros de los cuales teníamos una remota idea de sus nombres. Tal vez el nombre del archivo no era lostfile.txt sino lastfile.txt o leastfile.txt o lostfile.txt o Lostfile.txt o lostfile.text y no puedes recordar exactamente el nombre. ¿Cómo podrías encontrar el archivo aún? en este caso podrías usar una utilidad para encontrar ficheros que tolera fallas en la escritura del nombre llamada ftff (fault tolerant file find). Esta utilidad busca el archivo y permite un número de “errores en la escritura”. Este comando encontraría los nombres mal escritos de los ficheros:

ftff lostfiles.txt

El número permitido de errores en la escritura del nombre depende del largo del mismo pero también puede establecerse con la opción -t. Para permitir un máximo de 2 errores y usar también un wildcard, sólo tipea:

ftff -t2 “lostfiles*”

ftff es un programa de mi autoria y forma parte de un paquete llamado whichman-1.4 que puede ser bajado de
sunsite.unc.edu/pub/ Linux/apps/doctools/whichman-1.4.tar.gz

Algunas veces te gustaría encontrar todos los ficheros en el árbol de directorios que no contengan cierta cadena. Por ejemplo todos los ficheros excepto .o y .c. Aquí están un par de posibilidades para hacerlo::

find . ! -name “*.o” ! -name “*.c” -print
find . -print | fgrep -v ‘.o’ | fgrep -v ‘.c’
si tienes la versión gnu de find: find | fgrep -v ‘.o’ | fgrep -v ‘.c’
find | egrep -v ‘.[oc]‘

Obteniendo una vista completa del sistema de ficheros

Algunas veces te agradaría tener una visión total del sistema de ficheros frente a ti. Por ejemplo: Tienes un nuevo CD y quisieras ver que es lo que tiene. Podrías usar solamente ls -R. Personalmente prefiero por fácil lectura uno de los siguientes: tree dibuja un diagrama de árbol (sunsite.unc.edu/pub/Linux/utils/file/ tree-1.2.tgz ).

tree
o con nombres largos de archivo: tree -fF

También está por supuesto, el viejo, pero buen find. La versión GNU de find, que viene usualmente con Linux, también tiene la posibilidad de cambiar el formato de impresión para imprimir, por ejemplo el tamaño del archivo con el nombre:

find . -ls
find . -print o con gnu find: find
find . -printf “%7s %pn”

Hay también un pequeño programa en perl usando el comando ls que hace cosas similares. Se puede bajar de aquí: lsperl. Puedes encontrar probablemente muchas más herramientas para ver ficheros pero ésta es, para la mayoría de los casos, suficiente.

Encontrando ficheros por contenido (buscando cadenas de texto en ficheros)

La utilidades standard para buscar cadenas de texto en ficheros son grep/egrep para la búsqueda de expresiones regulares y fgrep para buscar cadenas literales. Para buscar una expresión en todos los ficheros del directorio actual sólo tipea:

egrep -i “search expression” *

Para buscar cadenas en todos los ficheros de todo el árbol de directorios puedes combinar el comando find con otro comando de búsqueda de archivo, por ejemplo: egrep. Esto puede ser realizado de muchas formas:

egrep -i “expression” `find . -type f -print`
find . -type f -exec egrep -i “expression” /dev/null {} ;
find . -type f -print | xargs egrep -i “expression”

Si encuentras ésto díficil de recordar entonces puedes usar un pequeño shell script que puedes encontrar aquí grepfind Este script también se asegura que caracteres no imprimibles sean removidos en caso de que ejecutes egrep en un archivo binario.

Un programa de búsqueda muy interesante es agrep. Este funciona básicamente como egrep pero realiza búsquedas que toleran errores en la escritura del nombre. De esta manera puedes también encontrar palabras mal escritas. Para buscar una expresión con un máximo de dos errores de escritura puedes usar:

agrep -i -2 “search exprission” *

El programa agrep puede ser bajado de sunsite sunsite.unc.edu/pub/Linux/util s/text/agrep-2.04.tar.Z o de su sitio original ftp://ftp.cs.arizona.edu/agrep/

También está glimpse. Esta es una poderosa utilidad de búsqueda. Utiliza un concepto similar a locate. Primero una base de datos necesita ser construida, para que la búsquedas sean rápidas. Para construir una búsqueda indexada del contenido de todos los ficheros empezando en el directorio actual:

glimpseindex .

Después de eso puedes buscar una cadena en todos los ficheros que fueron previamente indexados

glimpse -i -2 “search exprission”

glimpse también tolera errores de escritura (como agrep) y el -2 permite dos errores. glimpse está disponible en http://glimpse.cs.arizona.edu/

Pensando con Logica

Hola, en esta oportunidad solo quiero hacer referencia a algo que he podido escuchar y que de alguna forma me hizo ruido, el tema es que nos han prometido a los venezolanos, que el problema de la vivienda será resuelto, entonces nos dicen que en un año quizás un poco mas o un poco menos se construirán 2 millones de viviendas.

Es así como entonces se me ocurrió pensar, como seria esto, y siendo conservador y dando el beneficio de la duda, divido 2 millones entre 365 días lo que entonces me arroja como resultado aproximado de 5.479 viviendas por día.

Al ver semejante resultado, recuerdo que en el edificio donde vivo, se tienen 16 pisos y 4 departamentos por piso, lo que a su vez suma 64 departamentos, siendo así entonces dividi las 5.479 viviendas entre 64 lo que me da entonces un total de 85 edificios.

Si, para cumplir la meta de 2 millones de viviendas en un año, es el equivalente a construir 85 edificios Diariamente. Si consideramos que la urbanización palo verde cuenta con unos 30 edificios, entonces para cumplir con esa promesa de 2 millones de viviendas al año, tendrían que construir casi 3 urbanizaciones palo verde diarias (sin vacaciones, feriados, fines de semanas, sin descanso por un año). Creo que ni los chinos, que actualmente son considerados los mayores, mejores y mas rápidos constructores de viviendas podrían cumplir con esta promesa,

En consecuencia, creo que nos están mintiendo, y entonces me pongo a pensar, no será mas bien que saben que les hace falta asegurar al menos 2 millones de votos y en consecuencia crean la expectativa de la promesa de una dádiva a familias necesitadas que por la misma necesidad no se enfocaran a calcular si es posible o no siempre sembrando la duda en la colectividad. Total, como el plazo de entrega de las viviendas superan la expectativa de las elecciones presidenciales, pesaran “ya luego de perpetuarme un periodo mas en el poder, no importara si cumplo o no” total el pueblo tiene muy mala memoria.

Este análisis me hace reflexionar entonces en lo que llaman “el bozal de arepa” hasta cuando los venezolanos no analizaremos lo que esta a simple vista y que puede ser simplemente sometido a un simple calculo matemático?, hasta cuando desplazaremos nuestros problemas y preocupaciones, tan solo por el disfrute de un puente, una semana santa, un carnaval.?

Saquen la cuenta, sumen, multipliquen, dividan y resten, y se darán cuenta que las promesas son incumplibles, que tan solo les alimentan las expectativas de recibir y algo que no es posible.

Archipel Project – Orquestando nuestra virtualización

Desde hace algún tiempo vengo echandole el ojo a un proyecto que me ha llamado mucho la atención, de hecho tanto que he querido involucrarme en el mismo a fin de paquetizarlo para Ubuntu. Lamentablemente el tiempo no ha sido mi aliado, es por ello que aprovecho de invitar a todo aquel que quiera, pueda y sepa a participar con este excelente trabajo.

El proyecto Archipel en un orquestador que se aprovecha de las librerias de virtualización Libvirt y de XMPP, para conectarse con equipos virtualizadores permitiendonos de una forma fácil y via Web, el administrar nuestras maquinas virtuales.

En la página del proyecto, encontramos que:

Todo es sobre el tiempo realUna de las cosas más importantes sobre Archipel es su trabajo en tiempo real. Cada evento se inserta tan pronto como se produce. Cuando una entidad – hipervisor máquina virtual, o lo que sea – tiene algo que decir, la información se envía a través de la plataforma. Si no ocurre nada, bueno, no pasa nada. Archipel, se escribió con Growl para las aplicaciones en Cappuccino, que permite desplegar elegantemente llamado GrowlCappuccino. Gracias a este framework, se le notificará tan pronto como se produce un evento, donde quiera que estés ejecutando en la aplicación. 

Todas las tareas que se realizan en tiempo real es gracias a XMPP (anteriormente conocido como Jabber ). Cada máquina virtual hipervisor, o controlador es una entidad XMPP capaz de enviar y recibir mensajes, comandos y la información de otras entidades, real o virtual….

Libvirt, el traductor universalLibvirt es una biblioteca de código abierto que permite a las aplicaciones para conducir los motores de virtualización con un protocolo unificado. No sólo estamos hablando de puesta en marcha o shutdowning una máquina virtual, sino que también los define, el establecimiento de redes de hipervisor y la creación de agrupaciones de almacenamiento. Libvirt es compatible con KVMOpenVZde Sun VirtualBoxXen e incluso con VMware . Y es así como con Archipel es posible utilizar diferentes motores de virtualización y control de
todos ellos desde la misma interfaz web. 

Libvirt está empaquetado en la mayoría de las distribuciones de Linux. Es muy fácil de instalar y configurar.

Archipel es un proyecto que apenas está naciendo, pero particularmente le auguro mucho éxito, progreso y prosperidad, espero verlo pronto paquetizado para todas varias distribuciones y en especial para Ubuntu.

Si quieres saber mas de Archipel, no dudes en visitar y participar en su proyecto:

http://archipelproject.org/