Mono en Slackware Linux

01.11.08 | by José P. Espinal [mail] | Categories: Aplicaciones, General

Este cuatrimestre en la universidad me encontré con la sorpresa de que, para programación, nos iban a impartir clases de C# (C sharp).

Un poco de historia al asunto:
C sharp es un lenguaje de programación creado por Microsoft pero abierto al público (esta parte me sorprendió, realmente) por medio de unas estandarizaciones, como por ejemplo ISO, y ECMA (Standard Computer Manufacturers Association). De modo que ya no es solo para productos Microsoft.

Problemática:
Sin importar la razón que fuese, no tenía (ni tengo) ninguna intención de blasfemar la integridad de mi disco duro instalando Microsh*t Winblows; de modo que anduve buscando opciones.

Alternativa:
Encontré a “Mono", un compilador de C# para Linux que es asombrosamente compatible con el framework .NET de M$ft. Entre las cosas que me motivaron a verlo con buen ojo, están:

1. Multi Plataforma:
Corre en Linux, OS X, BSD, y Microsoft Windows, incluyendo x86, x86-64, ARM, s390, PowerPC y varias más, de modo que si te decides a programar en C#, tus clientes potenciales son muchos.

2. Multi Lenguaje:
Puedes programar en C# 3.0 (incluyendo LINQ), VB 8, Java, Python, Ruby, Eiffel, F#, Oxygene, y varios más.

3. Está auspiciado por Novell (hay dinero de por medio invertido en esto).

4. Etc.

Para obtener la ultima versión estable de Mono, solo hay que ir a su área de descarga: http://ftp.novell.com/pub/mono/sources-stable/

Luego de bajarlo, puedes instalarlo sin ningún problema siguiendo unos pasos de instalación básica que trae.

$ ./configure
$ make
# make install

MonoDevelop , el gran reto:
Aunque el proceso de instalacion de Mono es muy sencillo, realmente no se puede decir lo mismo de la interfaz de desarrollo que se usa para esas cuestioncitas .NET (en Linux). Realmente no es ‘dificil’, pero es bien trabajoso y puede ser hasta frustrante si no se hace en un orden correcto (lo digo por experiencia).

Si eres usuario de Slackware, y tienes la version 12.1 o cercana, es probable que no tengas instalado Gnome (como me pasó a mi). Si lo tienes instalado, felicidades, no creo que te falte nada.

A los que no tenemos Gnome instalado, nos hace falta tener algunas dependencias; las cuales deben ser instaladas en cierto orden para evitar infartos. Luego de instalar todo, y haber tomado notas del orden de instalación, me gustaría compartirlo con el publico :).

El orden de las dependencias es el siguiente:

  1. Mono.Addins 0.3.1
    • gtk-sharp
      • pango
        • glib-2.18.2
  2. Gtksourceview#-2.0 0.10
  3. Monodoc 1.2.6
  4. MonoDevelop Source
    • gtksourceview-sharp-2.0
      • gnome-sharp-2.0
        • libgnomecanvas
          • gail
        • libgnome

          • gnome-vfs-2.0
            • gconf-2.0
              • ORBit-2.0
        • libbonobo-2.0

          • libgnomeui
            • libbonoboui-2.0
            • gnome-keyring-1
              • LibtASN1
        • libgnomeprint

          • libgnomecups-1.0
        • libgnomeprintui
        • gnome-panel

          • gtk+-2.0 >= 2.13.1 (desinstalar las que trae Slackware)
            • cairo >= 1.6 (desinstalar el que trae Slackware)
              • pixman-1 >= 0.12.0
          • gnome-desktop-2.0
            • gnome-doc-utils >= 0.3.2
          • gnome-menus
          • libwnck-1.0 >= 2.19.5
          • gweather
            • libsoup-2.4
      • gtksourceview-1.0

as mas produndo en el orden previo este la libreria, debes darle prioridad en la instalacion; es decir, si te fijas en la lista anterior, te digo ahi que debes instalar gtksourceview-sharp-2.0. Pero para eso necesitas previamente algunas librerias, como por ejemplo gnome-sharp-2.0, quien a su vez depende de varias mas, como es el caso de libgnome ( pero necesitas instalar ORBit-2.0, luego gconf-2.0, luego gnome-vfs-2.0, y luego es que vas a instalar libgnome).

Todo el proceso te puede tomar de 30 minutos, a incluso varias horas. Si haces caso de la lista de dependencias que puse ahi arriba, puede ser rapido y sin complicaciones.

NOTA, cuando alguna dependencia dice nombre-xx-2.0 , no necesariamente buscaras la version 2.0, sino la version que en la rama 2.x este como estable.

Y por ultimo, los sources y librerias (requisitos, dependencias), puedes encontrarlos aqui: http://ftp.gnome.org/pub/GNOME/sources/ (casi todos).

A excepcion de uno o dos que no estan ahi porque no son desarrollados por Gnome. Pero son MUY facil de encontrar en google.

Finalmente:
El tomarse el tiempo de instalar o no Mono, MonoDevelop IDE, depende de que tanto te moleste o no la idea de tener que instalar Windows en tu PC. En mi caso preferiria comprar otro disco que luego pueda arrojar a la basura en caso de que le pase algo ;D

Espero que esta lista les haya sido util, y que les ahorre tiempo.

Hasta luego,

--
Jose P. Espinal
http://blog.slackware-es.com

/etc/shadow - Archivo de passwords encriptados

21.09.08 | by José P. Espinal [mail] | Categories: Administración, General

… uff, hasta que por fin me animo a postear :>> , y esta vez estaremos estudiando el archivo ‘/etc/shadow’.

Este es otro de los archivos que, cuando movido por la curiosidad (cuando eres novato), lo abres con un editor de texto y te quedas perplejo preguntandote… “Pero, y que es esto!!??". Lo cierras, y te quedas con la idea en la cabeza: “Aja! y se supone que debi entenderlo, cieto!?". Mi intencion el dia de hoy es tratar de quitarle lo ‘mistico’ o ‘enredado’ a esos archivos, y dar un paseo por la sintaxis del mismo :)

Comencemos con lo esencial: El manual page

Content-type: text/html



SHADOW
Seccion: Formato de Archivos (5)


NOMBRE

shadow - archivo de passwords encriptados


DESCRIPCIÓN
shadow contiene la información encriptada para las cuentas de usuarios y opcionalmente la información de caducidad del password.


Está incluido

Nombre de usuario
Password Encriptado

Dias desde 1 Enero, 1970 que el password fue cambiado
Dias antes de que el password pueda ser cambiado

Dias despues de los cuales el password debe ser cambiado
Dias antes en los que el usuario será advertido antes de que el password expire

Dias despues de 1 Enero de 1970, en los cuales la cuenta será deshabilitada luego del password expirar
Un campo reservado


El password debe ser llenado. El password encriptado consiste en 13 a 24 carácteres del alfabeto de 64 caracteres de a hasta z, A hasta Z, 0 al 9, . y /. Referirse a crypt(3) para detalles acerca de como es interpretada esta cadena.


El dia del ultimo cambio de password es dado como el número de dias desde 1 Enero, 1970. El password no puede ser cambiado nuevamente hasta que esos dias hayan pasado, y debe ser cambiado antes número máximo de dias. Si el número mínimo de dias requerido es mayor que el máximo numero de dias permitido, este password no puede ser cambiado por el usuario.


Una cuenta es considerada como inactiva y deshabilitada si el password no es cambiado dentro de el número de dias especificado luego de que el password expire. Una cuenta tambien será deshabilitada en los dias especificados no obstante la información de expiracion restante.


Esta información trasciende cualquier password o información de tiempo de password presente en /etc/passwd.


Este archivo no debe ser leible por usuarios regulares si se mantendrá la seguridad de los passwords.


ARCHIVOS

/etc/passwd - user account information

/etc/shadow - encrypted user passwords


VER TAMBIEN

chage(1), login(1), passwd(1), su(1), passwd(5), pwconv(8), pwunconv(8), sulogin(8)


AUTOR

Julianne Frances Haugh (jockgrrl@ix.netcom.com)

De modo que tomando como ejemplo la linea correspondiente a mi usuario, en /etc/shadow , tenemos algo como esto:

jespinal:$1$N9L1HjIf$.YbfoPCCZmrqemk4zwYUb4:13918:0:::::0

Se sigue viendo medio feo, pero por lo menos se entiende, ya que sabemos que segun el man page:

Nombre de usuario

jespinal

Password Encriptado

$1$N9L1HjIf$.YbfoPCCZmrqemk4zwYUb4

Dias desde 1 Enero, 1970 que el password fue cambiado

13918

Dias antes de que el password pueda ser cambiado

0

Dias despues de los cuales el password debe ser cambiado

 vacio, es decir, no debo cambiarlo :)

Dias antes en los que el usuario será advertido antes de que el password expire

 tampoco estoy usando este campo 

Dias despues de 1 Enero de 1970, en los cuales la cuenta será deshabilitada luego del password expirar

ya que mi cuenta no va  a expirar, tampoco se usa esto

Un campo reservado

0

Te preguntaras, “Y ya!? es todo?"… respuesta: Si :yes: , es que cuando no nos detenemos a leer nos asustamos por poca cosa :))

Espero que este articulo te haya sido de utilidad, y que te aclare varias dudas.
Proximamente explicare la como es que se genera ese password encriptado (por si necesitas crear un usuario manualmente ;) )

Hasta pronto.

--
Jose P. Espinal
http://blog.slackware-es.com

Linux manual pages

27.08.08 | by José P. Espinal [mail] | Categories: General, Comandos Linux

Bart Simpson

Definitivamente, luego de haber entrado en el mundo de Slackware Linux, Los ‘man pages’ (páginas de manual) y Google serán tus mejores amigos; y más que eso, tu Shaman y tu Guía, respectivamente.

Relmente no tenía tiempo para escribir hoy, estoy algo atareado por cuestiones laborales, y me senté un rato en mi PC a descansar, hasta que de pronto… ‘tucutú’ , el horrible sonidito de aMSN indicando que alguien me ha hablado.

Sin mucho ánimo, muevo mi brazo hasta alcanzar el mouse, le doy click a la … ventanita esta!, pensando que es algo importante (puesto que mi estado esta en ‘away’) y de pronto: alguien preguntandome algo que estoy ultra seguro que Google en su inmensa sabiduría ha respondido ya de muchas maneras.

Mi respuesta fue simple:
RTFM! (Read The F—-ng Manual) , lo cual no me ayudo mucho, pero me desahogó…

En esta ocasion vamos a tratar de entender unos cuantos tips de nuestro gran amigo ‘man’ (manual).

Si escribimos en consola:

# man man

Estaremos llamando el manual del manual pages, el cual muestra algo como esto:

NOMBRE
       man - formatea y despliega las paginas online del manual

SINOPSIS
       man  [-acdfFhkKtwW]  [--path]  [-m  system]  [-p  texto] 
            [-C config_file] [-M pathlist] [-P pager] [-B navegador]
            [-H htmlpager] [-S section_list] [section] nombre ...

DESCRIPCIÓN
       man formatea y despliega las paginas online del manual.  si
       le especificas la sección, man unicamente buscará en esa
       sección del manual.
       nombre , normalmente es el nombre de la página
       del manual, la cual es típicamente el nombre del comando, 
       función, o archivo. Sin embargo, si el nombre contiene una
       barra (slash, '/'), entonces man lo interpretara como la 
       especificacion de un archivo,  
       de modo que puedes hacer:
       man ./foo.5 o incluso man /cd/foo/bar.1.gz.

Entre otras cosas…

1. Todos los parametros que esten incluidos en llaves, indican que son opcionales, y no es explicitamente necesario indicar uno o más de ellos. Ej.

[-acdfFhkKtwW]  [--path]  [-m  system]

me parece que esa sintaxis es un estandar de documentación, puesto que incluso la documentación de muchas otras cosas usan este formato. (ej. PHP, PERL, C, etc. etc.)

2. Los parametros que no aparezcan dentro de llaves, son obligatorios. Ej.
nombre

3. Una sinopsis es una definicion resumida y generalizada acerca de algo, los detalles de todos los parametros opcionales y obligatorios, son descritos mas abajo, de modo que tendras que desplazarte a travez de toda la pagina del manual para poder entender cierta documentacion.

4. Los manuales siempre hacen refencia a otras paginas de manual, diciendo algo como:

SEE ALSO
       apropos(1), whatis(1), less(1), groff(1), man.conf(5).

En este caso (y muy pertinentemente, hacen referencia a la pagina numero (1) del comando ‘apropos’, el cual es bastante util buscando en diferentes paginas de manual.

5. Cuando veas algo como man.conf(5), quiere decir que debes buscar en la pagina (5), del manual:

man 5 man.conf

6. Para saber cuales paginas de manual hablan acerca de cierto termino, usamos ‘apropos’, ej:

apropos ssh

nos desplegara (entre otras cosas) algo como esto:

hfssh                (1)  - Tcl interpreter with HFS extensions
ssh                  (1)  - OpenSSH SSH client (remote login program)
ssh-add              (1)  - adds RSA or DSA identities to the authentication agent
ssh-agent            (1)  - authentication agent
ssh-copy-id          (1)  - install your identity.pub in a remote machine's authorized_keys
ssh-keygen           (1)  - authentication key generation, management and conversion
ssh-keyscan          (1)  - gather ssh public keys
ssh-keysign          (8)  - ssh helper program for host-based authentication
ssh_config           (5)  - OpenSSH SSH client configuration files
sshd                 (8)  - OpenSSH SSH daemon
sshd_config          (5)  - OpenSSH SSH daemon configuration file

indicando el nombre y numero de la pagina de manual que hace referencia al termino que estuvimos buscando, para visualizar, hacemos igual que como hicimos anteriormente:

# man 5 ssh_config
# man 8 sshd
# man 1 ssh-keygen

7. Si no te gusta leer man pages en consola, puedes abrir konqueror y poner algo como esto en la barra de direcciones:

man:/cp
Para ver el manual del comando cp , por ejemplo, y asi sucesivamente.

8. Es cierto que no es lo mas sencillo del mundo entender man pages, pero tambien es cierto que no es lo mas dificil. Simplemente lee con detenimiento, sin desesperarte y trata de no pasar por alto nada, por mas elemental que parezca.

Entender y familiarizarte con ‘man’ te van a economizar tiempo, y sobre todo, podras evitar algunas de estas respuestas:
RTFM (Read the F—-ng Manual)
RTMFM (Read The Mother F—-ng Manual)
JFGI (Just F—-ng Google It)
STFW (Search the F—-ng Web)
Entre otros…

Espero que este articulo te haya ayudado a comprender e interesarte mas por ‘man’, a la vez que te ayude a invitar a otros a usar Google cuando piensan que eres una enciclopedia online en MSN. :)

NOTA:
Ayudar al otro implica que logre su propósito. Si ese otro no se interesa en aprender o investigar, es porque su principal propósito es permanecer en ignorancia, así que no le des la respuesta a sus preguntas, y estarás ayudandolo igualmente ;)

--
Jose P. Espinal
http://blog.slackware-es.com

Primer concurso de Blogs en Republica Dominicana

21/08/2008 | por José P. Espinal [mail] | Categorías: General

Por primera vez (eso realmente no lo se, pero yo no había visto otro) se está realizando un concurso de Blogs en República Dominicana. No recuerdo bien como fue que me enteré de el concurso, pero decidí inscribir este blog :>> , a ver si el destino se equivoca y por alguna remota razón (que no nos detendremos a imaginar cual sería), pues… ganamos.

Bueno, sin mas preambulos, si quieres votar haz click en esta imagen y busca mi blog en la seccion ‘TEMATICOS‘:

Luego les cuento como se dió este asunto :)

--
Jose P. Espinal
http://www.slackware-es.com

/etc/passwd - El archivo de passwords

08.08.08 | by José P. Espinal [mail] | Categories: Administración, General

En ocasiones, cuando uno es nuevo en Linux, se le ocurre abrir el archivo /etc/passwd; pero inmediatamente lo hacemos y vemos el formato de ‘eso’ (asi le llamamos en ese momento), lo cerramos rapido con intención de no volver a abrirlo y con la esperanza de nunca tener que editarlo manualmente.

Hoy estaremos estudiando ese archivo de forma detenida, y esperando que la próxima vez que lo abran, sea una experiencia menos traumática.

Dirijanse al directorio /etc/ y abran su archivo ‘passwd’.

Mi /etc/passwd luce algo como así:

root:x:0:0::/root:/bin/bash
bin:x:1:1:bin:/bin:/bin/false
daemon:x:2:2:daemon:/sbin:/bin/false
adm:x:3:4:adm:/var/log:/bin/false
lp:x:4:7:lp:/var/spool/lpd:/bin/false
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/:/bin/false
news:x:9:13:news:/usr/lib/news:/bin/false
uucp:x:10:14:uucp:/var/spool/uucppublic:/bin/false
operator:x:11:0:operator:/root:/bin/bash
games:x:12:100:games:/usr/games:/bin/false
ftp:x:14:50::/home/ftp:/bin/false
smmsp:x:25:25:smmsp:/var/spool/clientmqueue:/bin/false
mysql:x:27:27:MySQL:/var/lib/mysql:/bin/false
rpc:x:32:32:RPC portmap user:/:/bin/false
sshd:x:33:33:sshd:/:/bin/false
gdm:x:42:42:GDM:/var/state/gdm:/bin/bash
apache:x:80:80:User for Apache:/srv/httpd:/bin/false
messagebus:x:81:81:User for D-BUS:/var/run/dbus:/bin/false
haldaemon:x:82:82:User for HAL:/var/run/hald:/bin/false
pop:x:90:90:POP:/:/bin/false
nobody:x:99:99:nobody:/:/bin/false
jespinal:x:500:100:Jose P. Espinal:/home/jespinal:/bin/bash

…a primera vista, ‘espantoso’.

Este archivo incluye varias piezas de información para cada cuenta de usuario en el sistema.
Cada ‘pieza’ de información esta separada de la siguiente por ‘:‘ (dos puntos).

Evaluemos la siguiente línea de mi archivo para que entiendan mejor:

jespinal:x:500:100:Jose P. Espinal:/home/jespinal:/bin/bash

1) Primera pieza (’jespinal’):
Esta corresponde al ‘login name’ o nombre de usuario correspondiente al usuario que describe dicha linea. En este caso es ‘jespinal‘, pues ese es mi usuario :) , simple, no?.

2) La segunda pieza (’x'):
Corresponde al ‘password’ encriptado; sin embargo, esta ‘x‘ no es mi password, sino que asi se coloca porque el verdadero password no se almacena ahi , sino en ‘/etc/shadow’ (luego estudiaremos ese archivo, calma :) ). Toma en cuenta que si se esta haciendo uso de ‘/etc/shadow’ para almacenar los passwords, entonces en ese campo del /etc/passwd NO DEBE haber nada excepto la ‘x’.

3) Tercera pieza (’500′):
Corresponde al ID numérico del usuario. Como sabrás (y si no lo sabias, pues ya si), a cada usuario del sistema se le asigna, ademas del login-name, un ID numerico para identificarlo. Ese campo de /etc/passwd es el que se usa para registrar el ID numerico del usuario en cuestion.

4) Cuarta pieza (’100′):
Corresponde al ID numérico del grupo al cual pertenece el usuario. En mi caso, el usuario ‘jespinal’ tiene como grupo principal el grupo ‘users’, y ese es el ID numerico de ese grupo (luego estudiaremos /etc/group , que es ahi que se manejan los grupos y el ID que le otorgamos a cada grupo).

5) Quinta pieza (’Jose P. Espinal’):
Nombre del usuario, o Comentario; por ejemplo, en el caso del usuario de MySQL, usamos algo como ‘Usuario de MySQL’, aunque si quieres puedes usar ‘Pepito Perez’, el hecho es que sepas para que se usa este campo, el cual tambien puedes dejar vacio (’root’ usa este campo vacio, por lo general).

6) Sexta pieza (’/home/jespinal’):
Aqui se indica el directorio de trabajo inicial de cada usuario (o sea, su ‘home’).

7) Septima pieza (’/bin/bash’):
Indica el interprete de comandos que usara el usuario por default o el primer comando que ejecutara (ej. el usuario shutdown, y halt).

Fijate que en el caso de usuarios que solo se usan para ejecutar ciertos procesos (mail, uucp, news), el shell es ‘/bin/false’, el cual es un shell nulo para que este usuario no tenga otra utilidad mas que servir para que un proceso se ejecute a nombre suyo.

Ya, eso es todo; ves!? no muerde :>>.

Eso es practicamente todo lo relacionado a este archivo. Realmente facil de entender y de editar (si quieres cambiar algo).

Hasta luego; ya sabes: ‘man’ es tu mejor amigo en Linux.

--
Jose P. Espinal
http://www.slackware-es.com

Asterisk PBX y Slackware Linux

25/07/2008 | por José P. Espinal [mail] | Categorías: Aplicaciones, General

La estabilidad, simplicidad y robustez de Slackware Linux puede ser aprovechada tambien en el ámbito de las Telecomunicaciones. En esta ocasión veremos como instalar Asterisk PBX en Slackware Linux.

Asterisk es la PBX, mecanismo de telefonía, y conjunto de aplicaciones de telefonía de código abierto lider a nivel mundial. Ofreciendo una flexibilidad nunca antes vista en el mundo de las comunicaciones propietarias, Asterisk habilita a los desarrolladores y a los integradores a crear avanzadas soluciones de comunicaciones… de manera gratuita ;)

Slackware Linux, como ya sabemos, es un avanzado sistema operativo tipo Unix que desde su nacimiento ha tenido dos metas principales: Facilidad de usar (claro, si no te gusta leer ni usar ese músculo que te adorna el cráneo, al cual algunos llaman cerebro; Slackware Linux será tu peor enemigo) y Estabilidad.

(voy a asumir que ya tienen Slackware instalado…)

Si yo fuera tu, crearia una carpeta en /usr/src llamada ‘packages’ (siempre lo hago) y ahi tendria las cosas que voy descargando.

1. Descargando LibPRI

# wget http://downloads.digium.com/pub/libpri/libpri-1.4-current.tar.gz

Estas son las librerias de PRI (Primary Rate ISDN para interfaces T1/E1/J1)
NOTA: No es necesario descargarlo si no usaras una Hardware (tarjeta) de telefonia Digium, Sangoma, etc.

2. Descargando ZapTel

# wget http://downloads.digium.com/pub/zaptel/zaptel-1.4-current.tar.gz

Estos son los drivers para el Kernel de las tarjetas de interfaces analogas y digitales. (Las tarjetas Digium requieren esto).

3. Descargando Asterisk

# wget http://downloads.digium.com/pub/asterisk/asterisk-1.4-current.tar.gz

4. Descargando Asterisk Add-Ons

# wget http://www.digium.com/elqNow/elqRedir.htm?ref=http://downloads.digium.com/pub/asterisk/asterisk-addons-1.4-current.tar.gz

Estas son librerias adicionales (extra) de Asterisk, que proveen aun mas funcionalidades (Poder usar MP3, OOH323, MySQL,etc.).

Una vez que lo hayas descargado todo, descomprimelo y (si quieres, esto otro es opcional) crea un vinculo simbolico a cada archivo.

Puedes copiar y pegar el siguiente scripcito para que te economices tiempo, solo es copiar y pegar:

for a in *.tar.gz ;
      do 
      tar xvzf "$a"; 
         ln -s `tar -tzf "$a" | head -n1`\
         `tar -tzf "$a" | head -n1 | gawk -F"-1" '{ print $1 }'` ;
done

Bien, ahora manos a la obra :P

Primero, vamos a instalar LibPRI, entra en el directorio de libpri,

# cd libpri
# make
# make install

Ahora vamos con Zaptel,

Nota: Te recomiendo que bajes primero las librerias de NewT, para que puedas usar la herramienta zttool luego de compilar zaptel.

Puedes bajarlo de aqui:

http://www.linuxpackages.net/pkg_details.php?id=10322

Es un .tgz, de modo que puedes instalarlo de la siguiente manera:

# installpkg nombre-de-paquete-.tgz

… continuamos,

# cd zaptel
# ./configure
# make menuselect (ojo con esto, lo explicare mas adelante)
# make
# make install

La parte de menuselect te permitira seleccionar de manera FACIL (grafica) los modulos que quieres que sean compilados para las diferentes interfaces de telefonia, asi como otros detalles interesantes. (esta aplicacion trae su documentacion, si no esta clara o necesitan que profundice, me avisan).

El siguiente es Asterisk:

# cd asterisk
# ./configure
# make menuselect (igual que en zaptel)
# make
# make install
# make samples (esto genera archivos de configuracion de muestra)

Por ultimo, (muy importante, por lo menos en mi opinion), los Addons:

# cd asterisk-addons
# ./configure
# make menuselect
# make
# make install
# make samples

Listo,

Para correr Asterisk, solo tienes que ejecutar (como root, obviamente):

# /usr/sbin/asterisk

o si no…

# /usr/sbin/safe_asterisk

Este ultimo es un script que inicia automaticamente Asterisk en caso de que por alguna razon ocurra un crash (uno nunca sabe, es mejor prevenir que lamentar).

Pues… bien, Esto es en cuanto a la instalacion de Asterisk en Slackware Linux, luego posteare articulos en torno a la configuracion, integracion de Asterisk con MySQL (para el record de llamadas, etc.) y otros detalles :)

Hasta la proxima,

--
Jose P. Espinal
http://www.slackware-es.com

Transport Layer Security (TLS) y Secure Sockets Layer (SSL)

23/07/2008 | por José P. Espinal [mail] | Categorías: Networking, General, Seguridad

En este artículo estaremos incursionando un poco en la seguridad y criptografía al referirnos a Transport Layer Security (TLS) y su predecesor, Secure Sockets Layer (SSL).

TLS y SSL son protocolos de criptografía que proveen comunicación segura para cosas tales como navegacion web, emails, Fax en internet, mensajería instantanea y otros tipos de transferencia de datos. Hay diferencias ligeras entre SSL y TLS, pero son en escencia lo mismo.

Ok, viene la pregunta: ¿Para que sirve eso?

El protocolo TSL permite que las aplicaciones se comuniquen de manera tal que se evite la intercepcion de paquetes, manipulación y forjamiento de mensajes. TLS provee autentifiación de destino final y privacidad de comunicaciones sobre internet a travez del uso de criptografía.

Por lo general, solo el server se autentifica (se tiene seguro su autenticidad) mientras que el cliente (quien se conecta al server) permanece sin autentifiación. El siguiente nivel de seguridad (en el cual ambos lados se autentifican) se conoce como ‘autentificación mutua’ (la cual require de infraestructura de llaves).

TLS envuelve tres fases básicas:

  • Negociacion con el peer (otro punto que se conecta) para determinar que algoritmo soporta.
  • Intercambio de llaves y autentificación
  • Encriptacion simetrica y autentifiacion de mensajes

Durante la primera fase, el cliente y el server se ponen de acuerdo en el tipo de cifrado que van a utilizar, los algoritmos de autentifiacion para el intercambio de llaves, asi como tambien los codigos de autentificacion de mensajes.

En sintesis (para nuestros fines):
Un protocolo es un conjunto de normas y convenciones que establecen como las computadoras van a interconectarse entre si (digamos que son como el lenguaje entre las computadoras para determinados servicios).
TLS y SSL son lenguajes de criptografía que nos permiten conectarnos de manera SEGURA a un server, y en cuya conexion la informacion pasara totalmente cifrada, de modo que sea casi imposible para un tercero el poder entender dicha información en caso de que capture paquetes mediante alguna técnica.

Para información adicional pueden buscar documentación en Google, y así profundizar más en este tópico.

--
Jose P. Espinal
http://blog.slackware-es.com

Memoria USB en Linux

28.05.08 | by José P. Espinal [mail] | Categories: General

… Si, lo se, el tema es basico; pero no todos lo saben y nadie nacio sabiendo. Y el que no lo sabe, tiene derecho a saberlo :)

Este articulo sera corto, porque en realidad es una sencillez.

Imaginate que has insertado una memoria USB en tu PC con Slackware , y por alguna mágica razón esta te dio un error cuando intentaste abrirla usando el entorno gráfico. Que úlcera, ¿no?.

Bueno, vamos a consola.

Primero loggeate como root ,

# su

Luego, vamos a ver que vinculo le fue asignado a nuestra memoria USB por udev.

Nota Interesante: udev es un software que se encarga de mantener una lista actualizada en nuestro directorio /dev de los dispositivos que realmente existen en nuestro sistema. Como esto es hecho en tiempo real, al insertar nuestra memoria USB (si no esta averiada :!: ) udev creara un vinculo en /dev por medio del cual podemos acceder a ella.

Para ver que vinculo le fue asignado a nuestra memoria USB utilizamos el comando:

# fdisk -l

NOTA: Ese comando se ejecuta como root, porque umount tiene que acceder a ciertos records en /proc y un usuario normal no tiene acceso a lo que esta ahi.

En mi caso la salida es algo como esta:

Disk /dev/sda: 160.0 GB, 160040803840 bytes
255 heads, 63 sectors/track, 19457 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x6875bc2d

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          13      104391   83  Linux
/dev/sda2              14         138     1004062+  82  Linux swap
/dev/sda3             139       19457   155179867+  83  Linux

Disk /dev/sdb: 1048 MB, 1048182784 bytes
16 heads, 47 sectors/track, 2722 cylinders
Units = cylinders of 752 * 512 = 385024 bytes
Disk identifier: 0xb5f1ba5c

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1        2723     1023498+   b  W95 FAT32

Por medio de esta informacion me doy cuenta que a mi memoria USB le fue asignado el vinculo /dev/sdb , y que como solo tiene una particion, esta se llama /dev/sdb1

NOTA: Se que a mi memoria USB le fue asignado /dev/sdb1 porque tengo un solo disco :) , y ‘fdisk -l’ despliega la lista de discos conectados al sistema (entre otras cosas), asi que OBVIAMENTE si aparece /dev/sdb1 luego de que inserte mi memoria USB, es porque ese es el vinculo que le asigno udev.

En tu caso puede ser ese mismo, u otro totalmente diferente (/dev/sda1 , por ejemplo). Si estas inseguro, puedes retirar la memoria USB y ejecutar ‘fdisk -l’, luego la insertas nuevamente y ejecutas ‘fdisk -l’ nuevamente, asi identificaras claramente el nuevo vinculo creado a /dev por udev.

Ya que sabemos que vinculo tiene, solo es cuestion de montarla en un directorio y asi podremos acceder a ella.

# mount /dev/sdb1 /mnt/memory

NOTA: (si, se que pongo muchas notas, pero es para no dejar cosas en el aire) Ese directorio /mnt/memory lo trae Slackware por default ;)

Listo, ya eso es todo :) ,

Para desmontarla, una vez que hayas terminado de usarla, solo tienes que ejecutar el comando (en mi caso):

# umount /dev/sdb1

NOTA: No puedes usar umount si aun estas dentro del directorio donde esta montada la memoria USB, porque te dira (y con toda su razon) que el dispositivo esta ocupado.

Espero que esta informacion sea util a muchos,

--
Jose P. Espinal
http://www.slackware-es.com

Visitantes fieles :-)

16.05.08 | by José P. Espinal [mail] | Categories: General

Hey, ¿Que hubo?…

Aprovecho la oportunidad para enviar un saludo a las personas que han estado brindando su apoyo a travez de sus visitas; entre ellos los Linuxeros mas activos vienen de (en orden alfabetico):

Argentina
Bolívia
Chile
Colómbia
España
Estados Unidos
Guatemala
Honduras
Hungria !? :|
México
Perú
República Dominicana
Uruguay
Venezuela

Muchas gracias Linuxeros, en serio :yes: !,

Hasta luego,

--
Jose P. Espinal
http://www.slackware-es.com

Upgrade de Slackware 12.0 a 12.1

13/05/2008 | por José P. Espinal [mail] | Categorías: Configuración, Administración

Ok. te bajaste el DVD de Slackware Linux 12.1 y ahora te estarás preguntando si es necesario ‘reinstalar’ todo de nuevo, o si habrá una forma menos dolorosa y problemática de disfrutar de la nueva version de Slack. Pues bien, hoy estaremos viendo como hacer un Upgrade desde Slackware 12.0 a 12.1.

Imaginemos que el archivo ISO que descargaste de Slackware se llama slackware-dvd.iso y que lo tienes en /home/pepito/slackware-dvd.iso (Imaginando que tu username es pepito :) ).

Yo personalmente suelo hacer upgrades desde el mismo .iso sin quemarlo en el CD (o DVD), para esto solo tienes que montarlo en un directorio y listo :D

Primero, para hacer el upgrade, pon tu maquina en Single user mode, como root hacemos lo siguiente:

# telinit 1

Ok, ahora vamos a montar la imagen ISO de Slackware en el directorio /mnt/tmp haciendo lo siguiente: (como root)

# mount /home/pepito/slackware-dvd.iso -o loop /mnt/tmp

Con esto ya esta montada la imagen (read only, acuerdate, pero para nuestros fines esta bien).

A continuacion, entra al directorio ’slackware’ dentro de /mnt/tmp ,

# cd /mnt/tmp/slackware

Ahora bien,

Primero, para que las cosas no se pongan agrias en el proceso de upgrade, actualicemos en primer lugar las librerias compartidas de glibc.

# upgradepkg a/glibc-solibs-*.tgz

Actualicemos la herramienta de paquetes.

# upgradepkg a/pkgtools-*.tgz

Ok, ahora actualiza (e instala) el resto de las cosas.

# upgradepkg --install-new */*.tgz

Si quieres puedes usar este scriptcito, el cual viene (al igual que los demas en este articulo) en el cd/dvd de instalacion, para hacer el upgrade, porque el paso anterior te instala todos los paquetes de lenguaje de KDEI.

    #!/bin/sh
    for dir in a ap d e f k kde l n t tcl x xap y ; do
      ( cd $dir ; upgradepkg --install-new *.tgz )
    done

Ok, ahora ASEGURATE de ejecutar Lilo nuevamente para instalar Linux Loader.
Ahora te explico por que. Sucede que Lilo debe generar un archivo llamado ‘map’ , el cual le indica al Bios en que lugar fisico exacto se encuentra el Kernel en el disco duro, si olvidas ejecutar Lilo, lo mas seguro (99.99 %) que veras un precioso ‘Kernel Panic’.

Ahora, (esto es opcional, pero recomendado) remueve los paquetes obsoletos:


a/util-linux: Removido (reemplazado por util-linux-ng).
ap/espgs: Removido. Reemplazado por ghostscript.
ap/gimp-print: Removed. Reemplazado por gutenprint.
e/emacs-info: Removido (ahora esta incluido en monolithic emacs package).
e/emacs-leim: Removido (ahora esta incluido en monolithic emacs package).
e/emacs-lisp: Removido (ahora esta incluido en monolithic emacs package).
e/emacs-misc: Removido (ahora esta incluido en monolithic emacs package).
e/emacs-nox: Removido (ahora esta incluido en monolithic emacs package).
l/libmusicbrainz: Removido.
l/libtunepimp: Removido
l/mcs: Removed (renombrado a l/libmcs).
x/dejavu-ttf: Renombrado a x/dejavu-fonts-ttf.
x/xorg-server-xdmx: Removido.
extra/ham: Removido por falta de mantenimiento.
extra/intel-wlan-ipw3945/*: Removido, el soporte a este dispositivo ahora es incluido en el Kernel.
extra/linux-wlan-ng: removido, esto no compila con los kernels 2.6.24.x
extra/ntfsprogs: Actualizado, movido a los paquetes AP
extra/xf86-video-ati-6.6.3: Removido.
pasture/gcc-3.4.6/: Removido.

Por ultimo, tienes que arreglar los archivos de configuracion. Debes revisar los archivos .new, modificarlos y hacer los ajustes suficientes y renombrarlos (quitarles el .new ) para que sobreescriban los viejos.

Te sientes con valor :>> ? , aqui te dejo este script que renombrara los archivos de configuracion viejos con .bak y movera los .new a su lugar original. Luego puedes evaluar los .bak y hacer los ajustes a los nuevos archivos de configuracion ;) , eso si, OJO: vas a usarlo (si es que lo usas) bajo tu PROPIA responsabilidad!, ok? Ok.


#!/bin/sh
cd /etc
find . -name “*.new” | while read configfile ; do
if [ ! “$configfile” = “./rc.d/rc.inet1.conf.new” \
-a ! “$configfile” = “./group.new” \
-a ! “$configfile” = “./passwd.new” \
-a ! “$configfile” = “./shadow.new” ]; then
cp -a $(echo $configfile | rev | cut -f 2- -d . | rev) \
$(echo $configfile | rev | cut -f 2- -d . | rev).bak 2> /dev/null
mv $configfile $(echo $configfile | rev | cut -f 2- -d . | rev)
fi
done

Listo, ya puedes regresar a RunLevel 3 (si ese es el que usas, si no, vuelve a tu runlevel)

# telinit 3

Para este entonces ya deberias estar corriendo Slackware 12.1 :)

Buena suerte,

--
Jose P. Espinal
http://www.slackware-es.com

Páginas: 1 2 3 >>

Buscar

Recomendados

[~] SQLninja
[~] XvidCap
Noviembre 2008
Lun Mar Mié Jue Vie Sáb Dom
 << <   > >>
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
¡el blog solicitada ya no existe más!
powered by b2evolution