<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule"
>

<channel>
	<title>ITRestauracion</title>
	<atom:link href="http://www.itrestauracion.com.ar/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://www.itrestauracion.com.ar</link>
	<description>Simplemente Software Libre</description>
	<lastBuildDate>Mon, 30 Apr 2012 18:00:58 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.2</generator>
<creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
		<item>
		<title>Creacion de un paquete rpm a partir del src.rpm</title>
		<link>http://www.itrestauracion.com.ar/?p=1445</link>
		<comments>http://www.itrestauracion.com.ar/?p=1445#comments</comments>
		<pubDate>Sun, 29 Apr 2012 05:33:59 +0000</pubDate>
		<dc:creator>restauracion</dc:creator>
				<category><![CDATA[Administracion]]></category>
		<category><![CDATA[Lpi]]></category>

		<guid isPermaLink="false">http://www.itrestauracion.com.ar/?p=1445</guid>
		<description><![CDATA[Creacion de un paquete rpm a partir del src.rpm Antes que nada deberiamos instalar el grupo correspondiente para Desarrollo: sudo yum groupinstall &#8220;Development Tools&#8221; La primera estructura que deberiamos crear es la siguiente : mkdir $HOME/rpmbuild ;for i in BUILD &#8230; <a href="http://www.itrestauracion.com.ar/?p=1445">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><strong>Creacion de un paquete rpm a partir del src.rpm</strong></p>
<p>Antes que nada deberiamos instalar el grupo correspondiente para Desarrollo:</p>
<blockquote><p>sudo yum groupinstall &#8220;Development Tools&#8221;</p></blockquote>
<p><strong>La primera estructura que deberiamos crear es la siguiente :</strong></p>
<p><code>mkdir $HOME/rpmbuild ;for i in  BUILD BUILDROOT RPMS SOURCES SPECS SRPMS tmp; do echo "Creando el directorio $HOME/rpmbuild/$i " ; mkdir $HOME/rpmbuild/$i; done<br />
</code></p>
<p><em>Nota: hacerlo como usuario normal.</em></p>
<p><strong>Generamos nuestro macro:</strong></p>
<p><code>vi $HOME/rpmbuild/.rpmmacro<br />
#%_topdir            /home/adrian/rpmbuild<br />
%{_topdir}            %{getenv:HOME}/rpmbuild<br />
%_builddir          %{_topdir}/BUILD<br />
%_rpmdir            %{_topdir}/RPMS<br />
%_sourcedir         %{_topdir}/SOURCES<br />
%_specdir           %{_topdir}/SPECS<br />
%_srcrpmdir         %{_topdir}/SRPMS<br />
%_buildrootdir      %{_topdir}/BUILDROOT<br />
%_tmppath           %{_topdir}/tmp<br />
%packager           Rino Rondan &lt;villadalmine@fedoraproject.org&gt;<br />
%vendor		    Rino Rondan &lt;villadalmine@fedoraproject.org&gt;</code></p>
<p><em>En el archivo creado vamos a poner informacion util a la hora de la creacion de nuestros paquetes.</em></p>
<p><strong>Luego nos bajamos algun paquete  en este caso el siguiente</strong></p>
<p><code><br />
wget  http://alvesadrian.fedorapeople.org/jupiter-0.1.4+svn04112012-1.fc16.src.rpm  -O $HOME/rpmbuild/SOURCES/jupiter-0.1.4+svn04112012-1.fc16.src.rpm<br />
</code></p>
<p><strong>Una vez que bajamos el src.rpm procedemos a instalarlo.</strong></p>
<blockquote><p>yum install HOME/rpmbuild/SOURCES/jupiter-0.1.4+svn04112012-1.fc16.src.rpm</p></blockquote>
<p><strong>Luego si hacemos un ls a :</strong></p>
<blockquote><p> ls -l $HOME/rpmbuild/SPECS</p></blockquote>
<p><em>Vamos  a ver que tenemos un archivo que se llama jupiter.spec donde tenemos justamente toda la info que vamos a utilizar para crear el paquete. Por ahora es necesario que entendamos como funciona la creacion luego mas adelante y con mas practica habra tiempo para chequear cada punto de este importante archivo.</em></p>
<p><strong>Ahora con este paso realizado podemos crear el paquetes vamos a ver tres formas.</strong></p>
<blockquote><p>rpmbuild -b[asb] paquete.spec</p></blockquote>
<p><em>Con la opcion a nos genera los archivos correspondientes en SRPMS y RPMS<br />
Con la opcion b nos genera los archivos correspondientes en RPMS<br />
Con la opcion s nos genera los archivos correspondientes en SRPMS</em></p>
<p><strong>Procedamos a ver cada caso en particular.</strong></p>
<p><em>cd $HOME/rpmbuild/SPECS</em><br />
<code><br />
[restauracion@...crond1/rpmbuild/SPECS $] rpmbuild -ba jupiter.spec<br />
Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.89AZcO<br />
+ umask 022<br />
+ cd /home/crond1/rpmbuild/BUILD<br />
+ LANG=C<br />
+ export LANG<br />
+ unset DISPLAY<br />
+ cd /home/crond1/rpmbuild/BUILD<br />
+ rm -rf jupiter-0.1.4+svn04112012<br />
+ /usr/bin/gzip -dc /home/crond1/rpmbuild/SOURCES/jupiter-0.1.4+svn04112012.tar.gz<br />
+ /bin/tar -xf -<br />
+ STATUS=0<br />
+ '[' 0 -ne 0 ']'<br />
+ cd jupiter-0.1.4+svn04112012<br />
+ /bin/chmod -Rf a+rX,u+w,g-w,o-w .<br />
+ exit 0<br />
Executing(%build): /bin/sh -e /var/tmp/rpm-tmp.z6HrH1<br />
+ umask 022<br />
+ cd /home/crond1/rpmbuild/BUILD<br />
+ cd jupiter-0.1.4+svn04112012<br />
+ LANG=C<br />
+ export LANG<br />
+ unset DISPLAY<br />
+ exit 0<br />
Executing(%install): /bin/sh -e /var/tmp/rpm-tmp.IXSAcf<br />
+ umask 022<br />
+ cd /home/crond1/rpmbuild/BUILD<br />
+ '[' /home/crond1/rpmbuild/BUILDROOT/jupiter-0.1.4+svn04112012-1.fc16.x86_64 '!=' / ']'<br />
+ rm -rf /home/crond1/rpmbuild/BUILDROOT/jupiter-0.1.4+svn04112012-1.fc16.x86_64<br />
++ dirname /home/crond1/rpmbuild/BUILDROOT/jupiter-0.1.4+svn04112012-1.fc16.x86_64<br />
+ mkdir -p /home/crond1/rpmbuild/BUILDROOT<br />
+ mkdir /home/crond1/rpmbuild/BUILDROOT/jupiter-0.1.4+svn04112012-1.fc16.x86_64<br />
+ cd jupiter-0.1.4+svn04112012<br />
+ LANG=C<br />
+ export LANG<br />
+ unset DISPLAY<br />
+ rm -rf /home/crond1/rpmbuild/BUILDROOT/jupiter-0.1.4+svn04112012-1.fc16.x86_64<br />
+ install -d /home/crond1/rpmbuild/BUILDROOT/jupiter-0.1.4+svn04112012-1.fc16.x86_64/etc/pm /home/crond1/rpmbuild/BUILDROOT/jupiter-0.1.4+svn04112012-1.fc16.x86_64/etc/xdg /home/crond1/rpmbuild/BUILDROOT/jupiter-0.1.4+svn04112012-1.fc16.x86_64/etc/pm/power.d /home/crond1/rpmbuild/BUILDROOT/jupiter-0.1.4+svn04112012-1.fc16.x86_64/etc/xdg/autostart<br />
+ install -d /home/crond1/rpmbuild/BUILDROOT/jupiter-0.1.4+svn04112012-1.fc16.x86_64/usr/share/applications /home/crond1/rpmbuild/BUILDROOT/jupiter-0.1.4+svn04112012-1.fc16.x86_64/usr/share/pixmaps<br />
+ install -d /home/crond1/rpmbuild/BUILDROOT/jupiter-0.1.4+svn04112012-1.fc16.x86_64/var/jupiter<br />
+ install -d /home/crond1/rpmbuild/BUILDROOT/jupiter-0.1.4+svn04112012-1.fc16.x86_64/usr /home/crond1/rpmbuild/BUILDROOT/jupiter-0.1.4+svn04112012-1.fc16.x86_64/usr/bin<br />
+ install -d /home/crond1/rpmbuild/BUILDROOT/jupiter-0.1.4+svn04112012-1.fc16.x86_64/usr/lib /home/crond1/rpmbuild/BUILDROOT/jupiter-0.1.4+svn04112012-1.fc16.x86_64/usr/lib/jupiter /home/crond1/rpmbuild/BUILDROOT/jupiter-0.1.4+svn04112012-1.fc16.x86_64/usr/lib/jupiter/scripts /home/crond1/rpmbuild/BUILDROOT/jupiter-0.1.4+svn04112012-1.fc16.x86_64/usr/lib/jupiter/kernel<br />
+ install pm/power.d/00-jupiter-cpu /home/crond1/rpmbuild/BUILDROOT/jupiter-0.1.4+svn04112012-1.fc16.x86_64/etc/pm/power.d/<br />
+ install xdg/autostart/jupiter-startup.desktop xdg/autostart/jupiter.desktop /home/crond1/rpmbuild/BUILDROOT/jupiter-0.1.4+svn04112012-1.fc16.x86_64/etc/xdg/autostart/<br />
+ install usr/share/applications/jupiter.desktop /home/crond1/rpmbuild/BUILDROOT/jupiter-0.1.4+svn04112012-1.fc16.x86_64/usr/share/applications/<br />
+ install usr/share/pixmaps/bluetooth.png usr/share/pixmaps/bolt1.png usr/share/pixmaps/bolt2.png usr/share/pixmaps/bolt3.png usr/share/pixmaps/bolt4.png usr/share/pixmaps/camera-web.png usr/share/pixmaps/devices.png usr/share/pixmaps/display.png usr/share/pixmaps/gnome-dev-wavelan.png usr/share/pixmaps/input-tablet.png usr/share/pixmaps/jupiter.png usr/share/pixmaps/ondemand.png usr/share/pixmaps/overclock.png usr/share/pixmaps/performance.png usr/share/pixmaps/powersave.png usr/share/pixmaps/resolution.png usr/share/pixmaps/rotate.png /home/crond1/rpmbuild/BUILDROOT/jupiter-0.1.4+svn04112012-1.fc16.x86_64/usr/share/pixmaps/<br />
+ install usr/lib/jupiter/scripts/bluetooth usr/lib/jupiter/scripts/cpu-control usr/lib/jupiter/scripts/jupiter usr/lib/jupiter/scripts/notify usr/lib/jupiter/scripts/resolutions usr/lib/jupiter/scripts/rotate usr/lib/jupiter/scripts/state usr/lib/jupiter/scripts/touchpad usr/lib/jupiter/scripts/vga-out usr/lib/jupiter/scripts/wifi /home/crond1/rpmbuild/BUILDROOT/jupiter-0.1.4+svn04112012-1.fc16.x86_64/usr/lib/jupiter/scripts/<br />
+ install usr/lib/jupiter/kernel/battery usr/lib/jupiter/kernel/power /home/crond1/rpmbuild/BUILDROOT/jupiter-0.1.4+svn04112012-1.fc16.x86_64/usr/lib/jupiter/kernel/<br />
+ install usr/bin/jupiter /home/crond1/rpmbuild/BUILDROOT/jupiter-0.1.4+svn04112012-1.fc16.x86_64/usr/bin/<br />
+ /usr/lib/rpm/find-debuginfo.sh --strict-build-id /home/crond1/rpmbuild/BUILD/jupiter-0.1.4+svn04112012<br />
find: `debug': No such file or directory<br />
+ /usr/lib/rpm/check-buildroot<br />
+ /usr/lib/rpm/redhat/brp-compress<br />
+ /usr/lib/rpm/redhat/brp-strip-static-archive /usr/bin/strip<br />
+ /usr/lib/rpm/brp-python-bytecompile /usr/bin/python 1<br />
+ /usr/lib/rpm/redhat/brp-python-hardlink<br />
+ /usr/lib/rpm/redhat/brp-java-repack-jars<br />
Processing files: jupiter-0.1.4+svn04112012-1.fc16.noarch<br />
warning: File listed twice: /etc/pm/power.d<br />
warning: File listed twice: /etc/pm/power.d/00-jupiter-cpu<br />
warning: File listed twice: /usr/lib/jupiter/kernel<br />
warning: File listed twice: /usr/lib/jupiter/scripts<br />
warning: File listed twice: /var/jupiter<br />
Requires(interp): /bin/sh /bin/sh<br />
Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1<br />
Requires(post): /bin/sh<br />
Requires(preun): /bin/sh<br />
Requires: /bin/bash /bin/sh /usr/bin/env<br />
Checking for unpackaged file(s): /usr/lib/rpm/check-files /home/crond1/rpmbuild/BUILDROOT/jupiter-0.1.4+svn04112012-1.fc16.x86_64<br />
Wrote: /home/crond1/rpmbuild/SRPMS/jupiter-0.1.4+svn04112012-1.fc16.src.rpm<br />
Wrote: /home/crond1/rpmbuild/RPMS/noarch/jupiter-0.1.4+svn04112012-1.fc16.noarch.rpm<br />
Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.tfcrM4<br />
+ umask 022<br />
+ cd /home/crond1/rpmbuild/BUILD<br />
+ cd jupiter-0.1.4+svn04112012<br />
+ /bin/rm -rf /home/crond1/rpmbuild/BUILDROOT/jupiter-0.1.4+svn04112012-1.fc16.x86_64<br />
+ exit 0<br />
[02:31:17]<br />
[restauracion@...crond1/rpmbuild/SPECS $]<br />
</code></p>
<p><em>Es bueno entender toda la salida porque nos va a facilitar muchas cosas pero siempre debemos instalar los paquetes para probarlo como corresponde.</em></p>
<p><strong>Miremos el contenido de los directorios que se modificaron al crear el paquete:</strong></p>
<p><strong>Aca podemos ver que en el directorio SRPMS nos deja el paquete fuente, por cada paquete que creamos vamos a tener el fuente que genere aqui.</strong><em></p>
<blockquote><p>[restauracion@...crond1/rpmbuild/SPECS $] ls $HOME/rpmbuild/SRPMS<br />
jupiter-0.1.4+svn04112012-1.fc16.src.rpm</p></blockquote>
<p><strong><em>En el siguiente directorio podemos ver que tenemos el paquete para la arquitecutra correspondiente, en este caso al ser un paquete de python no utiliza una arquitectura en particular porque utiliza la maquina virtual de python.</em></strong></p>
<blockquote><p>[restauracion@...crond1/rpmbuild/SPECS $] ls $HOME/rpmbuild/RPMS<br />
noarch</p></blockquote>
<p><strong><em><br />
Una vez adentro del directorio noarch encontramos el binario del paquete listo para instalar.</em></strong></p>
<blockquote><p>[restauracion@~$] ls $HOME/rpmbuild/RPMS/noarch<br />
jupiter-0.1.4+svn04112012-1.fc16.noarch.rpm</p></blockquote>
<p><strong>Vamos a borrar los archivos creados para probar con la siguiente opcion:</strong><br />
<code><br />
[restauracion@...crond1/rpmbuild/SPECS $] rm -rf $HOME/rpmbuild/RPMS/<br />
[03:16:42]<br />
[restauracion@...crond1/rpmbuild/SPECS $] rm -rf $HOME/rpmbuild/SRPMS/<br />
</code></p>
<p><strong>Al borrar nuestros viejos paquetes generamos damos pie para generarlo devuelta con esta opcion:</strong></p>
<blockquote><p>[restauracion@...crond1/rpmbuild/SPECS $] rpmbuild -bs jupiter.spec<br />
Wrote: /home/crond1/rpmbuild/SRPMS/jupiter-0.1.4+svn04112012-1.fc16.src.rpm
</p></blockquote>
<p><strong>Luego procedemos a chequear y vemos que en este directorio seguimos teniendo los fuentes creados mediante la creacion del paquete.</strong></p>
<blockquote><p>[restauracion@...crond1/rpmbuild/SPECS $] ls $HOME/rpmbuild/SRPMS<br />
jupiter-0.1.4+svn04112012-1.fc16.src.rpm</p></blockquote>
<p><strong>En este directorio no tenemos nada dado que al elegir la opcion -bs solo crea  los sources.</strong></p>
<p><code><br />
[restauracion@...crond1/rpmbuild/SPECS $] ls $HOME/rpmbuild/RPMS<br />
[03:38:55]<br />
[restauracion@...crond1/rpmbuild/SPECS $]<br />
</code></p>
<p><strong>Vamos a borrar el paquete que generamos para probar la ultima opcion:</strong></p>
<blockquote><p>restauracion@...crond1/rpmbuild/SPECS $] rm -r $HOME/rpmbuild/SRPMS/<br />
[03:54:39]</p></blockquote>
<p><strong><br />
Generamos devuelta el paquete pero esta vez con la opcion -bb.</strong></p>
<blockquote><p>[restauracion@...crond1/rpmbuild/SPECS $] rpmbuild -bb jupiter.spec </p></blockquote>
<p><strong>Como vemos al utilizar la opcion anterior no estoy generando los sources .</strong></p>
<blockquote><p>[restauracion@...crond1/rpmbuild/SPECS $] ls -l $HOME/rpmbuild/SRPMS<br />
total 0<br />
[03:57:20]</p></blockquote>
<p><strong><br />
Luego listamos el directorio RPMS para ver que ahora si tenemos los binarios correspondientes.</strong><br />
<code><br />
[restauracion@...crond1/rpmbuild/SPECS $] ls -l $HOME/rpmbuild/RPMS<br />
total 4<br />
drwxr-xr-x 2 crond1 crond1 4096 Apr 29 03:54 noarch<br />
[03:57:25]<br />
[restauracion@...crond1/rpmbuild/SPECS $] ls -l $HOME/rpmbuild/RPMS/noarch<br />
total 48<br />
-rw-rw-r-- 1 crond1 crond1 45181 Apr 29 03:54 jupiter-0.1.4+svn04112012-1.fc16.noarch.rpm<br />
[03:57:29]<br />
[restauracion@...crond1/rpmbuild/SPECS $]<br />
</code></p>
<p><strong>Ahora vamos a realizar la instalacion del paquete creado.</strong></p>
<p><code><br />
[restauracion@...crond1/rpmbuild/SPECS $] sudo yum install $HOME/rpmbuild/RPMS/noarch/jupiter-0.1.4+svn04112012-1.fc16.noarch.rpm<br />
Loaded plugins: fastestmirror, ibm-repository, langpacks, presto, refresh-packagekit, tidy-cache<br />
Examining /home/crond1/rpmbuild/RPMS/noarch/jupiter-0.1.4+svn04112012-1.fc16.noarch.rpm: jupiter-0.1.4+svn04112012-1.fc16.noarch<br />
Marking /home/crond1/rpmbuild/RPMS/noarch/jupiter-0.1.4+svn04112012-1.fc16.noarch.rpm to be installed<br />
Resolving Dependencies<br />
--> Running transaction check<br />
---> Package jupiter.noarch 0:0.1.4+svn04112012-1.fc16 will be installed<br />
--> Finished Dependency Resolution</p>
<p>Dependencies Resolved</p>
<p>==========================================================================================================================================================================================================<br />
 Package                             Arch                               Version                                                Repository                                                            Size<br />
==========================================================================================================================================================================================================<br />
Installing:<br />
 jupiter                             noarch                             0.1.4+svn04112012-1.fc16                               /jupiter-0.1.4+svn04112012-1.fc16.noarch                              68 k</p>
<p>Transaction Summary<br />
==========================================================================================================================================================================================================<br />
Install  1 Package</p>
<p>Total size: 68 k<br />
Installed size: 68 k<br />
Is this ok [y/N]: y<br />
Downloading Packages:<br />
Running Transaction Check<br />
Running Transaction Test<br />
Transaction Test Succeeded<br />
Running Transaction<br />
  Installing : jupiter-0.1.4+svn04112012-1.fc16.noarch                                                                                                                                                1/1<br />
warning: group jupiter does not exist - using root<br />
Adding Jupiter group<br />
Adding users to Jupiter group: crond1<br />
Adding jupiter to sudoers</p>
<p>Altering sudo tty permissions<br />
Setting permissions..<br />
  Verifying  : jupiter-0.1.4+svn04112012-1.fc16.noarch                                                                                                                                                1/1 </p>
<p>Installed:<br />
  jupiter.noarch 0:0.1.4+svn04112012-1.fc16                                                                                                                                                               </p>
<p>Complete!<br />
[04:10:27]<br />
[restauracion@/home/crond1/rpmbuild/SPECS $] </p>
<p></code></p>
<p><strong>Podemos ver que contiene:</strong></p>
<p><code><br />
[restauracion@/home/crond1/rpmbuild/SPECS $] rpm -ql jupiter<br />
/etc/pm/power.d<br />
/etc/pm/power.d/00-jupiter-cpu<br />
/etc/xdg/autostart/jupiter-startup.desktop<br />
/etc/xdg/autostart/jupiter.desktop<br />
/usr/bin/jupiter<br />
/usr/lib/jupiter/kernel<br />
/usr/lib/jupiter/kernel/battery<br />
/usr/lib/jupiter/kernel/power<br />
/usr/lib/jupiter/scripts<br />
/usr/lib/jupiter/scripts/bluetooth<br />
/usr/lib/jupiter/scripts/cpu-control<br />
/usr/lib/jupiter/scripts/jupiter<br />
/usr/lib/jupiter/scripts/notify<br />
/usr/lib/jupiter/scripts/resolutions<br />
/usr/lib/jupiter/scripts/rotate<br />
/usr/lib/jupiter/scripts/state<br />
/usr/lib/jupiter/scripts/touchpad<br />
/usr/lib/jupiter/scripts/vga-out<br />
/usr/lib/jupiter/scripts/wifi<br />
/usr/share/applications/jupiter.desktop<br />
/usr/share/pixmaps/bluetooth.png<br />
/usr/share/pixmaps/bolt1.png<br />
/usr/share/pixmaps/bolt2.png<br />
/usr/share/pixmaps/bolt3.png<br />
/usr/share/pixmaps/bolt4.png<br />
/usr/share/pixmaps/camera-web.png<br />
/usr/share/pixmaps/devices.png<br />
/usr/share/pixmaps/display.png<br />
/usr/share/pixmaps/gnome-dev-wavelan.png<br />
/usr/share/pixmaps/input-tablet.png<br />
/usr/share/pixmaps/jupiter.png<br />
/usr/share/pixmaps/ondemand.png<br />
/usr/share/pixmaps/overclock.png<br />
/usr/share/pixmaps/performance.png<br />
/usr/share/pixmaps/powersave.png<br />
/usr/share/pixmaps/resolution.png<br />
/usr/share/pixmaps/rotate.png<br />
/var/jupiter<br />
[04:10:54]<br />
[restauracion@/home/crond1/rpmbuild/SPECS $]<br />
</code></p>
<p><strong>Mas informacion:</strong></p>
<p><code><br />
[restauracion@/home/crond1/rpmbuild/SPECS $] rpm -qi jupiter<br />
Name        : jupiter<br />
Version     : 0.1.4+svn04112012<br />
Release     : 1.fc16<br />
Architecture: noarch<br />
Install Date: Sun 29 Apr 2012 04:10:23 AM ART<br />
Group       : X11/Applications<br />
Size        : 69714<br />
License     : GPL<br />
Signature   : (none)<br />
Source RPM  : jupiter-0.1.4+svn04112012-1.fc16.src.rpm<br />
Build Date  : Sun 29 Apr 2012 03:54:48 AM ART<br />
Build Host  : restauracion<br />
Relocations : (not relocatable)<br />
URL         : http://www.jupiterapplet.org/<br />
Summary     : Jupiter Control System for Computers<br />
Description :<br />
Hardware Control Interface for Computers<br />
[04:11:20]<br />
[restauracion@/home/crond1/rpmbuild/SPECS $]<br />
</code></p>
<p><strong>Ahora vamos a ver como funciona dado que es primordial hacer esto porque debemos testear que funcione bien:</strong></p>
<p><a href="http://www.itrestauracion.com.ar/go.php?http://www.itrestauracion.com.ar/wp-content/uploads/2012/04/Selection_219.png" title="(No click)"><img src="http://www.itrestauracion.com.ar/wp-content/uploads/2012/04/Selection_219.png" alt="" title="Selection_219" width="81" height="44" class="alignleft size-full wp-image-1471" /></a><br />
<a href="http://www.itrestauracion.com.ar/go.php?http://www.itrestauracion.com.ar/wp-content/uploads/2012/04/Selection_220.png" title="(No click)"><img src="http://www.itrestauracion.com.ar/wp-content/uploads/2012/04/Selection_220-300x205.png" alt="" title="Selection_220" width="300" height="205" class="alignright size-medium wp-image-1472" /></a></p>
<p><em>En la imagen de la izquierda tenemos los dos iconos significativos de Jupiter que nos va a gestionar el ahorro de energia, el primero es una notify de alerta que nos avisa que esta en modo de alto perfomance de ahorro de energia, el siguiete al hacerle click tenemos la configuracion de este. Luego a la derecha informacion acerca del programa.</em></p>
<p><strong>Deberiamos poder probar si no tenemos problemas al eliminar el paquete :</strong></p>
<p><code><br />
[restauracion@/home/crond1/rpmbuild/RPMS/noarch $] sudo yum remove jupiter<br />
Loaded plugins: fastestmirror, ibm-repository, langpacks, presto, refresh-packagekit, tidy-cache<br />
Resolving Dependencies<br />
--> Running transaction check<br />
---> Package jupiter.noarch 0:0.1.4+svn04112012-1.fc16 will be erased<br />
--> Finished Dependency Resolution</p>
<p>Dependencies Resolved</p>
<p>==========================================================================================================================================================================================================<br />
 Package                             Arch                               Version                                               Repository                                                             Size<br />
==========================================================================================================================================================================================================<br />
Removing:<br />
 jupiter                             noarch                             0.1.4+svn04112012-1.fc16                              @/jupiter-0.1.4+svn04112012-1.fc16.noarch                              68 k</p>
<p>Transaction Summary<br />
==========================================================================================================================================================================================================<br />
Remove  1 Package</p>
<p>Installed size: 68 k<br />
Is this ok [y/N]: y<br />
Downloading Packages:<br />
Running Transaction Check<br />
Running Transaction Test<br />
Transaction Test Succeeded<br />
Running Transaction<br />
  Erasing    : jupiter-0.1.4+svn04112012-1.fc16.noarch                                                                                                                                                1/1<br />
  Verifying  : jupiter-0.1.4+svn04112012-1.fc16.noarch                                                                                                                                                1/1 </p>
<p>Removed:<br />
  jupiter.noarch 0:0.1.4+svn04112012-1.fc16                                                                                                                                                               </p>
<p>Complete!<br />
[04:31:43]<br />
[restauracion@/home/crond1/rpmbuild/RPMS/noarch $]<br />
</code></p>
<p><strong>Chequeamos si esta :</strong></p>
<p><code><br />
[restauracion@/home/crond1/rpmbuild $] rpm -qa |grep jupiter<br />
[04:33:08]<br />
[restauracion@/home/crond1/rpmbuild $]<br />
</code></p>
<p><em>Si ahora utilizamos un archivo test que contiene la salida del comando rpm -ql jupiter que ejecutamos antes de removerlo,  vamos a tener las rutas que se instalaron.</em></p>
<p><code><br />
[restauracion@/home/crond1/rpmbuild $] cat test | xargs  ls -l<br />
ls: cannot access /etc/pm/power.d/00-jupiter-cpu: No such file or directory<br />
ls: cannot access /etc/xdg/autostart/jupiter-startup.desktop: No such file or directory<br />
ls: cannot access /etc/xdg/autostart/jupiter.desktop: No such file or directory<br />
ls: cannot access /usr/bin/jupiter: No such file or directory<br />
ls: cannot access /usr/lib/jupiter/kernel: No such file or directory<br />
ls: cannot access /usr/lib/jupiter/kernel/battery: No such file or directory<br />
ls: cannot access /usr/lib/jupiter/kernel/power: No such file or directory<br />
ls: cannot access /usr/lib/jupiter/scripts: No such file or directory<br />
ls: cannot access /usr/lib/jupiter/scripts/bluetooth: No such file or directory<br />
ls: cannot access /usr/lib/jupiter/scripts/cpu-control: No such file or directory<br />
ls: cannot access /usr/lib/jupiter/scripts/jupiter: No such file or directory<br />
ls: cannot access /usr/lib/jupiter/scripts/notify: No such file or directory<br />
ls: cannot access /usr/lib/jupiter/scripts/resolutions: No such file or directory<br />
ls: cannot access /usr/lib/jupiter/scripts/rotate: No such file or directory<br />
ls: cannot access /usr/lib/jupiter/scripts/state: No such file or directory<br />
ls: cannot access /usr/lib/jupiter/scripts/touchpad: No such file or directory<br />
ls: cannot access /usr/lib/jupiter/scripts/vga-out: No such file or directory<br />
ls: cannot access /usr/lib/jupiter/scripts/wifi: No such file or directory<br />
ls: cannot access /usr/share/applications/jupiter.desktop: No such file or directory<br />
ls: cannot access /usr/share/pixmaps/bluetooth.png: No such file or directory<br />
ls: cannot access /usr/share/pixmaps/bolt1.png: No such file or directory<br />
ls: cannot access /usr/share/pixmaps/bolt2.png: No such file or directory<br />
ls: cannot access /usr/share/pixmaps/bolt3.png: No such file or directory<br />
ls: cannot access /usr/share/pixmaps/bolt4.png: No such file or directory<br />
ls: cannot access /usr/share/pixmaps/camera-web.png: No such file or directory<br />
ls: cannot access /usr/share/pixmaps/devices.png: No such file or directory<br />
ls: cannot access /usr/share/pixmaps/display.png: No such file or directory<br />
ls: cannot access /usr/share/pixmaps/gnome-dev-wavelan.png: No such file or directory<br />
ls: cannot access /usr/share/pixmaps/input-tablet.png: No such file or directory<br />
ls: cannot access /usr/share/pixmaps/jupiter.png: No such file or directory<br />
ls: cannot access /usr/share/pixmaps/ondemand.png: No such file or directory<br />
ls: cannot access /usr/share/pixmaps/overclock.png: No such file or directory<br />
ls: cannot access /usr/share/pixmaps/performance.png: No such file or directory<br />
ls: cannot access /usr/share/pixmaps/powersave.png: No such file or directory<br />
ls: cannot access /usr/share/pixmaps/resolution.png: No such file or directory<br />
ls: cannot access /usr/share/pixmaps/rotate.png: No such file or directory<br />
/etc/pm/power.d:<br />
total 0</p>
<p>/var/jupiter:<br />
total 20<br />
-rwxrwxr-x 1 root jupiter 43 Apr 29 04:14 available_resolutions<br />
-rw-r--r-- 1 root root     6 Apr 29 04:14 cpu_mode<br />
-rw-r--r-- 1 root root     6 Apr 29 04:14 power<br />
-rw-r--r-- 1 root root     9 Apr 29 04:14 rotation_saved<br />
-rw-r--r-- 1 root root     6 Apr 29 04:14 vga_saved<br />
[04:33:50]</p>
<p></code></p>
<p><strong>Vemos que el directorio /var/jupiter quedo y contiene archivos creados porque lo ejecutamos una vez.</strong></p>
<p><em>Como vemos nos queda la pregunta , ¿ Esta bien que no borre esos archivos ?, la vamos a dejar pendiente para un proximo post cuando hablemos mas sobre el tema.<br />
Por ahora lo mejor es bajarse otros paquetes src.rpm y probar generar el paquete.<br />
Ya tenemos nuestra estructura de directorio ahora tan solo basta bajar otro src.rpm y colocarlo en $HOME/rmpbuild/SOURCES/.</em><br />
El paquete generado tambien lo pueden bajar de <a href="villadalmine.fedorapeople.org/jupiter-0.1.4+svn04112012-1.fc16.noarch.rpm">aca</a> tambien.</p>
<blockquote><p>Prueben hacer lo mismo pero con este paquete que fue empaquetado por la misma persona del primer ejemplo.[1]</p>
<p>http://alvesadrian.fedorapeople.org/encuentro-0.5-7.fc16.src.rpm</p></blockquote>
<p><strong>Ahora si quisieramos bajar algun paquete src deberiamos habilitar el repo correspondiente de sources.</strong></p>
<blockquote><p>Editamos el archivo /etc/yum.repos.d/fedora.repo  y donde dice enabled=0 lo cambiamos por 1.</p></blockquote>
<p><code><br />
[root@restauracion yum.repos.d]# yum --disablerepo=\* --enablerepo=fedora-source repolist<br />
Loaded plugins: fastestmirror, ibm-repository, langpacks, presto, refresh-packagekit, tidy-cache<br />
Loading mirror speeds from cached hostfile<br />
 * fedora-source: fedora.mirrorcatalogs.com<br />
repo id                                                                                        repo name                                                                                            status<br />
fedora-source                                                                                  Fedora 16 - Source                                                                                   0<br />
repolist: 0<br />
[root@restauracion yum.repos.d]#<br />
</code></p>
<p><strong>Luego procedemos a bajar un paquete en especial.</strong><br />
<code><br />
[root@restauracion yum.repos.d]# yum --disablerepo=\* --enablerepo=fedora-source search wget<br />
Loaded plugins: fastestmirror, ibm-repository, langpacks, presto, refresh-packagekit, tidy-cache<br />
Loading mirror speeds from cached hostfile<br />
 * fedora-source: fedora.mirrorcatalogs.com<br />
=========================================================================================== N/S Matched: wget ============================================================================================<br />
wget.x86_64 : A utility for retrieving files using the HTTP or FTP protocols</p>
<p>  Name and summary matches only, use "search all" for everything.<br />
[root@restauracion yum.repos.d]#<br />
</code><br />
<strong>Procedemos a bajar el fuente:</strong><br />
</code><br />
[restauracion@/home/crond1/rpmbuild/SOURCES $] yumdownloader &#8211;source wget<br />
Loaded plugins: fastestmirror, ibm-repository, langpacks, presto, refresh-packagekit<br />
Loading mirror speeds from cached hostfile<br />
 * fedora: mirror.metrocast.net<br />
 * fedora-source: mirror.metrocast.net<br />
  * updates: mirror.cc.vt.edu<br />
Enabling updates-source repository<br />
updates-source/metalink                                                                                                                                                            |  12 kB     00:00<br />
updates-source                                                                                                                                                                     | 3.3 kB     00:00<br />
updates-source/primary_db                                                                                                                                                          | 1.0 MB     00:01<br />
Enabling rpmfusion-nonfree-updates-source repository<br />
rpmfusion-nonfree-updates-source                                                                                                                                                   | 2.7 kB     00:00<br />
rpmfusion-nonfree-updates-source/primary_db                                                                                                                                        |  26 kB     00:00<br />
Enabling rpmfusion-nonfree-source repository<br />
rpmfusion-nonfree-source                                                                                                                                                           | 2.7 kB     00:00<br />
rpmfusion-nonfree-source/primary_db                                                                                                                                                |  33 kB     00:00<br />
Enabling rpmfusion-free-updates-source repository<br />
rpmfusion-free-updates-source                                                                                                                                                      | 2.7 kB     00:00<br />
rpmfusion-free-updates-source/primary_db                                                                                                                                           |  69 kB     00:00     </p>
<p>wget-1.12-4.fc16.src.rpm                                                                                                                                                           | 1.6 MB     00:02<br />
[05:05:08]<br />
[restauracion@/home/crond1/rpmbuild/SOURCES $]<br />
<code></p>
<p><strong>Luego procedemos a instalar el paquete (dentro de $HOME/rmpbuild/SOURCES):</strong></p>
<p><code><br />
rpm -ivh wget-1.12-4.fc16.src.rpm<br />
rpm -Uvh wget-1.12-4.fc16.src.rpm<br />
yum install wget-1.12-4.fc16.src.rpm<br />
</code></p>
<p><strong>Luego nos vamos al directorio $HOME/rpmbuild/SPECS :</strong><br />
<code><br />
[restauracion@/home/crond1/rpmbuild/SPECS $] ls<br />
jupiter.spec  wget.spec<br />
[05:08:14]<br />
[restauracion@/home/crond1/rpmbuild/SPECS $]<br />
</code></p>
<p><strong>Ahora generamos el paquete instalador .</strong></p>
<p><code><br />
[restauracion@/home/crond1/rpmbuild/SPECS $] rpmbuild -bb wget.spec<br />
error: Failed build dependencies:<br />
	openssl-devel is needed by wget-1.12-4.fc16.x86_64<br />
[05:10:17]<br />
[restauracion@/home/crond1/rpmbuild/SPECS $]<br />
</code></p>
<p><strong>Como veran no cumplio con los requerimientos por lo cual se necesita esa libreria para poder empaquetarlo, procedamos a instalarla.</strong></p>
<p><ocde><br />
sudo yum install openssl-devel<br />
</code></p>
<p><strong>Luego de instalarla ahora si probemos generar el a paquete:</strong></p>
<p><code><br />
[restauracion@/home/crond1/rpmbuild/SPECS $] rpmbuild -bb wget.spec<br />
[restauracion@/home/crond1/rpmbuild/SPECS $] ls -l ../RPMS/<br />
total 8<br />
drwxr-xr-x 2 crond1 crond1 4096 Apr 29 03:54 noarch<br />
drwxr-xr-x 2 crond1 crond1 4096 Apr 29 05:13 x86_64<br />
[restauracion@/home/crond1/rpmbuild/SPECS $] ls -l ../RPMS/x86_64/wget-<br />
wget-1.12-4.fc16.x86_64.rpm            wget-debuginfo-1.12-4.fc16.x86_64.rpm<br />
[05:13:56]<br />
[restauracion@/home/crond1/rpmbuild/SPECS $] ls -l ../RPMS/x86_64/wget-*<br />
-rw-rw-r-- 1 crond1 crond1 487649 Apr 29 05:12 ../RPMS/x86_64/wget-1.12-4.fc16.x86_64.rpm<br />
-rw-rw-r-- 1 crond1 crond1 599325 Apr 29 05:13 ../RPMS/x86_64/wget-debuginfo-1.12-4.fc16.x86_64.rpm<br />
[05:14:06]<br />
[restauracion@/home/crond1/rpmbuild/SPECS $] </p>
<p></code></p>
<p><strong>La salida sera u poco grande pero tuvimos el resultado esperado, tenemos nuestro paquete binario listo para instalar.</strong><br />
<em>Ahora pueden empezar a probar a bajarse paquetes src.rpm y empezar a crear sus propios paquetes ademas tambien pueden mirar los spec files para ir enteniendo un poco mas acerca de ellos.</em></p>
<blockquote><p><strong>Queria terminar este post agradeciendo a Adrian Alves que es developer para Fedora y gracias a el este post pudo ser escrito con la idea de plasmar todos los conocimeintos que voy adquiriendo de su enseñanza.</strong></p></blockquote>
<p><em>Espero que como me paso a mi esto les abra las puertas a un mundo nuevo&#8230;.</em></p>
<p>[1]http://alvesadrian.fedorapeople.org/  https://fedoraproject.org/wiki/User:Alvesadrian</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.itrestauracion.com.ar%2F%3Fp%3D1445&amp;title=Creacion%20de%20un%20paquete%20rpm%20a%20partir%20del%20src.rpm" id="wpa2a_2"><img src="http://www.itrestauracion.com.ar/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.itrestauracion.com.ar/?feed=rss2&#038;p=1445</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
	</item>
		<item>
		<title>Configurando nuestro prompt en bash</title>
		<link>http://www.itrestauracion.com.ar/?p=1434</link>
		<comments>http://www.itrestauracion.com.ar/?p=1434#comments</comments>
		<pubDate>Sun, 15 Apr 2012 05:33:12 +0000</pubDate>
		<dc:creator>restauracion</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.itrestauracion.com.ar/?p=1434</guid>
		<description><![CDATA[En este breve post vamos a ver como personalizar nuestra terminal para poder tener entre otras cosas, colores. Lo primero que deberiamos mirar es el siguiente link para poder entender acerca de las diferentes posibilidades que tenemos: ANSI ESCAPE CODE &#8230; <a href="http://www.itrestauracion.com.ar/?p=1434">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>En este breve post vamos a ver como  personalizar nuestra terminal para poder tener entre otras cosas, colores.<br />
Lo primero que deberiamos mirar es el siguiente link para poder entender acerca de las diferentes posibilidades que tenemos:<br />
<a href="http://www.itrestauracion.com.ar/go.php?http://ascii-table.com/ansi-escape-sequences.php" title="(No click)">ANSI ESCAPE CODE</a></p>
<p>Lo primero que deberiamos repasar es la variable mas significativa para el uso del prompt ( PS1 ).<br />
Utilizando los siguientes valores de la tabla de ANSI podremos cambiar el color del a letra y el fondo:</p>
<p><code><br />
Esc[Value;...;Valuem 	Set Graphics Mode</p>
<p>Foreground colors<br />
30	Black<br />
31	Red<br />
32	Green<br />
33	Yellow<br />
34	Blue<br />
35	Magenta<br />
36	Cyan<br />
37	White</p>
<p>Background colors<br />
40	Black<br />
41	Red<br />
42	Green<br />
43	Yellow<br />
44	Blue<br />
45	Magenta<br />
46	Cyan<br />
47	White<br />
</code><br />
Utilizando algunos ejemplos:<br />
<code><br />
[crond1@restauracion /etc]$ PS1="[\u-\V]\n[\w]$"<br />
[crond1-4.2.24]<br />
[/etc]$<br />
</code></p>
<p>En el ejemplo descripto arriba hemos seteado nuestro prompt para que nos de el nombre de usuario seguido de la version de bash, luego debajo tenemos el directorio donde estamos trabajando y el signo $ para terminar nuestro prompt.</p>
<p>Ahora podriamos ponerle algun color segun la norma ANSI:</p>
<p><code><br />
[/etc]$LRED="\[\e[01;31m\]"<br />
[crond1-4.2.24]<br />
[/etc]$PS1="[${LRED}\u-\V]\n[\w]$"<br />
[crond1-4.2.24]<br />
[/etc]$<br />
</code></p>
<p>En este caso definimos una variable local que nos  da el color rojo y aplica a todo lo que viene despues, por eso nos queda todo el prompt rojo salvo el primero corchete que dado que esta detras de la variable RED, los valores que estan dentro de la variable red tienen que ver con la forma que se escriben segun la tabla de ANSI.<br />
Tener en cuenta que ahora todo lo que escribamos sera rojo, por eso conviene al final agregarle un valor por defecto como DEFAULT=&#8221;\[\e[0m\]&#8221; , quedando asi mi variable PS1=&#8221;[${LRED}\u-\V]\n[\w]$ ${DEFAULT} &#8221;<br />
<code></p>
<p>[/etc]$DEFAULT="\[\e[0m\]"<br />
[crond1-4.2.24]<br />
[/etc]$PS1="[${LRED}\u-\V]\n[\w]$ ${DEFAULT} "<br />
[crond1-4.2.24]<br />
[/etc]$  pwd</p>
<p></code></p>
<p>Ahi lo tenemos configurado para que escriba todo lo demas con el color blanco.<br />
Podriamos generar algun archivo con funciones para poder utilizar y cargar nuestros valores, pero primero vamos a probar algunos ejemplos:</p>
<p><code><br />
[/etc]$  echo -e "${LRED}prueba"<br />
\[\]prueba<br />
[crond1-4.2.24]<br />
[/etc]$  LRED="\[\e[01;31m\]"<br />
[crond1-4.2.24]<br />
[/etc]$  echo -e "${LRED}prueba"<br />
\[\]prueba<br />
[crond1-4.2.24]<br />
[/etc]$<br />
[/etc]$  LRED="\[\e[04;31m\]"<br />
[crond1-4.2.24]<br />
[/etc]$  echo -e "${LRED}prueba"<br />
\[\]prueba<br />
[crond1-4.2.24]<br />
[/etc]$<br />
[crond1-4.2.24]<br />
[/etc]$  LRED="\[\e[07;31m\]"<br />
[crond1-4.2.24]<br />
[/etc]$  echo -e "${LRED}prueba"<br />
\[\]prueba<br />
[crond1-4.2.24]<br />
[/etc]$<br />
</code></p>
<p>En los ejemplos anteriores lo que hicimos fue mostrar el texto con diferentes atributos:<br />
<code><br />
Text attributes<br />
0	All attributes off<br />
1	Bold on<br />
4	Underscore (on monochrome display adapter only)<br />
5	Blink on<br />
7	Reverse video on<br />
8	Concealed on<br />
</code></p>
<p>Tambien nuestro bash interpreta ciertos codigos para mostrarnos algunos valores especificos utilizando los siguientes ejemplos:<br />
<code><br />
Bash permite que esas cadenas de prompts sean personalizadas al insertar un<br />
número de carácteres especiales de barra invertida de escape que son<br />
decodificados como sigue:</p>
<p>  \a         un caracter de campana ASCII (07)<br />
  \d         la fecha en formato "Día Mes Fecha" (p.ej., "Tue May 26" - Mar May 26)<br />
  \D{format} el formato es pasado a strftime(3) y el resultado<br />
             es insertado en la cadena del prompt. un formato vacío<br />
             resulta en un tiempo de representación específico del locale.<br />
             Se requieren los tirantes<br />
  \e         un carácter de escape ASCII (033)<br />
  \h         el nombre de anfitrión hasta el primer `.'<br />
  \H         el nombre de anfitrión<br />
  \j         la cantidad de trabajos actualmente manejados por el shell<br />
  \l         el nombre base del nombre de dispositivo de la terminal del shell<br />
  \n         línea nueva<br />
  \r         retorno de carro<br />
  \s         el nombre del shell, el nombre base de $0 (la porción siguiendo<br />
             la barra final)<br />
  \t         el tiempo actual en un formato de 24-horas HH:MM:SS<br />
  \T         el tiempo actual en un formato de 12-horas HH:MM:SS<br />
  \@         el tiempo actual en un formato de 12-horas am/pm<br />
  \A         el tiempo actual en un formato de 24-horas HH:MM<br />
  \u         el nombre de usuario del usuario actual<br />
  \v         la versión de bash (p.ej., 2.00)<br />
  \V         la liberación de bash, versión + nivel de parche (p.ej., 2.00.0)<br />
  \w         el directorio de trabajo actual, con $HOME abreviado con una tilde<br />
  \W         el nombre base del directorio de trabajo actual, con $HOME<br />
             abreviado con una tilde<br />
  \!         el número de historial de este comando<br />
  \#         el número de comando de éste comando<br />
  \$         si el UID efectivo es 0, un #, de lo contrario un $<br />
  \nnn       el carácter correspondiendo al número octal nnn<br />
  \\         una barra inversa<br />
  \[         comienza una secuencia de carácteres no imprimibles, los cuales podrían ser usados<br />
             para embeber una secuencia de control de terminal en el prompt<br />
  \]         terminar una secuencia de carácteres no imprimibles</p>
<p></code><br />
Con estos codigos podemos hacer que nuestro prompt nos devuelva informacion importante segun el uso que le quiseramos dar.</p>
<p>Teniendo en cuenta todo lo anterior podriamos armarnos nuestras reglas en nuestro profile para utilizar el prompt como deseemos.</p>
<p>Creamos el siguiente archivo en nuestro $HOME.<br />
<code><br />
ARCHIVO --> .prompt<br />
#!/bin/bash</p>
<p>prompt_path_set()<br />
{<br />
    CWD=${PWD}</p>
<p>    local COUNT_SPACE_OVER=$((${#CWD}-${PATH_WIDTH}+3))<br />
    if [ ${COUNT_SPACE_OVER:-0} -ge 0 ] ; then<br />
        TMP=''<br />
        while [ ${COUNT_SPACE_OVER:-0} -ne 0 ]<br />
        do<br />
            COUNT_SPACE_OVER=$((${COUNT_SPACE_OVER}-1))<br />
            TMP="?${TMP}"<br />
        done</p>
<p>        CWD="...${CWD#${TMP}}"<br />
    fi<br />
}</p>
<p>PROMPT_COMMAND=precmd<br />
precmd()<br />
{<br />
#############<br />
#COLOR CODES#<br />
#############<br />
local PATH_WIDTH=$((${COLUMNS:-80} / 4))<br />
local DEFAULT="\[\e[0m\]"<br />
local BOLD="\[\e[1m\]"<br />
local HIDDEN="\[\e[8m\]"<br />
local BLACK="\[\e[00;30m\]"<br />
local GRAY="\[\e[01;30m\]"<br />
local RED="\[\e[00;31m\]"<br />
local LRED="\[\e[01;31m\]"<br />
local GREEN="\[\e[00;32m\]"<br />
local LGREEN="\[\e[01;32m\]"<br />
local BROWN="\[\e[00;33m\]"<br />
local YELLOW="\[\e[01;33m\]"<br />
local BLUE="\[\e[00;34m\]"<br />
local LBLUE="\[\e[01;34m\]"<br />
local PURPLE="\[\e[00;35m\]"<br />
local LPURPLE="\[\e[01;35m\]"<br />
local CYAN="\[\e[00;36m\]"<br />
local LCYAN="\[\e[01;36m\]"<br />
local LGRAY="\[\e[00;37m\]"<br />
local WHITE="\[\e[01;37m\]"<br />
local BARRAPESOS="\\$"<br />
local CWD<br />
local TMP</p>
<p>prompt_path_set</p>
<p>PS1="${CYAN}[${LGRAY}\t${CYAN}]\n${CYAN}[${WHITE}${BOLD}\h${YELLOW}@${LBLUE}${CWD} ${LCYAN}${BARRAPESOS}${CYAN}]${DEFAULT} "</p>
<p># ESC   DESCRIPTION<br />
# \a    an ASCII bell character (07)<br />
# \d    the date in "Weekday Month Date" format (e.g., "Tue May 26")<br />
# \e    an ASCII escape character (033)<br />
# \h    the hostname up to the first `.'<br />
# \H    the hostname<br />
# \j    the number of jobs currently managed by the shell<br />
# \l    the basename of the shell's terminal device name<br />
# \n    newline<br />
# \r    carriage return<br />
# \s    the name of the shell, the basename of $0 (the portion following the final slash)<br />
# \t    the current time in 24-hour HH:MM:SS format<br />
# \T    the current time in 12-hour HH:MM:SS format<br />
# \@    the current time in 12-hour am/pm format<br />
# \u    the username of the current user<br />
# \v    the version of bash (e.g., 2.00)<br />
# \V    the release of bash, version + patchlevel (e.g., 2.00.0)<br />
# \w    the current working directory<br />
# \W    the basename of the current working directory<br />
# \!    the history number of this command<br />
# \#    the command number of this command<br />
# \$    if the effective UID is 0, a #, otherwise a $<br />
# \nnn  the character corresponding to the octal number nnn<br />
# \\    a backslash<br />
# \[    begin a sequence of non-printing characters, which could be used to embed a terminal control sequence into the prompt<br />
# \]    end a sequence of non-printing characters<br />
}</p>
<p><code></p>
<p>Luego en nuestro .bashrc agregamos la siguiente linea:</p>
<p><code><br />
echo ". ${HOME}/.prompt" >> $HOME/.bashrc<br />
</code><br />
Mirando mas profundamente la documentacion vemos que son muchas las variantes que podemos hacer pero lo ideal es ir probando lo mas basico para ir asimilando como funciona asi luego avanzar con los parametros mas avanzados. </p>
<p>Fuentes:<br />
<a href="http://www.itrestauracion.com.ar/go.php?http://ascii-table.com/ansi-escape-sequences.php" title="(No click)">ANSI ESCAPE CODE</a><br />
<a href="http://www.itrestauracion.com.ar/go.php?http://www.hypexr.org/bash_tutorial.php" title="(No click)">Bash Tutorial</a><br />
<a href="http://www.itrestauracion.com.ar/go.php?http://tldp.org/HOWTO/Bash-Prompt-HOWTO/c327.html" title="(No click)">TLDP</a><br />
<a href="http://www.itrestauracion.com.ar/go.php?http://mipagina.euskaltel.es/iosus/linux/Bash-Prompt-HOWTO-5.html" title="(No click)">Bash-How-To</a><br />
<a href="http://www.itrestauracion.com.ar/go.php?http://mipagina.euskaltel.es/iosus/linux/Bash-Prompt-HOWTO-5.html" title="(No click)">PS1 Examples</a><br />
<a href="http://www.itrestauracion.com.ar/go.php?http://www.chakra-linux.org/wiki/index.php/Color_Bash_Prompt/es" title="(No click)">Color_Bash_Prompt/es</a><br />
<a href="http://www.itrestauracion.com.ar/go.php?http://www.askapache.com/linux/bash-power-prompt.html" title="(No click)">bash-power-prompt</a></p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.itrestauracion.com.ar%2F%3Fp%3D1434&amp;title=Configurando%20nuestro%20prompt%20en%20bash" id="wpa2a_4"><img src="http://www.itrestauracion.com.ar/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.itrestauracion.com.ar/?feed=rss2&#038;p=1434</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
	</item>
		<item>
		<title>Creacion de un certificado firmado por uno mismo.</title>
		<link>http://www.itrestauracion.com.ar/?p=1406</link>
		<comments>http://www.itrestauracion.com.ar/?p=1406#comments</comments>
		<pubDate>Sun, 26 Feb 2012 23:08:16 +0000</pubDate>
		<dc:creator>restauracion</dc:creator>
				<category><![CDATA[Hosting]]></category>
		<category><![CDATA[Redes]]></category>
		<category><![CDATA[Seguridad]]></category>

		<guid isPermaLink="false">http://www.itrestauracion.com.ar/?p=1406</guid>
		<description><![CDATA[Vamos a ver como crear un certificado firmado por nosotros mismos, en este caso el uso que le voy a dar es para poder establecer una conexion seguro con mi irc. Primeros Pasos: Preparacion de los directorios. [ircadmin@jmr conf]$ pwd &#8230; <a href="http://www.itrestauracion.com.ar/?p=1406">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Vamos a ver como crear un certificado firmado por nosotros mismos, en este caso el uso que le voy a dar es para poder establecer una conexion seguro con mi irc.</p>
<p><strong>Primeros Pasos:</strong><br />
Preparacion de los directorios.<br />
<code><br />
[ircadmin@jmr conf]$ pwd<br />
/home/ircadmin/conf<br />
[ircadmin@jmr conf]$ mkdir cert<br />
[ircadmin@jmr conf]$<br />
</code><br />
Importante que tengan permiso 700 para su correcta proteccion..</p>
<p><strong>Comandos a Utilizar:</strong><br />
Vamos a generar la llave privada del servidor, en este caso para apache no necesita que se introduzca el password para su inicio. Tener en cuenta que nos pedira protegerlo con una password lo suficientemente poderosa para evitar problemas.<br />
<code><br />
[ircadmin@jmr cert]$ openssl genrsa -des3 -out server.key 4096<br />
Generating RSA private key, 4096 bit long modulus<br />
......................................................................++<br />
..................................................................................................................................................................++<br />
e is 65537 (0x10001)<br />
Enter pass phrase for server.key:<br />
Verifying - Enter pass phrase for server.key:<br />
[ircadmin@jmr cert]$<br />
</code></p>
<p><strong>Creacion de la solicitud de firma de certificado</strong><br />
En este paso vamos a crear la solicitud de firma de certificado con la clave que hemos creado antes, utilizando el archivo creado anteriormente.<br />
Vamos a tener que poner algunos datos para demostrar que somos los que decimos, esto no valida nada dado que no estamos aprobados por ningun centro de autorizacion internacional o avalado.</p>
<p><code><br />
[ircadmin@jmr cert]$ openssl req -new -key server.key -out server.csr<br />
Enter pass phrase for server.key:<br />
You are about to be asked to enter information that will be incorporated<br />
into your certificate request.<br />
What you are about to enter is what is called a Distinguished Name or a DN.<br />
There are quite a few fields but you can leave some blank<br />
For some fields there will be a default value,<br />
If you enter '.', the field will be left blank.<br />
-----<br />
Country Name (2 letter code) [GB]:AR<br />
State or Province Name (full name) [Berkshire]:BSAS<br />
Locality Name (eg, city) [Newbury]:CAMPANA<br />
Organization Name (eg, company) [My Company Ltd]:ITRESTAURACION<br />
Organizational Unit Name (eg, section) []:<br />
Common Name (eg, your name or your server's hostname) []:irc.restauradordeleyes.com.ar<br />
Email Address []:villadalmine@fedoraproject.org</code></p>
<p><code> </code></p>
<p><code>Please enter the following 'extra' attributes<br />
to be sent with your certificate request<br />
A challenge password []:<br />
An optional company name []:<br />
[ircadmin@jmr cert]$<br />
</code></p>
<p><strong>Firmar mi certificado:</strong><br />
Vamos ahora a firmar nuestro certificado. Podemos elegir la cantidad de dias que va a durar.<br />
<code><br />
[ircadmin@jmr cert]$ openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt<br />
Signature ok<br />
subject=/C=AR/ST=BSAS/L=CAMPANA/O=ITRESTAURACION/CN=irc.restauradordeleyes.com.ar/emailAddress=villadalmine@fedoraproject.org<br />
Getting Private key<br />
Enter pass phrase for server.key:<br />
[ircadmin@jmr cert]$<br />
</code></p>
<p>Para obtener la huella y mas info.</p>
<p><code><br />
[ircadmin@jmr cert]$ openssl x509 -noout -fingerprint -text &lt; server.crt<br />
SHA1 Fingerprint=63:B9:D0:DA:50:B6:2A:89:94:6B:6F:1F:9B:15:59:F9:B0:6E:39:25<br />
Certificate:<br />
Data:<br />
Version: 1 (0x0)<br />
Serial Number:<br />
d0:48:16:14:75:12:5b:60<br />
Signature Algorithm: sha1WithRSAEncryption<br />
Issuer: C=AR, ST=BSAS, L=CAMPANA, O=ITRESTAURACION, CN=irc.restauradordeleyes.com.ar/emailAddress=villadalmine@fedoraproject.org<br />
Validity<br />
Not Before: Feb 26 22:09:54 2012 GMT<br />
Not After : Feb 25 22:09:54 2013 GMT<br />
Subject: C=AR, ST=BSAS, L=CAMPANA, O=ITRESTAURACION, CN=irc.restauradordeleyes.com.ar/emailAddress=villadalmine@fedoraproject.org<br />
Subject Public Key Info:<br />
Public Key Algorithm: rsaEncryption<br />
RSA Public Key: (4096 bit)<br />
Modulus (4096 bit):<br />
00:9d:0b:dd:6e:58:a9:bc:03:98:db:db:9c:bf:81:<br />
b8:f7:0f:9d:0c:11:25:3c:70:d3:35:ff:65:f3:99:<br />
9a:f5:44:95:4c:25:7c:0e:65:a8:22:38:14:3e:1d:<br />
08:01:76:18:0a:9f:b7:28:5c:b9:1a:96:d3:3a:44:<br />
87:90:40:f2:f0:b4:7f:46:ea:68:62:b0:13:ae:c2:<br />
7f:94:92:6f:01:ce:ac:b2:4a:33:0a:58:fc:6d:c4:<br />
86:33:d5:c4:1d:ff:c8:bb:68:0f:b6:0d:85:ab:08:<br />
53:ca:3f:f0:fa:28:c0:5e:7c:87:a6:7d:7c:46:0d:<br />
c2:e4:b9:83:4e:37:52:d6:b7:5d:7a:c5:51:f9:dc:<br />
2e:88:11:55:6b:34:30:de:27:16:6d:f5:9e:e7:76:<br />
40:24:ef:8e:67:59:78:e9:c8:21:ae:c9:a4:b8:85:<br />
8e:f0:18:10:79:13:0e:ee:4f:c7:a0:72:0b:84:39:<br />
5e:d1:8a:a1:d3:4c:19:42:35:1a:17:3e:a7:8d:80:<br />
30:1a:29:ab:0e:40:e2:b4:4b:8b:4a:85:ab:8f:41:<br />
1b:fe:a6:be:b4:90:31:f2:3d:9f:e7:72:88:32:9e:<br />
bd:43:47:38:59:e3:06:2a:3f:7f:3a:a2:ed:68:2b:<br />
db:6e:20:95:34:e3:2b:74:6e:a2:d4:12:7a:5e:00:<br />
26:4b:5c:9f:85:96:3c:bc:19:fe:43:2c:85:b4:c4:<br />
82:69:04:9c:63:6d:ff:6a:40:9a:c3:7c:8e:a7:44:<br />
f8:0e:45:a9:44:cf:d6:d1:ad:e9:ee:4f:9e:72:ba:<br />
22:2b:91:c7:0f:68:04:f2:08:f9:77:e9:cf:af:56:<br />
43:a6:ee:17:15:e5:98:e4:44:42:8d:b9:13:ce:0c:<br />
6f:1e:17:bd:20:47:a5:b1:54:39:6e:d7:18:c2:21:<br />
e2:7d:d6:73:71:dc:45:e6:9b:68:15:a7:82:e7:03:<br />
95:d1:6e:5f:2c:00:0e:60:de:3d:13:d2:66:7d:f3:<br />
88:c2:25:96:a0:31:56:75:1b:70:af:03:31:8e:ec:<br />
b3:c0:fb:8d:05:9c:1c:b1:b8:92:d7:5b:36:4a:1c:<br />
99:1e:54:67:f9:7c:a6:d3:35:c8:ed:42:3a:bc:8c:<br />
88:d3:5f:ef:21:01:98:e8:9b:66:32:62:e7:1f:79:<br />
e6:ae:0c:76:85:23:b4:f2:11:61:31:9e:a0:88:d1:<br />
65:9d:74:ba:8e:21:6e:f3:b6:b5:42:f9:2c:8d:cb:<br />
2c:23:47:f8:bd:74:01:fd:e3:39:2d:b3:51:b9:6a:<br />
6c:53:27:d0:26:33:fd:93:57:18:79:f5:12:1a:5b:<br />
b2:fc:c9:6f:c0:17:96:e4:3e:cd:59:1e:60:1a:5e:<br />
76:60:bb<br />
Exponent: 65537 (0x10001)<br />
Signature Algorithm: sha1WithRSAEncryption<br />
0b:98:75:da:67:f0:7d:84:67:d9:e2:3d:a1:a0:57:3e:5e:32:<br />
c1:c1:f2:92:b5:dc:52:c6:19:71:6e:be:fa:a3:fb:39:b7:33:<br />
24:30:47:95:5f:ae:51:f9:7d:92:48:f1:3e:4c:93:87:15:45:<br />
f2:db:1a:04:13:4e:ea:9c:cd:d0:af:6f:97:84:fb:e5:14:1e:<br />
2d:eb:1c:09:86:a9:7b:75:fa:d4:90:95:a7:e1:62:88:c6:7b:<br />
18:c7:29:0d:73:e1:a6:cd:eb:17:ff:0b:3e:3e:02:85:69:4a:<br />
33:ad:59:3d:48:6a:73:1e:bd:a2:2c:fb:70:e6:22:47:43:03:<br />
23:8b:de:d5:8b:e7:69:60:76:46:47:aa:a8:0b:af:0d:74:54:<br />
da:45:1c:7b:5e:45:4d:0c:40:68:5b:7d:7e:10:d6:4b:a5:42:<br />
22:b5:ef:9f:2b:18:f5:7b:99:2a:36:d2:e5:6b:5e:4e:3f:4d:<br />
99:19:99:a3:19:b8:1c:27:a4:60:0d:60:18:7d:4e:71:f4:cd:<br />
2c:19:31:df:2f:50:93:92:8b:75:b3:18:8b:b6:84:d3:4b:ef:<br />
3b:63:32:fa:9a:47:3a:0e:2e:ea:10:29:8e:d9:a2:e9:11:e3:<br />
2e:77:9f:93:da:b3:7c:90:fd:67:f7:a4:c8:8e:75:6c:2b:83:<br />
da:d3:89:8a:f7:43:07:da:1a:01:8d:7d:40:c2:30:3f:48:a4:<br />
0e:36:2d:78:43:8c:17:7e:2d:e9:47:98:f0:77:33:53:bf:88:<br />
d3:71:88:5a:1e:65:2f:88:25:01:84:fa:d1:ad:4a:24:63:70:<br />
ee:31:1a:5b:25:52:39:a4:b8:5c:cc:df:cd:7c:1c:39:80:f6:<br />
65:b1:85:01:5e:a4:4e:6b:59:9c:db:34:9b:d7:b7:56:64:70:<br />
23:8a:93:6e:06:5a:01:54:26:95:9d:26:45:f8:96:56:c3:e2:<br />
9f:6d:a0:a6:42:4b:41:94:19:75:d8:d7:e5:fc:64:43:0e:8c:<br />
1c:f0:28:85:f6:2a:f7:f1:23:14:64:1b:28:ad:9c:ae:29:e4:<br />
ee:3a:79:6e:83:df:e1:b6:8c:e9:d5:5b:1b:14:22:b0:cf:5b:<br />
ee:39:26:f9:03:30:5b:e6:8e:47:59:de:79:af:a8:1e:fc:6b:<br />
75:e1:43:fc:5f:1e:50:32:8b:e6:e3:8d:dd:82:0a:5c:99:56:<br />
72:bd:d5:1d:27:00:bb:54:b9:1e:62:9c:66:cc:8a:c3:cc:ae:<br />
bb:19:e7:43:fa:cd:3c:62:58:c8:db:ba:8f:76:92:a4:fb:38:<br />
c3:4e:48:c9:b2:2d:1b:e2:cd:9e:59:3d:12:04:20:6d:cf:57:<br />
f7:0d:b6:59:0a:02:ac:a4<br />
[ircadmin@jmr cert]$<br />
</code></p>
<p><strong>Configurnado nuestro unrealirc:</strong><br />
En el archivo de configuracion del irc agregamos la siguiente linea para que busque los certificados.<br />
<code><br />
set {<br />
ssl {<br />
certificate server.crt;<br />
key server.key;<br />
trusted-ca-file server.crt;<br />
};<br />
};<br />
</code></p>
<p>Ahora vamos a parar e iniciar nuevamente nuestro servicio irc y vamos a tener que poner la clave de nuestro certificado.<br />
<code><br />
[ircadmin@jmr conf]$ ./unreal stop<br />
Stopping UnrealIRCd<br />
[ircadmin@jmr conf]$ ./unreal start<br />
Starting UnrealIRCd<br />
_   _                      _ ___________  _____     _<br />
| | | |                    | |_   _| ___ \/  __ \   | |<br />
| | | |_ __  _ __ ___  __ _| | | | | |_/ /| /  \/ __| |<br />
| | | | '_ \| '__/ _ \/ _` | | | | |    / | |    / _` |<br />
| |_| | | | | | |  __/ (_| | |_| |_| |\ \ | \__/\ (_| |<br />
\___/|_| |_|_|  \___|\__,_|_|\___/\_| \_| \____/\__,_|<br />
v3.2.8.1<br />
using TRE 0.7.5 (LGPL)<br />
using OpenSSL 0.9.8e-fips-rhel5 01 Jul 2008<br />
using zlib 1.2.3</code></p>
<p><code> </code></p>
<p><code>* Loading IRCd configuration ..<br />
* Configuration loaded without any problems ..<br />
* Loading tunefile..<br />
* Initializing SSL.<br />
Password for SSL private key:<br />
* Dynamic configuration initialized .. booting IRCd.<br />
---------------------------------------------------------------------<br />
[ircadmin@jmr conf]$<br />
</code></p>
<p>Una vez que esta todo completado vamos a configurar nuestro cliente pidgin para que se conecte al servidor irc en el puerto 6697.<br />
<strong>Veamos las siguientes fotos.</strong></p>
<p>Vamos a ver que pasa cuando nos conectamos, dado que nos va a pedir que aceptemos el certificado como si se tratara de una pagina web con https.<br />
<a href="http://www.itrestauracion.com.ar/go.php?http://www.itrestauracion.com.ar/wp-content/uploads/2012/02/Selección_115.png" title="(No click)"><img class="aligncenter size-full wp-image-1414" title="Selección_115" src="http://www.itrestauracion.com.ar/wp-content/uploads/2012/02/Selección_115.png" alt="" width="514" height="283" /></a></p>
<p>Si quisieramos ver el certficado.</p>
<p><a href="http://www.itrestauracion.com.ar/go.php?http://www.itrestauracion.com.ar/wp-content/uploads/2012/02/Selección_117.png" title="(No click)"><img class="aligncenter size-full wp-image-1416" title="Selección_117" src="http://www.itrestauracion.com.ar/wp-content/uploads/2012/02/Selección_117.png" alt="" width="457" height="316" /></a></p>
<p>A continuacion vamos a ver como se genera la conexion una vez que aceptamos el certificado.</p>
<p><a href="http://www.itrestauracion.com.ar/go.php?http://www.itrestauracion.com.ar/wp-content/uploads/2012/02/Selección_118.png" title="(No click)"><img class="aligncenter size-full wp-image-1417" title="Selección_118" src="http://www.itrestauracion.com.ar/wp-content/uploads/2012/02/Selección_118.png" alt="" width="908" height="475" /></a></p>
<p>Bibliografia:</p>
<p>http://www.madboa.com/geek/openssl/</p>
<p>http://webdesign.about.com/od/ssl/ht/new_selfsigned.htm</p>
<p>http://forums.gentoo.org/viewtopic-p-3376064.html</p>
<p>http://forums.unrealircd.com/viewtopic.php?f=3&#038;t=7352</p>
<p>http://www.unrealircd.com/files/docs/unreal32docs.es.html</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.itrestauracion.com.ar%2F%3Fp%3D1406&amp;title=Creacion%20de%20un%20certificado%20firmado%20por%20uno%20mismo." id="wpa2a_6"><img src="http://www.itrestauracion.com.ar/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.itrestauracion.com.ar/?feed=rss2&#038;p=1406</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
	</item>
		<item>
		<title>Preparando LPIC-1 103.7 Buscar en archivos de texto usando expresiones regulares</title>
		<link>http://www.itrestauracion.com.ar/?p=1181</link>
		<comments>http://www.itrestauracion.com.ar/?p=1181#comments</comments>
		<pubDate>Thu, 04 Aug 2011 08:06:45 +0000</pubDate>
		<dc:creator>restauracion</dc:creator>
				<category><![CDATA[Lpi]]></category>
		<category><![CDATA[Operador]]></category>

		<guid isPermaLink="false">http://www.itrestauracion.com.ar/?p=1181</guid>
		<description><![CDATA[1- Introduccion 2- Regular expression position anchors 3- Regular expression character sets 4- Regular expression Quantity modifiers 5- Usando Sed 6- Usando Sed &#8211; Substitution flags 7- Usando Grep Introduccion Aca vamos a poder ver algunos ejemplos de este topico. &#8230; <a href="http://www.itrestauracion.com.ar/?p=1181">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="#0.1_0">1- Introduccion</a><br />
<a href="#0.2_0">2- Regular expression position anchors</a><br />
<a href="#0.3_0">3- Regular expression character sets</a><br />
<a href="#0.4_0">4- Regular expression Quantity modifiers</a><br />
<a href="#0.5_0">5- Usando Sed</a><br />
<a href="#0.5_1">6- Usando Sed  &#8211; Substitution flags</a><br />
<a href="#0.6_0">7- Usando Grep</a></p>
<h2><a name="0.1_0"></a><strong>Introduccion</strong></h2>
<p>Aca vamos a poder ver algunos ejemplos de este topico.<br />
En las expresiones regulares vamos a utilizar string de texto o patrones por lo cuales estos ultimos vamos a usar dos tipos de carateres ( texto plano o metacaracteres).</p>
<p>Vamos a ver como manejar todo esto con ejemplos.</p>
<p>\ es un caracter de escape lo que venga despues de el no se intepreta.</p>
<h2><a name="0.2_0"></a><strong>Regular expression position anchor</strong></h2>
<p><strong>Regular expression position anchors</strong><br />
^ , $ , \&lt;\&gt;</p>
<p>Ahi tenemos esos tres casos.</p>
<p>Antes vamos a crear un archivo:</p>
<pre>[root@localhost ~]# cat test
Villa Dalmine
Restaurador de Leyes

JMR
Argentina
[root@localhost ~]#
</pre>
<p>Anchors are used to describe position information. Table 6-8, shown earlier, lists anchor<br />
characters.</p>
<p>Ejemplo:</p>
<pre>[root@localhost ~]# grep '^Villa' test
Villa Dalmine
[root@localhost ~]#
</pre>
<p>Como vemos este ^ signo me sirve para poder filtrar aquellos renglones que comienzan con una letra o palabra en especial o patro&#8230;</p>
<p>Ahora vamos a ver un ejemplo con $</p>
<pre>[root@localhost ~]# grep 'Dalmine$' test
Villa Dalmine
[root@localhost ~]#
</pre>
<p>Aca vimos que con el signo $ vamos a poder un patro que indique un final de un renglon.</p>
<p>Ejemplo:</p>
<p>Ahora vamos a usar en conjuncion ^$:</p>
<pre>[root@localhost ~]# grep '^$' test 

[root@localhost ~]#
[root@localhost ~]# grep -c '^$' test
1
[root@localhost ~]#
</pre>
<p>En este ejemplo lo que paso fue que le dijimos que busque aquellos renglos que son nulos que en el texto tengo un enter.</p>
<p>Ejemplo:</p>
<pre>[root@localhost ~]# grep '^Argentina$' test
Argentina
[root@localhost ~]#
</pre>
<p>Aca en este ejemplo lo que hicimos fue buscar si algun renglon contiene unicamente esa palabra.</p>
<p>Ahora el ultimo ejemplo para este grupo.</p>
<pre>[root@localhost ~]# grep '\&lt;[aA]rgentina\&gt;' test
Argentina
argentina
[root@localhost ~]#
[root@localhost ~]# grep '\&lt;[:alpha:]rgentina\&gt;' test
argentina
[root@localhost ~]#
</pre>
<p>Aca como vemos esta opcion &lt; &gt; en conjunto con [] voy a buscar alguna palabra que sea Argentina o Argentina.</p>
<p><strong><br />
Regular expression POSIX character classes</strong><br />
Character class Description<br />
[:alnum:] Alphanumeric [a-zA-Z0-9]<br />
[:alpha:] Alphabetic [a-zA-Z]<br />
[:blank:] Spaces or Tabs<br />
[:cntrl:] Control characters<br />
[:digit:] Numeric digits [0-9]<br />
[:graph:] Any visible characters<br />
[:lower:] Lowercase [a-z]<br />
[:print:] Noncontrol characters<br />
[:punct:] Punctuation characters<br />
[:space:] Whitespace<br />
[:upper:] Uppercase [A-Z]<br />
[:xdigit:] Hex digits [0-9a-fA-F]</p>
<p>Otro Grupo:</p>
<h2><a name="0.3_0"></a><strong>Regular expression character sets</strong></h2>
<p><strong>Regular expression character sets</strong><br />
[abc][a-z]<br />
[^abc][^a-z]<br />
.</p>
<p><strong>Ejemplos:</strong><br />
Los caracteres pueden ser situados en grupos y rangos para realizar expresiones regulares mas efecientes.</p>
<p>Ver este archivo:<br />
[root@localhost ~]# cat test<br />
Villa Dalmine<br />
Restaurador de Leyes de Argentina</p>
<p>JMR<br />
Argentina<br />
argentina<br />
124Argentina<br />
12JMR<br />
12345JMR<br />
[root@localhost ~]#</p>
<p><strong>Ejemplo:</strong></p>
<pre>[root@localhost ~]# grep '[Aa]rgentina' test
Restaurador de Leyes de Argentina
Argentina
argentina
124Argentina
[root@localhost ~]#
</pre>
<p>Aca como vimos nos devolvio todas las palabras que son contenidas cumpliendo con Argentina o Argentina o 123Argentina y asi..</p>
<p>Otro:</p>
<p>[root@localhost ~]# grep &#8216;[0-9][0-9][0-9]&#8216; test<br />
124Argentina<br />
12345JMR<br />
[root@localhost</p>
<p>Aca estamos buscando aquellos parametros que empiezan por lo menos con tres numeros.<br />
Otro:</p>
<p>[root@localhost ~]# grep &#8216;^[^0-9]&#8216; test<br />
Villa Dalmine<br />
Restaurador de Leyes de Argentina<br />
JMR<br />
Argentina<br />
argentina<br />
[root@localhost ~]#<br />
Aca nos va a devolver aquellos parametros que que empiezan con cualquiera cosa que no sea un numero.</p>
<h2><a name="0.4_0"></a><strong>Regular expression Quantity modifiers</strong></h2>
<p>BRE:<br />
*,\?,\+,\{n,m},\|,\(regex\)<br />
ERE<br />
*,?,+,{n,m},|,\regex)</p>
<p>&nbsp;</p>
<p>Vamos  a ver algunos ejemplos en donde mezclaremos el uso de character set con la cantidad de veces que necesitemos utilizar esa busqueda.</p>
<pre>
[rino@oc7287280510 ~]$ cat file1
ab
abc
abcc
abccc
asaabsde
ffda4
[rino@oc7287280510 ~]$

[rino@oc7287280510 ~]$ grep abc* file1
ab
abc
abcc
abccc
asaabsde
[rino@oc7287280510 ~]$
</pre>
<p>Como ven nos trajo todo lo que contiene ab,abc,abcc y asi..</p>
<pre>
[rino@oc7287280510 ~]$ grep abcc* file1
abc
abcc
abccc
[rino@oc7287280510 ~]$
</pre>
<p>Aca nos trajo todo lo que contiene abc,abcc,abccc y asi ..</p>
<p>Otro ejemplo:<br />
<rpe><br />
[rino@oc7287280510 ~]$ cat file1<br />
123456<br />
abc12asf1245<br />
a1gb1sd2<br />
12456<br />
[rino@oc7287280510 ~]$</p>
<p>[rino@oc7287280510 ~]$ grep &#8216;[0-9][0-9][0-9]*&#8217; file1<br />
123456<br />
abc12asf1245<br />
12456<br />
[rino@oc7287280510 ~]$
</pre>
<p>Todo lo que contenga al menos dos numeros.</p>
<p>Tambien asi es lo mismo.</p>
<pre>
[rino@oc7287280510 ~]$ grep '[0-9]\{2,\}' file1
123456
abc12asf1245
12456
[rino@oc7287280510 ~]$
</pre>
<p>el \{2,\} lo que hace es repetir dos veces lo que dice antes.</p>
<p>Otro Ejemplo:</p>
<pre>
[rino@oc7287280510 ~]$ cat file1
file1
file2
fil1
[rino@oc7287280510 ~]$

[rino@oc7287280510 ~]$ grep 'file[12]\?' file1
file1
file2
[rino@oc7287280510 ~]$
</pre>
<p>Aca como ven me devuelve file1 y file2 porque con ? puede encontrar cero ocurriencias.</p>
<p>Otro Ejemplo:</p>
<pre>
[rino@oc7287280510 ~]$ cat file1
Hola1
Como estas
es $1
[rino@oc7287280510 ~]$

[rino@oc7287280510 ~]$ grep '[0-9]\+' file1
Hola1
es $1
[rino@oc7287280510 ~]$
</pre>
<p>Todas aquellas lineas que contienen el numero 1.</p>
<p>Otro Ejemplo:</p>
<pre>
[rino@oc7287280510 ~]$ cat file1
1
11
111
1111
11111
1010110
[rino@oc7287280510 ~]$

[rino@oc7287280510 ~]$ grep '^1\{3,5\}$' file1
111
1111
11111
[rino@oc7287280510 ~]$
</pre>
<p>Todas aquellas lineas que empiezan con 1 y el rango es de 111 a 11111.</p>
<p>Otro Ejemplo:</p>
<p>&nbsp;</p>
<pre>
[rino@oc7287280510 ~]$ cat file1
12
1
1234
12345
124
[rino@oc7287280510 ~]$

[rino@oc7287280510 ~]$ grep '\&lt;[0-9]\{2,5\}\&gt;' file1
12
1234
12345
124
[rino@oc7287280510 ~]$
</pre>
<p>Al menos contienen desde dos digitos hasta cinco.</p>
<p>Otro ejemplo:</p>
<pre>
[rino@oc7287280510 ~]$ cat file1
El Mundo Linux y sus consecuencias.
El mundo linux y Sus Consecuencias.
EL MUNDO LINUX Y SUS CONSECUENCIAS.
[rino@oc7287280510 ~]$

[rino@oc7287280510 ~]$ grep -E '[Ll]inux|[sS]us' file1
El Mundo Linux y sus consecuencias.
El mundo linux y Sus Consecuencias.
[rino@oc7287280510 ~]$
</pre>
<p>Aca estamos usando la version extendida del grep.</p>
<p>&nbsp;</p>
<h2><a name="0.5_0"></a><strong>Usando Sed</strong></h2>
<p>Tenemos este archivo.</p>
<pre>Toda la gente de Argentina es de Dalmine y Deportivo Merlo.
Toda la gente de Argentina es de Dalmine y Deportivo Merlo.
Toda la gente de Argentina es de Dalmine y Deportivo Merlo.
Toda la gente de Argentina es de Dalmine y Deportivo Merlo.
</pre>
<p>Patron para el sed.</p>
<p><strong>s/pattern/replacement/flags</strong></p>
<h2><a name="0.5_1"></a><strong>Usando Sed  - Substitution flags</strong></h2>
<p>Cuatro flags para sustitucion:<br />
A --&gt; un numero que me indica en donde va a buscar la ocurrencia y cambiarla.<br />
g --&gt; Indica que todas las ocurrencias deben ser cambiadas del texto<br />
p --&gt; Indica que el contenido original de la linea debe ser mostrada.<br />
w file --&gt; Escribe el resultado de la substitucion en un archivo.</p>
<p>Aca le vamos a decir que solo lo cambie en la segunda linea.</p>
<pre>[rino@oc7287280510 scripts]$ sed '2 s/Dalmine/River/' sed
Toda la gente de Argentina es de Dalmine y Deportivo Merlo.
Toda la gente de Argentina es de River y Deportivo Merlo.
Toda la gente de Argentina es de Dalmine y Deportivo Merlo.
Toda la gente de Argentina es de Dalmine y Deportivo Merlo.
[rino@oc7287280510 scripts]$
</pre>
<p>Aca vamos a mostrar como cambiarlo de forma global</p>
<pre>[rino@oc7287280510 scripts]$ sed 's/Dalmine/River/g' sed
Toda la gente de Argentina es de River y Deportivo Merlo.
Toda la gente de Argentina es de River y Deportivo Merlo.
Toda la gente de Argentina es de River y Deportivo Merlo.
Toda la gente de Argentina es de River y Deportivo Merlo.
[rino@oc7287280510 scripts]$
</pre>
<p>Le agregamos hola al final del archivo.<br />
[rino@oc7287280510 scripts]$ echo "hola" &gt;&gt; sed</p>
<pre>[rino@oc7287280510 scripts]$ sed -n 's/Hola/Chau/p' sed
Chau
[rino@oc7287280510 scripts]$
</pre>
<p>Ahora vamos a guardar la salida de lo que cambia en un archivo nuevo.</p>
<pre>[rino@oc7287280510 scripts]$ sed  's/Hola/Chau/w sed2' sed
Toda la gente de Argentina es de Dalmine y Deportivo Merlo.
Toda la gente de Argentina es de Dalmine y Deportivo Merlo.
Toda la gente de Argentina es de Dalmine y Deportivo Merlo.
Toda la gente de Argentina es de Dalmine y Deportivo Merlo.
Chau
[rino@oc7287280510 scripts]$ cat sed2
Chau
[rino@oc7287280510 scripts]$
</pre>
<p>Para ver mas en profunidad --> <a href="/?p=179">Usando Sed</a></p>
<h2><a name="0.6_0"></a><strong>Usando Grep</strong></h2>
<p>Ver el siguinte Link --&gt; <a href="/?p=192">Usando Grep</a></p>
<p>Referencia --> LInks:<br />
[1] http://www.gentoo.org/doc/es/articles/l-sed2.xml<br />
[2] http://enavas.blogspot.com/2008/03/el-shell-de-linux-comando-sed.html</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.itrestauracion.com.ar%2F%3Fp%3D1181&amp;title=Preparando%20LPIC-1%20103.7%20Buscar%20en%20archivos%20de%20texto%20usando%20expresiones%20regulares" id="wpa2a_8"><img src="http://www.itrestauracion.com.ar/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.itrestauracion.com.ar/?feed=rss2&#038;p=1181</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
	</item>
		<item>
		<title>Preparando LPIC-1 110.3 Asegurando datos mediante cifrado</title>
		<link>http://www.itrestauracion.com.ar/?p=1321</link>
		<comments>http://www.itrestauracion.com.ar/?p=1321#comments</comments>
		<pubDate>Tue, 15 Feb 2011 22:47:03 +0000</pubDate>
		<dc:creator>restauracion</dc:creator>
				<category><![CDATA[Lpi]]></category>
		<category><![CDATA[Redes]]></category>

		<guid isPermaLink="false">http://www.itrestauracion.com.ar/?p=1321</guid>
		<description><![CDATA[Aqui veremos lo mas importante de este topico. 1- Introduccion 2- Utilizando Secure Shell (SSH) 2-1 Comandos 2-2 Instalacion 2-3 Archivos de Configuracion 2-4 Primeras Conexiones 2-5 Teoria Llaves asimetricas 2-6 Creando Llaves asimetricas 2-7 Creando Tuneles 3-0 Teoria GPG &#8230; <a href="http://www.itrestauracion.com.ar/?p=1321">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Aqui veremos lo mas importante de este topico.</p>
<p><a href="#0.1_0">1- Introduccion</a><br />
<a href="#0.2_0">2- Utilizando Secure Shell (SSH)</a><br />
<a href="#0.2_1">2-1 Comandos</a><br />
<a href="#0.2_2">2-2 Instalacion</a><br />
<a href="#0.2_3">2-3 Archivos de Configuracion</a><br />
<a href="#0.2_4">2-4 Primeras Conexiones</a><br />
<a href="#0.2_5">2-5 Teoria Llaves asimetricas</a><br />
<a href="#0.2_6">2-6 Creando Llaves asimetricas</a><br />
<a href="#0.2_7">2-7 Creando Tuneles</a><br />
<a href="#0.3_0">3-0 Teoria GPG</a><br />
<a href="#0.3_1">3-1 Uso GPG</a><br />
<a href="#0.3_2">3-2 Uso de  GPG con Gmail</a></p>
<h2><a name="0.1_0"></a><strong>Introduccion</strong></h2>
<p>Vamos a ver un poco como funciona el servicio OpenSSh que viene de los desarroladores de  OpenBSD.<br />
Este servicio utiliza lo que se llama cifrado asimetrico (llave publica y privada) con diferentes algoritmos(RSA, DSA,etc) que van a realizar la encriptacion.[2]</p>
<h2><a name="0.2_0"></a>Utilizando Secure Shell (SSH)</h2>
<p>SSH, tambien conocido como Shell segura es un reemplazo de telnet y otros comandos (rsh,rlogin,rcp ).<br />
Principalmente se usa ssh para poder establecer conexiones remotas encriptadas. Sin embargo se utiliza tambien para copiar archivos,<br />
crear tuneles con diferentes procotolos y puertos.<br />
SSH es un modelo cliente/servidor en donde el demonio sshd es el servidor y ssh y scp son los comandos clientes.<br />
Los clientes se conectan al servidor (sshd) , se establece una sesion encriptada que para eso necesitamos una autentificacion entre ambas partes (intercambio de llaves) y luego nos da el prompt de login.</p>
<h2><a name="0.2_0"></a><strong>Comandos</strong></h2>
<p>El comando ssh puede ser usado para conectarme remotamente a otros equipos o para conectarme localmente a mi equipo.Podriamos decir que es un uso similar al de rlogin,rsh,telnet.<br />
El comando scp nos va a servir para poder copiar archivos y directorios desde o hacia un servidor remoto, funcionando este como el rcp.<br />
Tambien se puede hacer forwarding con ssh (autentificacion con X y forwarding). Tambien se puede arrancar una X cliente desde una maquina remota y el protocolo X Window System sera encriptado para que sus paquetes viajen por la red.[3]</p>
<h2><a name="0.2_2"></a><strong>Instalacion</strong></h2>
<p>Aca vamos a consultar si ya lo tenemos instalado.</p>
<pre>root@debian:~# dpkg -l |grep -i openssh
ii  openssh-blacklist                  0.4.1                       list of default blacklisted OpenSSH RSA and DSA keys
ii  openssh-client                     1:5.5p1-6                   secure shell (SSH) client, for secure access to remote machines
ii  openssh-server                     1:5.5p1-6                   secure shell (SSH) server, for secure access from remote machines
root@debian:~#</pre>
<p>Como ven tenemos instalado todo ya, si lo quisieramos instalar basta con hacer aptitude install NombrePaquete.<br />
No se olviden que para poder hacer que se conecten al equipo necesitan el openssh-server.<br />
Luego de instalar el openssh-server les va a generar las claves.</p>
<h2><a name="0.2_3"></a><strong>Archivos de Configuracion</strong></h2>
<p>Vamos a ver donde se situan los archivos de configuracion del cliente y del servidor.</p>
<pre>Aca tenemos el directorio en gral.
root@debian:~# ls -ld /etc/ssh/
drwxr-xr-x 2 root root 4096 Feb  8 23:59 /etc/ssh/
root@debian:~#</pre>
<p>Aca tenemos todos los archivos que contiene:</p>
<pre>root@debian:~# ls -l /etc/ssh/
total 152
-rw-r--r-- 1 root root 125749 Dec 26 13:12 moduli
-rw-r--r-- 1 root root   1669 Dec 26 13:12 ssh_config
-rw-r--r-- 1 root root   2453 Feb  8 23:59 sshd_config
-rw------- 1 root root    668 Feb  8 23:59 ssh_host_dsa_key
-rw-r--r-- 1 root root    601 Feb  8 23:59 ssh_host_dsa_key.pub
-rw------- 1 root root   1675 Feb  8 23:59 ssh_host_rsa_key
-rw-r--r-- 1 root root    393 Feb  8 23:59 ssh_host_rsa_key.pub
root@debian:~#</pre>
<p>Como ven tienen las llaves que genero con el algoritmo dsa y rsa tanto publicas ocmo privadas.</p>
<pre>root@debian:/etc/ssh# file ssh_host_rsa_key
ssh_host_rsa_key: PEM RSA private key
root@debian:/etc/ssh# file ssh_host_rsa_key.pub
ssh_host_rsa_key.pub: ASCII text, with very long lines
root@debian:/etc/ssh#</pre>
<p>Luego el archivo de configuracion del cliente es el siguiente :</p>
<pre>root@debian:/etc/ssh# ls -l ssh_config
-rw-r--r-- 1 root root 1669 Dec 26 13:12 ssh_config
root@debian:/etc/ssh#</pre>
<p>Un archivo tipico ..</p>
<pre>root@debian:~# cat /etc/ssh/ssh_config  |grep -v "#"

Host *
    SendEnv LANG LC_*
    HashKnownHosts yes
    GSSAPIAuthentication yes
    GSSAPIDelegateCredentials no
root@debian:~#</pre>
<p>El archivo de configuracion del servidor es el siguiente:</p>
<pre>root@debian:/etc/ssh# ls -l sshd_config
-rw-r--r-- 1 root root 2453 Feb  8 23:59 sshd_config
root@debian:/etc/ssh#</pre>
<p>Un archivo tipico :</p>
<pre>root@debian:~# cat /etc/ssh/sshd_config  |grep -v "#"

Port 22
Protocol 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
UsePrivilegeSeparation yes

KeyRegenerationInterval 3600
ServerKeyBits 768

SyslogFacility AUTH
LogLevel INFO

LoginGraceTime 120
PermitRootLogin yes
StrictModes yes

RSAAuthentication yes
PubkeyAuthentication yes

IgnoreRhosts yes
RhostsRSAAuthentication no
HostbasedAuthentication no

PermitEmptyPasswords no

ChallengeResponseAuthentication no

X11Forwarding yes
X11DisplayOffset 10
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes

AcceptEnv LANG LC_*

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

UsePAM yes
root@debian:~#</pre>
<p>Aca en este archivo vamos a mencionar alguna de las cosas mas importantes como por ejemplo.<br />
<strong>Port</strong> para especificar el puerto<br />
<strong>Protocol</strong> la version del ssh<br />
<strong>PermitRootLogin</strong> para permitir que se loguen como root.<br />
<strong>PubkeyAuthentication</strong> Permite autentificacion de llaves publicas.<br />
# For this to work you will also need host keys in /etc/ssh_known_hosts<br />
# (for protocol version 2)<br />
<strong>HostbasedAuthentication </strong> para que los usuarios puedan utilizar las llaves guardas bien conocidas o no.<br />
# To disable tunneled clear text passwords, change to no here!<br />
<strong>PasswordAuthentication</strong> Creo que el comentario de arriba lo dice todo.<br />
<strong>X11Forwarding</strong> Para poder realizar forwardeo de grafica.</p>
<h2><a name="0.2_4"></a><strong>Primeras Conexiones</strong></h2>
<p>Cuando nos conectemos por primera vez a un equipo remoto va a pasar lo siguiente.</p>
<p>Equipo Remoto : 192.168.100.136</p>
<pre>[rino@oc7287280510 ~]$ uname -a
Linux oc7287280510.ibm.com 2.6.35.10-74.fc14.x86_64 #1 SMP Thu Dec 23 16:04:50 UTC 2010 x86_64 x86_64 x86_64 GNU/Linux
[rino@oc7287280510 ~]$
[rino@oc7287280510 ~]$ ssh -l root 192.168.100.136
The authenticity of host '192.168.100.136 (192.168.100.136)' can't be established.
RSA key fingerprint is 7f:91:5b:59:fb:3e:2d:9a:74:5f:41:7d:4a:36:98:9b.
Are you sure you want to continue connecting (yes/no)? 

<em>Como ven ahi se va a realizar el intercambio de llaves.. Ponemos yes.</em>

Warning: Permanently added '192.168.100.136' (RSA) to the list of known hosts.
root@192.168.100.136's password:
<em>Y como vemos ya tenemos para poner la password</em>
Linux debian 2.6.32-5-686 #1 SMP Wed Jan 12 04:01:41 UTC 2011 i686

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Mon Feb 14 15:54:53 2011 from 192.168.100.1
root@debian:~#
root@debian:~# uname -a
Linux debian 2.6.32-5-686 #1 SMP Wed Jan 12 04:01:41 UTC 2011 i686 GNU/Linux
root@debian:~#
<em>Ahora como ven estamos logueado en el equipo remoto</em>.</pre>
<p>Ahora volvamos al equipo local.</p>
<pre>[rino@oc7287280510 ~]$ pwd &amp;&amp; ls -ld .ssh
/home/rino
drwx------. 2 rino rino 4096 Feb 14 18:51 .ssh
[rino@oc7287280510 ~]$</pre>
<p>Como ven se creo un directorio que se llama .ssh en el home directory del usuario el cual contiene estos archivos.</p>
<pre>[rino@oc7287280510 ~]$ pwd &amp;&amp; ls -l .ssh
/home/rino
total 104
-rw-------. 1 rino rino  1002 Aug 25 21:58 authorized_keys
-rw-rw-r--. 1 rino rino    62 Jul 22  2010 config.ssh
-rw-------. 1 rino rino   672 May  2  2010 id_dsa
-rw-r--r--. 1 rino rino   607 May  2  2010 id_dsa.pub
-rw-r--r--  1 rino rino 77941 Feb 14 18:52 known_hosts
-rw-------. 1 rino rino  1743 Jul 22  2010 rino
-rw-r--r--. 1 rino rino   399 Jul 22  2010 rino.pub
[rino@oc7287280510 ~]$</pre>
<p>El archivo que nos creo fue el known_hosts que es el que contiene todas las llaves publicas de los servidores remotos que me quiero conectar.<br />
Los demas archivos que figuran son porque en mi caso tengo mis llaves (publicas y privadas) que genere yo para poder conectarme a los equipos remotos sin necesidad de poner ninguna clave.. Eso lo vamos a ver mas adelante.</p>
<p>Si se fijan pueden buscar en el archivo mencionado anteriormente si esta la llave.</p>
<pre>[rino@oc7287280510 .ssh]$ cat known_hosts |grep -i "192.168.100.136"
192.168.100.136 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCvwJeIutxTZiydnLX+mOGenaYj5g2AKTpztQGFV4pSZxJLe9G0gsnrqZb2Amfe7ibaKqRMCy8OAPJfXJGmOyRVOHvqHnxeDifdXI9u81+qkBQRmuqV+6niqx1BxjWov7LnsiVmEnQDj3rlVe8t3WW5tOujdBTster29ECH0XfaiJdbzEF4xq0wdm0CknGwGha5DkkdWmoXlQh4fXrxsjHyIYSe5MpsIiaFsxp29M7ecxIaGcXct6twS0rABBD/pKrvrg6GMx2CUHaJC3AuoHajlxo7PoaHCv/c1pWZMlKNP4uSon+RH7ficNZ1MXiHsudm6O5gOEZFtTTdLzytxcPj
[rino@oc7287280510 .ssh]$</pre>
<p>Si la borran (eso de arriba es toda una linea) , la proxima vez que se conectan a ese equipo le va a pedir devuelta que confirmen el intercambio de llaves.<br />
Para conectarnos a un servidor remoto la sintaxis basica es asi.</p>
<pre>ssh -l usuario ip/fqdn
ssh usuario@fqdn
Ejemplo:
ssh -l pepe 192.168.1.1
ssh -l pepe@mipc.com</pre>
<h2><a name="0.2_5"></a><strong>Teoria llaves asimetricas</strong></h2>
<p>Una breve introduccion:</p>
<p>Breve introducción a la criptografía<br />
En general, se pueden utilizar dos métodos de cifrado: simétrica y asimétrica.<br />
El cifrado Simétrico es más rápido pero menos seguro, y el cifrado asimétrico es más lento pero más seguro.<br />
En un medio ambiente con clave simétrica, ambas partes utilizan la misma clave para cifrar y descifrar mensajes.<br />
Con las claves asimétricas, una clave pública y una clave privada se utilizan, y esta es la técnica importante que  es utilizada para SSH.<br />
Si las claves asimétricas son utilizadas, cada usuario tiene su propia   clave pública / clave privada, y  cada equipo necesita un par de ellas. De estas claves, la clave privada debe ser protegida  en todo momento: si la clave privada se ve comprometida, la identidad del propietario de la clave privada se pone en peligro.<br />
En resumen, el robo de usuarios de la clave privada es como el robo de identidad de un usuarios. Por lo tanto, una clave privada se almacena normalmente en un lugar muy seguro donde nadie más que su propietario puede acceder a él, por regla general se graba ~./ssh. La clave pública, por el contrario, está disponible a todo el mundo.<br />
La clave Pública / Privada se utiliza generalmente para tres propósitos: encriptación, autenticación y no rechazo.<br />
Para enviar un mensaje cifrado, el remitente cifra el mensaje con la clave pública del receptor que puede descifrar con la clave privada correspondiente. Este escenario requiere que, antes de el envío de un mensaje cifrado, usted tenga la clave pública de la persona que desea enviar el mensaje.<br />
Las otras opciones son para utilizar las claves públicas y privadas para la autenticación o para probar que un mensaje no ha cambiado desde su creación. Este método se conoce como el no repudio. En el ejemplo de la autenticación, la clave privada se utiliza para generar una señal  de token codificada. Si este token se puede descifrar con la clave pública de la persona que quiere autentificarse, esto demuestra que realmente está tratando con la persona adecuada, y el acceso puede ser concedido.<br />
Sin embargo, esta técnica requiere  que la clave pública sea  copiada al host antes de que la  autentificacion ocurra.</p>
<p><strong>Utilizando modelo llave Publica/Privada en un ambiente con SSH.</strong></p>
<p>Cuando la autenticación basada en claves se utiliza SSH , debe asegurarse de que, para todos los usuarios que necesitan utilizar esta tecnología, la clave pública está disponible en los equipos  que se quieran acceder . Al entrar, el usuario crea una solicitud de autenticación en donde se utiliza la firma de la clave privada del usuario . Esta solicitud de autenticación se corresponde con la clave pública del mismo usuario en el equipo en el que el usuario desea ser autenticado. Si coincide, el usuario tiene permiso de acceso; Si no es así, el acceso de usuario se le niega.<br />
La clave Pública / privada de autenticación  está habilitada por defecto en todas las principales distribuciones de Linux.<br />
Los pasos siguientes proporcionan un resumen de lo que sucede cuando un usuario intenta establecer una sesión SSH con un host:</p>
<p><strong>1.</strong> Si la autenticación de clave pública está habilitada (por defecto), SSH comprueba el directorio en el directorio home del usuario para comprobar si una clave privada está presente.<br />
<strong>2</strong>. Si una clave privada se encuentra, SSH crea un paquete con algunos datos en ella (token), cifra  el paquete con la clave privada, y lo envía al host. La clave pública se envía también con este paquete.<br />
<strong>3.</strong> El anfitrión ahora comprueba si un archivo con el nombre authorized_key en el home directory del usuario. Si no es así, el usuario no puede ser autenticado con sus llaves.<br />
Si el archivo no existe y la clave pública es una clave permitida (y también es idéntica a la clave que ha sido seleccionada en el host), el host utiliza esta clave para comprobar la firma.<br />
<strong> 4</strong>. Si la firma se verifica, el usuario tiene acceso. Si la firma no puede ser verificada, el anfitrión le pide al usuario una contraseña en su lugar.</p>
<p>Todo esto suena bastante complicado, pero no lo es realmente. Todo sucede de forma transparente, si ha sido correctamente configurado. Además, lesto representa apenas un retraso significativo al establecer una conexión. Normalmente se requieren no más de un segundo.</p>
<h2><a name="0.2_5"></a><strong>Creacion llaves asimetricas</strong></h2>
<p>Vamos a realizar los pasos para crear nuestro juego de llaves y lograr que no tengamos que poner ninguna clave al conectarnos en un equipo remoto.[6]</p>
<p>Tenemos nuestro equipo ServidorA que va a ser nuestro equipo de trabajo</p>
<pre>[rino@servidorA .ssh]$ hostname
servidorA
[rino@servidorA .ssh]$</pre>
<p>Tenemos nuestro equipo ServidorB que va a ser el equipo donde nos vamos a conectar remotamente.</p>
<pre>root@servidorB:~# hostname
servidorB
root@servidorB:~#</pre>
<p><strong>Paso 1 &#8211;&gt; Crear llave publica y privada usando el comando ssh-key-gen en el servidor local</strong></p>
<pre>[test@servidorA ~]$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/test/.ssh/id_rsa):
Created directory '/home/test/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/test/.ssh/id_rsa.
Your public key has been saved in /home/test/.ssh/id_rsa.pub.
The key fingerprint is:
9d:45:29:e0:78:47:c3:85:0b:9e:ef:b2:59:26:aa:82 test@servidorA
The key's randomart image is:
+--[ RSA 2048]----+
|        .oooo.   |
|       o..+o.    |
|      ..oo.o.    |
|       .oo.o     |
|        S.o      |
|          .      |
| .      ..o      |
|E .    ..=.      |
|   .... oo       |
+-----------------+
[test@servidorA ~]$</pre>
<p><strong>Paso 2 &#8211;&gt; Copiar la llave publica en el servidor remoto utilizando ssh-copy-id</strong></p>
<pre>[test@servidorA ~]$ ssh-copy-id -i .ssh/id_rsa.pub rino@192.168.100.136
The authenticity of host '192.168.100.136 (192.168.100.136)' can't be established.
RSA key fingerprint is 7f:91:5b:59:fb:3e:2d:9a:74:5f:41:7d:4a:36:98:9b.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.100.136' (RSA) to the list of known hosts.
rino@192.168.100.136's password:
[test@servidorA ~]$</pre>
<p>Acuerdense que tienen que tener un usuario en el equipo remoto.<br />
Esto va hacer un append de nuestra llave publica en el archivo remoto .ssh/authorized_key del servidor destino.</p>
<p><strong>Paso 3 &#8212;&gt; Autentificarse en el equipo remoto sin poner ningun password.</strong></p>
<pre>[test@servidorA ~]$ ssh rino@192.168.100.136
Linux debian 2.6.32-5-686 #1 SMP Wed Jan 12 04:01:41 UTC 2011 i686

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Mon Feb 14 19:43:11 2011 from 192.168.100.1
rino@servidorB:~$</pre>
<p>Como ven no utilizamos ninguna password.</p>
<p><strong>Ahora vamos a ver como utilizar ssh-add y ssh-agent. </strong><br />
Estos comandos nos van a servir para poder administrar nuestras llaves que se cargan cuando se inicia nuestra sesion. Imaginense que alguien se adueña de nuestras llaves como no la protegimos con una clave cualquiera se puede pasar por nosotros es por eso que necesitamos configurarle una clave.</p>
<pre>[test@servidorA ~]$ ssh-keygen -p -t rsa
Enter file in which the key is (/home/test/.ssh/id_rsa):
Enter new passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved with the new passphrase.
[test@servidorA ~]$</pre>
<p>Ahora ya tenemos una clave para nuestras llaves.</p>
<pre>[test@servidorA ~]$ ssh rino@192.168.100.136
Enter passphrase for key '/home/test/.ssh/id_rsa':
Linux debian 2.6.32-5-686 #1 SMP Wed Jan 12 04:01:41 UTC 2011 i686

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Mon Feb 14 19:57:21 2011 from 192.168.100.1
rino@servidorB:~$</pre>
<p>Ahora como ven antes de hacer algo me pide que autentifique con la clave de las llaves.. Ya si alguien quiere usar mis llaves no puede..</p>
<p>La idea es que no tenga que poner siempre esa clave y eso lo vamos a lograr con ssh-add y ssh-agent.</p>
<pre>[test@oc7287280510 ~]$ ssh-agent
SSH_AUTH_SOCK=/tmp/ssh-JtWDS10101/agent.10101; export SSH_AUTH_SOCK;
SSH_AGENT_PID=10102; export SSH_AGENT_PID;
echo Agent pid 10102;
[test@oc7287280510 ~]$</pre>
<p>*. Esos comandos que tiro por lineas lo tendriamos que copiar y pegar para que los ejecute la shell, pero seria muy engorroso asi que vamos a realizarlo de la siguiente manera.*<br />
*. Tengan en cuenta que les va a pedir su passphrase.*</p>
<p>Entonces vamos a realizar otros pasos:</p>
<pre>[test@oc7287280510 ~]$ eval `ssh-agent`
Agent pid 10194
[test@oc7287280510 ~]$</pre>
<p>Aca entra en juego el ssh-ad para que agreguemos nuestra llave en memoria. Nos va a pedir nuestra clave de la llave.</p>
<pre>[test@oc7287280510 ~]$ ssh-add
Enter passphrase for /home/test/.ssh/id_rsa:
Identity added: /home/test/.ssh/id_rsa (/home/test/.ssh/id_rsa)
[test@oc7287280510 ~]$</pre>
<p>Ahora intentamos loguearnos al servidor remoto.</p>
<pre>[test@oc7287280510 ~]$ ssh rino@192.168.100.136
Linux debian 2.6.32-5-686 #1 SMP Wed Jan 12 04:01:41 UTC 2011 i686

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Mon Feb 14 20:02:54 2011 from 192.168.100.1
rino@servidorB:~$</pre>
<p>Como ven ya nos logueamos sin necesidad de poner ninguna clave. (ni la del usuario ni la de nuestra llave).<br />
Lo unico malo de esto es que no es una buena idea ponerlo en .bashrc o .bash_profile , menos en /etc/profile.. Lo ideal seria en alguno de los scripts de inicio de nuestra sesion grafica para que cuando iniciemos la grafica nos pida que pongamos la password y ya queda nuestra llave cargada [7][8][9] porque sino solo quedaria la llave con la clave cargada unicamente en la shell donde lo ejecutamos  en cambio si lo hacemos no bien entramos en nuestra sesion grafica ya queda definida de forma global.</p>
<h2><a name="0.2_7"></a><strong>Creando Tuneles</strong></h2>
<p>Sintaxis</p>
<p>ssh -R|L port:host:host_port [user@]hostname [command]</p>
<p>Cuando la opción principal es-L, ssh redirige el tráfico desde el puerto  local (port) al puerto de la máquina remota(host:host_port)<br />
Cuando un programa se conecta al puerto host local, la conexión se transmite al lado remoto.<br />
Una aplicación muy útil para esto es que transmita los puertos locales al servidor de correo de su empresa para que pueda enviar correo electrónico como si estuviera en la oficina. Todo lo que tienes que hacer es configurar el cliente de correo electrónico para conectar con el puerto correcto en el servidor local. Mas adelante veremos un ejemplo.<br />
Cuando se utiliza-R, ocurre lo contrario. El puerto (port) de la  interfaz de host local de la máquina remota se une al equipo local, y las conexiones que le serán enviadas a la máquina local dada por el host: host_port.</p>
<p><strong>Ejemplo</strong><br />
Acceda a login.example.com. Entonces, redireccione  las conexiones hacia localhost puerto 2525 al puerto 25 en mail.example.com, que seguramente va a rechazar la retransmisión para usted. La razón es porque la unión con el puerto 2525  tiene que ser creada por root en el  puerto 25:<br />
$ ssh-L 2525: mail.example.com: 25 login.example.com<br />
En el sentido de que podemos forwardear estos puertos y otros para crear un tunel cifrado de datos en ambas partes.<br />
Otros ejemplos y teoria [14][15]<br />
La idea es que generemos un tunel (comunicacion) entre dos puntos ya sea de un lado o del otro para poder tener nuestros datos cifrados.<br />
Igualmente recomiendo ver las paginas mencionadas para estar mas  a fin con el concepto aca solamente se meniciona la sintaxis.</p>
<p><strong>Veamos un ejemplo mas.</strong></p>
<p>Supongamos que querramos enviar un mail con telnet utilizando un servidor de correo externo en este caso  mail.restauradordeleyes.com.ar</p>
<pre>[rino@oc7287280510 ~]$ telnet mail.restauradordeleyes.com.ar 25
Trying 38.108.125.71...
Connected to mail.restauradordeleyes.com.ar.
Escape character is '^]'.
220 wiki.itrestauracion.com.ar ESMTP Sendmail 8.13.8/8.13.8; Tue, 15 Feb 2011 21:37:57 +0300
helo mail.restauradordeleyes.com.ar
250 wiki.itrestauracion.com.ar Hello cpe-200-115-224-64.telecentro-reversos.com.ar [200.115.224.64] (may be forged), pleased to meet you
mail from: rino@restauradordeleyes.com.ar
250 2.1.0 rino@restauradordeleyes.com.ar... Sender ok
rcpt to: villadalmine@gmail.com
550 5.7.1 villadalmine@gmail.com... Relaying denied. IP name possibly forged [200.115.224.64]</pre>
<p>Como ven nos rechaza porque esta bien configurado no nos permite hacer relay por lo cual necesitamos si o si crear un tunel hacia el mail server.</p>
<p>Entonces antes que nada creamos el tunel.</p>
<pre>[rino@oc7287280510 ~]$ ssh -L 2525:localhost:25 root@mail.restauradordeleyes.com.ar
bienvenido a mi sistema %a. Tu IP esta siendo guardada para mayor seguridad
root@mail.restauradordeleyes.com.ar's password:
Last login: Tue Feb 15 21:33:40 2011 from 200.115.224.64
[root@villadalmine ~]#</pre>
<p>Como ven lo redireccionamos al puerto 2525 pero si queriamos hacerlo sobre el puerto 25 de nuestra maquina tenemos que tener cuidado que no este corriendo un smtp en ese puerto y lo vamos a tener que abrir como root.</p>
<p><strong>Ahora vamos a ver como si nos deja enviar un mail.</strong></p>
<pre>[root@oc7287280510 ~]# telnet localhost 2525
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 wiki.itrestauracion.com.ar ESMTP VersionZZ XXXX; Tue, 15 Feb 2011 21:42:33 +0300
helo mail.restauradordeleyes.com.ar
250 wiki.itrestauracion.com.ar Hello localhost.localdomain [127.0.0.1], pleased to meet you
mail from:rino@restauradordeleyes.com.ar
250 2.1.0 rino@restauradordeleyes.com.ar... Sender ok
rcpt to: villadalmine@gmail.com
250 2.1.5 villadalmine@gmail.com... Recipient ok
data
354 Enter mail, end with "." on a line by itself
HOla este es un mail de prueba
.
250 2.0.0 p1FIgXUA015400 Message accepted for delivery
quit
221 2.0.0 wiki.itrestauracion.com.ar closing connection
Connection closed by foreign host.
[root@oc7287280510 ~]#</pre>
<p>Y como ven ahora si nos dejo enviar un mail <img src='http://www.itrestauracion.com.ar/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<p><strong>Ejemplo con tunel reverso.</strong></p>
<p>En el equipo B tenemos corriendo apache con una pagina pero este host esta nateado detras de una red privada como hariamos para mostrarle la pagina a nuestro cliente remoto que tiene linux ??<br />
Facil primero le tenemos que pedir que nos habilite el puerto 22 y que deje corriendo ssh con un usuario que el nos provee asi luego vamos conectarnos a la pc de el para que despues se abra el tunel y el pueda poner en su navegador locahost:8080 y vea la pagina que tenemos en nuestro servidor privado.</p>
<p>Abrimos el tunel del lado del equipo que esta corriendo apache para conectarnos al equipo del cliente.<br />
<strong>root@servidorB:~# ssh -R 8080:localhost:80 rino@192.168.1.102</strong><br />
The authenticity of host &#8217;192.168.1.102 (192.168.1.102)&#8217; can&#8217;t be established.<br />
RSA key fingerprint is 3a:c4:01:ea:36:0c:26:91:dc:78:5b:7b:b0:e7:6b:72.<br />
Are you sure you want to continue connecting (yes/no)? yes<br />
Warning: Permanently added &#8217;192.168.1.102&#8242; (RSA) to the list of known hosts.<br />
rino@192.168.1.102&#8242;s password:<br />
Last login: Thu Jan 27 17:29:41 2011<br />
[rino@oc7287280510 ~]$</p>
<p>Ahora telefoneamos al cliente y le decimos que pruebe poner en le navegador localhost:8080</p>
<p>El cliente va a tipear en una terminal o en un navegador lo siguiente.</p>
<p>Si es una terminal &#8211;> lynx localhost:8080 y esto le va a devolver..</p>
<pre>
            It works! Usted esta viendo la pagina de mi web privada

   This is the default web page for this server.

   The web server software is running but no content has been added, yet.
Commands: Use arrow keys to move, '?' for help, 'q' to quit, '<-' to go back.
  Arrow keys: Up and Down to move.  Right to follow a link; Left to go back.
 H)elp O)ptions P)rint G)o M)ain screen Q)uit /=search [delete]=history list 
</pre>
<p>Asi entonces abrimos un tunel reverso.. y escapamos al firewal interno porque viaja todo por  otro puerto..</p>
<h2><a name="0.3_0"></a><strong>Teoria GPG[17]</strong></h2>
<p><strong>Historia</strong></p>
<p>GPG inicialmente fue desarrollado por Werner Koch. La versión 1.0.0 fue lanzada el 7 de septiembre de 1999. El ministerio de Economía y Tecnología del Gobierno Alemán financió la documentación y la versión a Microsoft Windows en el año 2000.</p>
<p><strong>Usos de GPG</strong></p>
<p>GPG es estable, calificado como un software para el uso en producción y es comúnmente incluido en los sistemas operativos como FreeBSD, OpenBSD, NetBSD y últimamente con todas las distribuciones GNU/Linux.</p>
<p>Aunque básicamente el programa tiene una interfaz textual, actualmente hay varias aplicaciones gráficas que utilizan recursos de GPG. Por ejemplo, ha sido integrado dentro de Kmail y Evolution, también hay un plugin llamado Enigmail que se integra con Mozilla y Thunderbird que trabajan en Windows, GNU/Linux y otros sistemas operativos. Debido a que los plugins no forman parte del mecanismo de GPG y no están especificados en los estándares OpenPGP, ni sus respectivos desarrolladores están vinculados con los proyectos de plugins, se podría pensar que las ventajas de seguridad de GPG puedan estar comprometidas o incluso perdiendo su efectividad como resultado de esta falta de coordinación y apoyo, pero al ser las herramientas de código abierto o scripts interpretados (como en el caso de los plugins en Thunderbird), se garantiza un funcionamiento fiable con la herramienta GPG.</p>
<p>GPG también puede ser compilado en otras plataformas como Mac OS X y Windows. En Mac OS X hay portada una aplicación libre llamada MacGPG, que ha sido adaptada para usar el ambiente del usuario y sus definiciones de clases nativas. La compilación cruzada no es un ejercicio trivial, por lo menos en parte debido a que las provisiones de seguridad cambian con el sistema operativo y su adaptación a menudo se vuelve difícil, pero los compiladores de alta calidad deben producir ejecutables que interactúen correctamente con otras implementaciones GPG.</p>
<p><strong>Como trabaja GPG</strong></p>
<p>GPG cifra los mensajes usando pares de claves individuales asimétricas generadas por los usuarios. Las claves públicas pueden ser compartidas con otros usuarios de muchas maneras, un ejemplo de ello es depositándolas en los servidores de claves. Siempre deben ser compartidas cuidadosamente para prevenir falsas identidades por la corrupción de las claves públicas. También es posible añadir una firma digital criptográfica a un mensaje, de esta manera la totalidad del mensaje y el remitente pueden ser verificados en caso de que se desconfíe de una correspondencia en particular.</p>
<p>GPG no usa algoritmos de software que están restringidos por patentes, entre estos se encuentra el algoritmo de cifrado IDEA que está presente en PGP casi desde sus inicios. En su lugar usa una serie de algoritmos no patentados como ElGamal, CAST5, Triple DES (3DES), AES y Blowfish. También es posible usar IDEA en GPG descargando un plugin extra, sin embargo este puede requerir una licencia para usuarios de algunos países en donde esté patentada IDEA.</p>
<p>GPG es un software de cifrado híbrido que usa una combinación convencional de criptografía de claves simétricas para la rapidez y criptografía de claves públicas para el fácil compartimiento de claves seguras, típicamente usando recipientes de claves públicas para cifrar una clave de sesión que es usada una vez. Este modo de operación es parte del estándar OpenPGP y ha sido parte del PGP desde su primera versión.</p>
<p><strong>Problemas</strong></p>
<p>El estándar OpenPGP especifica varios métodos de mensajes con firmas digitales. Debido a un error al intentar mejorar la eficiencia de uno de los métodos, se introdujo una vulnerabilidad de seguridad (Nguyen 2004) que afectó a un único método de mensajes firmado digitalmente utilizado en algunas versiones de GPG (desde la 1.0.2 hasta la 1.2.3, con menos de 1.000 claves listadas en los servidores de claves). Dicha vulnerabilidad ha sido corregida a partir de la versión 1.2.4 de GPG. El episodio ilustra la dificultad de realizar implementaciones correctas de algoritmos criptográficos, protocolos e incluso criptosistemas.</p>
<p>GPG es un sistema en línea de comandos. Diferentes implementaciones gráficas están disponibles pero sólo algunas tienen implementadas todas sus características (por ejemplo: borrado de ID, usuarios o firmas). Debido a que todas las instrucciones deben ser pasadas a la línea de comandos, rápidamente llegan a dificultar el uso correcto de aspectos no triviales del programa. El trabajo sobre una versión de librería está en progreso.</p>
<h2><a name="0.3_1"></a><strong>Uso GPG</strong></h2>
<p>Vamos a ver como usariamos gpg para tener un conocimiento basico sobre el y poder estar listo para rendirlo en LPIC-1.</p>
<p><strong>Generar nuestra llave gpg.</strong></p>
<pre>
rino@servidorB:~$ gpg --gen-key
gpg (GnuPG) 1.4.10; Copyright (C) 2008 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Please select what kind of key you want:
   (1) RSA and RSA (default)
   (2) DSA and Elgamal
   (3) DSA (sign only)
   (4) RSA (sign only)
Your selection?
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048)
Requested keysize is 2048 bits
Please specify how long the key should be valid.
         0 = key does not expire
      <n>  = key expires in n days
      <n>w = key expires in n weeks
      <n>m = key expires in n months
      <n>y = key expires in n years
Key is valid for? (0) 4
Key expires at Sat 19 Feb 2011 03:05:33 PM EST
Is this correct? (y/N) y

You need a user ID to identify your key; the software constructs the user ID
from the Real Name, Comment and Email Address in this form:
    "Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>"

Real name: RinoRondan
Email address: rino@restauradordeleyes.com.ar
Comment: This is a Test
You selected this USER-ID:
    "RinoRondan (This is a Test) <rino@restauradordeleyes.com.ar>"

Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O
You need a Passphrase to protect your secret key.

We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
.....+++++
.............+++++
We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
..+++++
..+++++
gpg: /home/rino/.gnupg/trustdb.gpg: trustdb created
gpg: key B32E99FF marked as ultimately trusted
public and secret key created and signed.

gpg: checking the trustdb
gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
gpg: depth: 0  valid:   1  signed:   0  trust: 0-, 0q, 0n, 0m, 0f, 1u
gpg: next trustdb check due at 2011-02-19
pub   2048R/B32E99FF 2011-02-15 [expires: 2011-02-19]
      Key fingerprint = DEDF F9DE D3EF F481 5DC6  4829 A2D2 DE78 B32E 99FF
uid                  RinoRondan (This is a Test) <rino@restauradordeleyes.com.ar>
sub   2048R/56E6C627 2011-02-15 [expires: 2011-02-19]

rino@servidorB:~$
</pre>
<p>Si llegamos a tener este error --></p>
<pre>
Not enough random bytes available.  Please do some other work to give
the OS a chance to collect more entropy! (Need 285 more bytes)
</pre>
<p>Tenemos que instalarnos la tool rng-tools y editar el archivo /etc/default/rng-tools agregandole el device -->HRNGDEVICE=/dev/urandom.<br />
Para luego restartear el servicio --> /etc/init.d/rng-tools start.</p>
<p>Bueno si todo salio bien van a tener una pantalla similar a la de arriba.</p>
<p><strong>Ahora vamos a ver como listamos nuestra llave creada.</strong></p>
<pre>
rino@servidorB:~$ gpg --list-keys
/home/rino/.gnupg/pubring.gpg
-----------------------------
pub   2048R/B32E99FF 2011-02-15 [expires: 2011-02-19]
uid                  RinoRondan (This is a Test) <rino@restauradordeleyes.com.ar>
sub   2048R/56E6C627 2011-02-15 [expires: 2011-02-19]

rino@servidorB:~$
</pre>
<p><strong>Importar una llave publica al gpg keyring.</strong></p>
<pre>
rino@servidorB:~$ gpg --export --armor rino@restauradordeleyes.com.ar > rinorondan.asc
rino@servidorB:~$ gpg --import rinorondan.asc
gpg: key B32E99FF: "RinoRondan (This is a Test) <rino@restauradordeleyes.com.ar>" not changed
gpg: Total number processed: 1
gpg:              unchanged: 1
rino@servidorB:~$
</pre>
<p>En este caso la llave publica ya la tengo... pero si tuviera una que me pasaran por mail con el gpg --import file bastaria.</p>
<p><strong>Si quisiera editar una llave ..</strong></p>
<pre>
rino@servidorB:~$ gpg --edit-key RinoRondan
gpg (GnuPG) 1.4.10; Copyright (C) 2008 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Secret key is available.

pub  2048R/B32E99FF  created: 2011-02-15  expires: 2011-02-19  usage: SC
                     trust: ultimate      validity: ultimate
sub  2048R/56E6C627  created: 2011-02-15  expires: 2011-02-19  usage: E
[ultimate] (1). RinoRondan (This is a Test) <rino@restauradordeleyes.com.ar>

gpg> help
quit        quit this menu
save        save and quit
help        show this help
fpr         show key fingerprint
list        list key and user IDs
uid         select user ID N
key         select subkey N
check       check signatures
sign        sign selected user IDs [* see below for related commands]
lsign       sign selected user IDs locally
tsign       sign selected user IDs with a trust signature
nrsign      sign selected user IDs with a non-revocable signature
adduid      add a user ID
addphoto    add a photo ID
deluid      delete selected user IDs
addkey      add a subkey
addcardkey  add a key to a smartcard
keytocard   move a key to a smartcard
bkuptocard  move a backup key to a smartcard
delkey      delete selected subkeys
addrevoker  add a revocation key
delsig      delete signatures from the selected user IDs
expire      change the expiration date for the key or selected subkeys
primary     flag the selected user ID as primary
toggle      toggle between the secret and public key listings
pref        list preferences (expert)
showpref    list preferences (verbose)
setpref     set preference list for the selected user IDs
keyserver   set the preferred keyserver URL for the selected user IDs
notation    set a notation for the selected user IDs
passwd      change the passphrase
trust       change the ownertrust
revsig      revoke signatures on the selected user IDs
revuid      revoke selected user IDs
revkey      revoke key or selected subkeys
enable      enable key
disable     disable key
showphoto   show selected photo IDs
clean       compact unusable user IDs and remove unusable signatures from key
minimize    compact unusable user IDs and remove all signatures from key

* The `sign' command may be prefixed with an `l' for local signatures (lsign),
  a `t' for trust signatures (tsign), an `nr' for non-revocable signatures
  (nrsign), or any combination thereof (ltsign, tnrsign, etc.).

gpg>
</pre>
<p>Cualquier cambio que hagan les va a pedir la clave para esa llave.</p>
<p>Todas las claves tienen un ID  --></p>
<p>pub  2048R/<strong>B32E99FF</strong>  created: 2011-02-15  expires: 2011-02-19  usage: SC  </p>
<p>Lo que esta resaltado en negrita es el ID de su clave gpg.</p>
<p><strong>Exportar las llaves :</strong><br />
Ambas:<br />
rino@servidorB:~$ gpg --export -o gpg_backup_file</p>
<p>Solo la privada:<br />
rino@servidorB:~$ gpg --export-secret-key -a "RinoRondan" -o private.key<br />
Les va a mostrar todo el string con la data de la clave privada.</p>
<p>Importar una clave por el ID </p>
<pre>
rino@servidorB:~/.gnupg$ gpg --recv-keys EF9AAD20
gpg: requesting key EF9AAD20 from hkp server keys.gnupg.net
gpg: key EF9AAD20: public key "G. Matthew Rice <mrice@lpi.org>" imported
gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
gpg: depth: 0  valid:   1  signed:   0  trust: 0-, 0q, 0n, 0m, 0f, 1u
gpg: next trustdb check due at 2011-02-19
gpg: Total number processed: 1
gpg:               imported: 1
rino@servidorB:~/.gnupg$
</pre>
<p>Ahora firmamos el id que bajamos con la nuestra llave.</p>
<pre>
rino@servidorB:~/.gnupg$  gpg --edit-key G. Matthew Rice
gpg (GnuPG) 1.4.10; Copyright (C) 2008 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

pub  1024D/EF9AAD20  created: 2004-05-14  expires: never       usage: SC
                     trust: unknown       validity: unknown
sub  2048g/EC0B7A34  created: 2004-05-14  expires: never       usage: E
[ unknown] (1). G. Matthew Rice <mrice@lpi.org>
[ unknown] (2)  G. Matthew Rice <matt@lpi.org>
[ unknown] (3)  G. Matthew Rice <matt@rice.ca>
[ unknown] (4)  G. Matthew Rice <matt@linux.ca>
[ unknown] (5)  G. Matthew Rice <matt@vizim.com>
[ unknown] (6)  G. Matthew Rice <matt@starnix.com>

Invalid command  (try "help")

Invalid command  (try "help")

gpg> lsign
Really sign all user IDs? (y/N) y

pub  1024D/EF9AAD20  created: 2004-05-14  expires: never       usage: SC
                     trust: unknown       validity: unknown
 Primary key fingerprint: BD41 69EA 33A4 B657 3A28  2A80 E006 CBF0 EF9A AD20

     G. Matthew Rice <mrice@lpi.org>
     G. Matthew Rice <matt@lpi.org>
     G. Matthew Rice <matt@rice.ca>
     G. Matthew Rice <matt@linux.ca>
     G. Matthew Rice <matt@vizim.com>
     G. Matthew Rice <matt@starnix.com>

Are you sure that you want to sign this key with your
key "RinoRondan (This is a Test) <rino@restauradordeleyes.com.ar>" (B32E99FF)

The signature will be marked as non-exportable.

Really sign? (y/N) y

You need a passphrase to unlock the secret key for
user: "RinoRondan (This is a Test) <rino@restauradordeleyes.com.ar>"
2048-bit RSA key, ID B32E99FF, created 2011-02-15

gpg> tsign
Really sign all user IDs? (y/N) y
Your current signature on "G. Matthew Rice <mrice@lpi.org>"
is a local signature.
Do you want to promote it to a full exportable signature? (y/N) y
Your current signature on "G. Matthew Rice <matt@lpi.org>"
is a local signature.
Do you want to promote it to a full exportable signature? (y/N) y
Your current signature on "G. Matthew Rice <matt@rice.ca>"
is a local signature.
Do you want to promote it to a full exportable signature? (y/N) y
Your current signature on "G. Matthew Rice <matt@linux.ca>"
is a local signature.
Do you want to promote it to a full exportable signature? (y/N) y
Your current signature on "G. Matthew Rice <matt@vizim.com>"
is a local signature.
Do you want to promote it to a full exportable signature? (y/N) y
Your current signature on "G. Matthew Rice <matt@starnix.com>"
is a local signature.
Do you want to promote it to a full exportable signature? (y/N) y

pub  1024D/EF9AAD20  created: 2004-05-14  expires: never       usage: SC
                     trust: unknown       validity: unknown
 Primary key fingerprint: BD41 69EA 33A4 B657 3A28  2A80 E006 CBF0 EF9A AD20

     G. Matthew Rice <mrice@lpi.org>
     G. Matthew Rice <matt@lpi.org>
     G. Matthew Rice <matt@rice.ca>
     G. Matthew Rice <matt@linux.ca>
     G. Matthew Rice <matt@vizim.com>
     G. Matthew Rice <matt@starnix.com>

Please decide how far you trust this user to correctly verify other users' keys
(by looking at passports, checking fingerprints from different sources, etc.)

  1 = I trust marginally
  2 = I trust fully

Your selection? 2

Please enter the depth of this trust signature.
A depth greater than 1 allows the key you are signing to make
trust signatures on your behalf.

Your selection? 1

Please enter a domain to restrict this signature, or enter for none.

Your selection? 1

Are you sure that you want to sign this key with your
key "RinoRondan (This is a Test) <rino@restauradordeleyes.com.ar>" (B32E99FF)

Really sign? (y/N) y

You need a passphrase to unlock the secret key for
user: "RinoRondan (This is a Test) <rino@restauradordeleyes.com.ar>"
2048-bit RSA key, ID B32E99FF, created 2011-02-15

gpg> quit
Save changes? (y/N) y
</pre>
<p>Ahora listamos:</p>
<pre>
rino@servidorB:~/.gnupg$ gpg --list-keys
gpg: checking the trustdb
gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
gpg: depth: 0  valid:   1  signed:   1  trust: 0-, 0q, 0n, 0m, 0f, 1u
gpg: depth: 1  valid:   1  signed:   0  trust: 0-, 0q, 0n, 0m, 1f, 0u
gpg: next trustdb check due at 2011-02-19
/home/rino/.gnupg/pubring.gpg
-----------------------------
pub   2048R/B32E99FF 2011-02-15 [expires: 2011-02-19]
uid                  RinoRondan (This is a Test) <rino@restauradordeleyes.com.ar>
sub   2048R/56E6C627 2011-02-15 [expires: 2011-02-19]

pub   1024D/EF9AAD20 2004-05-14
uid                  G. Matthew Rice <mrice@lpi.org>
uid                  G. Matthew Rice <matt@lpi.org>
uid                  G. Matthew Rice <matt@rice.ca>
uid                  G. Matthew Rice <matt@linux.ca>
uid                  G. Matthew Rice <matt@vizim.com>
uid                  G. Matthew Rice <matt@starnix.com>
sub   2048g/EC0B7A34 2004-05-14

rino@servidorB:~/.gnupg$
</pre>
<p>Ahora encriptamos con un archivo nuestro para que solo lo pueda abrir una persona.</p>
<pre>
rino@servidorB:~/.gnupg$ gpg -e -u "RinoRondan" -r "G. Matthew Rice" rino
rino@servidorB:~/.gnupg$
</pre>
<p>Despues cuando Matthew reciba el archivo el lo va a poder desencriptar asi..<br />
<strong> gpg -d rino.gpg </strong></p>
<p><strong>Como subir mi ID a un servidor de llaves publicas</strong></p>
<p>gpg --keyserver keys.gnupg.net --recv-key ID</p>
<p>Si quisieramos buscar mas sobre como funciona tendriamos que entender sobre estos archivos:</p>
<p>En el examen de LPI solo nos van a pedir que identifiquemos los archivos que estan en ~/gpg/.</p>
<p><strong>gpg.conf</strong><br />
Nos permite crear los seteos por defectos para GPG, incluyendo nuestro servidor de llaves preferido. En donde este servidor contiene las llaves publicas de los que deseen subirla.</p>
<p><strong>pubring.gpg</strong><br />
Contiene las llaves publicas que importamos.</p>
<p><strong>random_seed</strong><br />
Un archivo de texto que contiene caracteristicas que permitiran a GPG crear numeros aleatorios mas facil y rapidamente.</p>
<p><strong>secring.gpg</strong><br />
Contiene la llave privada que determina nuestra identidad.</p>
<p><strong>trustdb.gpg</strong><br />
La base de datos de confianza, que contiene la información relativa a los valores de la confianza que ha asignado a varias claves públicas. Un usuario puede establecer diferentes niveles de confianza para las claves públicas en su anillo dominante.</p>
<h2><a name="0.3_2"></a><strong>Uso  de GPG con Gmail</strong></h2>
<p>Para poder usar nuestras llaves con gmail vamos a tener que usar el thunderbird y activar el plugin Enigmail o bajarselo con aptitude.<br />
Luego pueden utilizar el wizzar de thunderbird para habilitar la cuenta de gmail y despues configurar su llaves. Acuerdense de antes generar sus llaves con gpg.<br />
Tambien pueden utilizar FreeGPG para firefox en donde van a poder utilizar gpg con gmail.<br />
Aca les dejo un link donde explica --> https://security.ngoinabox.org/es/thunderbird_usarenigmail</p>
<p>Fuente:</p>
<p>http://es.wikipedia.org/wiki/OpenSSH</p>
<p>[2]http://es.wikipedia.org/wiki/Clave_pública<br />
[3]http://ubuntulife.wordpress.com/2007/03/30/exportar-el-display-ejecutar-aplicaciones-x-remotas-en-local/<br />
[4]http://www.gnupg.org/gph/es/manual.html#AEN210<br />
[5]http://codesorcery.net/old/mutt/mutt-gnupg-howto<br />
[6]http://www.thegeekstuff.com/2008/11/3-steps-to-perform-ssh-login-without-password-using-ssh-keygen-ssh-copy-id/<br />
[7]http://docs.fedoraproject.org/en-US/Fedora/13/html/Deployment_Guide/s2-ssh-configuration-keypairs.html<br />
[8]http://www.ucolick.org/~sla/ssh/agenttips.html<br />
[9]https://wiki.archlinux.org/index.php/Using_SSH_Keys<br />
[10]http://fedoraproject.org/wiki/DocsProject/UsingGpg/CreatingKeys<br />
[11]https://security.ngoinabox.org/es/thunderbird_usarenigmail<br />
[12]http://www.dotdeb.org/2010/07/11/dotdeb-packages-are-now-signed/<br />
[13]http://www.itrestauracion.com.ar/?p=26<br />
[14]http://www.e-ghost.deusto.es/docs/articulo.ssh.html<br />
[15]http://crysol.org/es/node/1317<br />
[16]http://www.rossde.com/PGP/index.html<br />
[17]http://es.wikipedia.org/wiki/GNU_Privacy_Guard<br />
[18]http://www.howtoforge.com/helping-the-random-number-generator-to-gain-enough-entropy-with-rng-tools-debian-lenny<br />
[19]http://technologist.pro/systems/encrypt-data-using-gpggnu-privacy-guard</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.itrestauracion.com.ar%2F%3Fp%3D1321&amp;title=Preparando%20LPIC-1%20110.3%20Asegurando%20datos%20mediante%20cifrado" id="wpa2a_10"><img src="http://www.itrestauracion.com.ar/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.itrestauracion.com.ar/?feed=rss2&#038;p=1321</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
	</item>
		<item>
		<title>Preparando LPIC-1 Tema 110 Seguridad</title>
		<link>http://www.itrestauracion.com.ar/?p=1317</link>
		<comments>http://www.itrestauracion.com.ar/?p=1317#comments</comments>
		<pubDate>Mon, 07 Feb 2011 06:13:47 +0000</pubDate>
		<dc:creator>restauracion</dc:creator>
				<category><![CDATA[Lpi]]></category>

		<guid isPermaLink="false">http://www.itrestauracion.com.ar/?p=1317</guid>
		<description><![CDATA[Topicos Cubiertos: Preparando LPIC-1 Topico 110.1 Realizar tareas de administración de seguridad (EN CONSTRUCCION) Preparando LPIC-1 Topico 110.2 Configurar la seguridad del host Preparando LPIC-1 Topico 110.3 Asegurando datos mediante cifrado]]></description>
			<content:encoded><![CDATA[<p>Topicos Cubiertos:</p>
<p>Preparando LPIC-1 Topico 110.1 Realizar tareas de administración de seguridad (EN CONSTRUCCION)<br />
<a href="?p=1277">Preparando LPIC-1 Topico  110.2 Configurar la seguridad del host</a><br />
<a href="?p=1321">Preparando LPIC-1 Topico  110.3 Asegurando datos mediante cifrado</a></p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.itrestauracion.com.ar%2F%3Fp%3D1317&amp;title=Preparando%20LPIC-1%20Tema%20110%20Seguridad" id="wpa2a_12"><img src="http://www.itrestauracion.com.ar/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.itrestauracion.com.ar/?feed=rss2&#038;p=1317</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
	</item>
		<item>
		<title>Preparando LPIC-1 110.2 Configurar la seguridad del host</title>
		<link>http://www.itrestauracion.com.ar/?p=1277</link>
		<comments>http://www.itrestauracion.com.ar/?p=1277#comments</comments>
		<pubDate>Sun, 06 Feb 2011 20:02:45 +0000</pubDate>
		<dc:creator>restauracion</dc:creator>
				<category><![CDATA[Lpi]]></category>
		<category><![CDATA[Redes]]></category>

		<guid isPermaLink="false">http://www.itrestauracion.com.ar/?p=1277</guid>
		<description><![CDATA[1- Introduccion 2- Inetd 2-1 Instalacion 2-2 Configuracion 2-3 Configuracion con TCP_WRAPPER 2-4 Ejemplo de Configuracion con TCP_WRAPPER 2-5 Tabla de valores de TCP_WRAPPER 2-6 Mas Ejemplos de TCP_WRAPPER 3-0 Xinetd 3-1 Configuracion Xinetd 3-2 Tabla de Valores Xinetd 3-3 &#8230; <a href="http://www.itrestauracion.com.ar/?p=1277">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="#0.1_0">1- Introduccion</a><br />
<a href="#0.2_0">2- Inetd</a><br />
<a href="#0.2_1">2-1 Instalacion</a><br />
<a href="#0.2_2">2-2 Configuracion</a><br />
<a href="#0.2_3">2-3 Configuracion con TCP_WRAPPER</a><br />
<a href="#0.2_4">2-4  Ejemplo de Configuracion con TCP_WRAPPER</a><br />
<a href="#0.2_5">2-5  Tabla de valores de TCP_WRAPPER</a><br />
<a href="#0.2_6">2-6  Mas Ejemplos de TCP_WRAPPER</a><br />
<a href="#0.3_0">3-0  Xinetd</a><br />
<a href="#0.3_1">3-1 Configuracion  Xinetd</a><br />
<a href="#0.3_2">3-2  Tabla de Valores Xinetd</a><br />
<a href="#0.3_3">3-3  Usando ssh con Xinetd</a><br />
<a href="#0.4_0">4  Fuentes</a></p>
<h2><a name="0.1_0"></a>Introduccion</h2>
<p>Aqui veremos algunas de las cosas mas importates para darle mayor seguridad a nuestro host.<br />
Empezaremos con el demonio Inetd, pero antes vamos a introducirnos con una breve descripcion acerca de lo que es asegurar nuestro host.<br />
Tenemos que dejar en claro que no hay nada que cumpla con una seguridad del 100%  en nuestro equipo. Se pueden realizar diversas tecnicas y mejoras para que nuestro equipo no quede expuesto a fallas o ataques pero siempre se va a encontrar problemas. Aca es donde uno tiene que decidir que politicas seguir dependiendo de las necesidades que tengamos.<br />
Para poder empezar a hablar de seguridad en nuestro host debemos saber que hay multiples herramientas y servicios que nos brindaran diversas soluciones dependiendo de nuestras necesidades. Los servicios de redes que corren en nuestros host son inicializados mediante un script donde cada uno de ellos administran sus recursos disponiendo de lo que necesiten. En contraposicion a esto tenemos una forma de centralizar los servicios en un unico demonio que en sus inicios fue llamado inetd y luego Red Hat lanzo la version extendida denominada Xinetd. Estos demonios son llamados &#8220;Super Servers&#8221; porque engloban una cantidad enorme de servicios que utilizan nuestra red para brindar distintos servicios en donde tenemos un unico demonio en memoria que va ir cargando los demas bajo demanda segun sea la peticion que reciba este servicio. Esto se debe a que años atras cuando la memoria ram era algo tan preciado el tener tantos procesos corriendo para cada servicio hacia que el uso sea demasiado alto y por eso se optaba por agregar los servicios al demonio inetd/xinetd.<br />
El servicio Inetd tiene dos importantes caracteristicas:<br />
* Es un simple proceso que puede escuchar en multiples puertos para sus conexiones entrantes, iniciando el servicio correspondiente de acuerdo al puerto que se le solicite.<br />
* Tambien soporta un sistema de seguridad que nos permite poder aceptar o denegar el acceso a los servicios que esten configurados en donde muchos de ellos por su cuenta no poseen de estas caracteristicas.<br />
Tambien luego salio una mejora que es Xinetd. Este seria el reemplazo de inetd en donde se mejoro notablemente la forma de darle mas control a todo lo referente a la seguridad  proporcionando una mejora importante en el logging de nuestros servicios.</p>
<h2><a name="0.2_0"></a>Inetd</h2>
<p>Aqui desarrollaremos cada parte del demonio inetd.</p>
<h2><a name="0.2_1"></a>Instalacion</h2>
<p>Antes de empezar a explicar cada parte y como se configura vamos a ver como se instala.</p>
<p>Primero hagamos una consulta para ver si se encuentra instalado.</p>
<pre>debian:/etc# dpkg -l |grep -i inetd
ii  openbsd-inetd                     0.20080125-2               The OpenBSD Internet Superserver
ii  update-inetd                      4.31                       inetd configuration file updater
debian:/etc#
</pre>
<p>El archivo de configuracion se encuentra aqui&gt;</p>
<pre>debian:/etc# ls -la inetd.conf
-rw-r--r-- 1 root root 1056 2011-02-06 17:33 inetd.conf
debian:/etc#
</pre>
<p>Aqui un ejemplo:</p>
<pre>debian:/etc# cat /etc/inetd.conf
# /etc/inetd.conf:  see inetd(8) for further informations.
#
# Internet superserver configuration database
#
#
# Lines starting with "#:LABEL:" or "##" should not
# be changed unless you know what you are doing!
#
# If you want to disable an entry so it isn't touched during
# package updates just comment it out with a single '#' character.
#
# Packages should modify this file by using update-inetd(8)
#
#  

#
#:INTERNAL: Internal services
#discard		stream	tcp	nowait	root	internal
#discard		dgram	udp	wait	root	internal
#daytime		stream	tcp	nowait	root	internal
#time		stream	tcp	nowait	root	internal

#:STANDARD: These are standard services.

#:BSD: Shell, login, exec and talk are BSD protocols.

#:MAIL: Mail, news and uucp services.

#:INFO: Info services

#:BOOT: TFTP service is provided primarily for booting.  Most sites
#       run this only on machines acting as "boot servers."

#:RPC: RPC based services

#:HAM-RADIO: amateur-radio services

#:OTHER: Other services

debian:/etc#
</pre>
<p>Vamos a instalar el servicio telnet para hacer que inetd lo maneje.<br />
Para eso acuerdense de tener bien actualizada su sources.list (http://debgen.simplylinux.ch)</p>
<pre>debian:/etc/apt# aptitude search telnetd
p   inetutils-telnetd                               - telnet server
p   krb5-telnetd                                    - Secure telnet server supporting MIT Kerberos
p   telnetd                                         - The telnet server
p   telnetd-ssl                                     - The telnet server with SSL encryption support
debian:/etc/apt#
</pre>
<p>vamos a elegir el paquete telnetd.</p>
<pre>debian:/etc/apt# aptitude install telnetd
Reading package lists... Done
..
..
Reading task descriptions... Done         

debian:/etc/apt#
debian:/etc/apt# whereis in.telnetd
in: /usr/sbin/in.telnetd
debian:/etc/apt#

Ahora le agregamos la linea al archivo de configuracion
debian:/etc/apt# echo "telnet stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.telnetd" &gt;&gt; /etc/inetd.conf
Corroboramos que se halla agregado bien.
debian:/etc/apt# cat /etc/inetd.conf  |grep -i telnet
telnet stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.telnetd
debian:/etc/apt#

Ahora restarteamos el servicio:
debian:/etc/apt# invoke-rc.d openbsd-inetd restart
Restarting internet superserver: inetd.
Corroboramos que este levantado el puerto 23 correspondiente a telnet
debian:/etc/apt# netstat -atnp |grep -i inetd
tcp        0      0 0.0.0.0:23              0.0.0.0:*               LISTEN      2999/inetd
debian:/etc/apt#
</pre>
<p>Ahora lo que vamos a hacer es conectarnos des una terminal remota a nuestro equipo por medio de telnet que acabamos de levantar. Ojo que telnet ya para conexiones remotas no es lo mas seguro porque va sin cifrar.</p>
<pre>[rino@oc7287280510 ~]$ telnet 192.168.1.100
Trying 192.168.1.100...
Connected to 192.168.1.100.
Escape character is '^]'.
Debian GNU/Linux 5.0
debian login: debian
Password:
Last login: Sun Feb  6 20:19:36 ART 2011 from 192.168.1.102 on pts/1
Linux debian 2.6.26-2-686 #1 SMP Thu Jan 27 00:28:05 UTC 2011 i686

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
debian@debian:~$
Como ven estamos en una terminal remota.
debian:/etc/apt# tty
/dev/pts/0
Ahora si prestan atencion desde esta terminal remota vamos a ver las conexiones establecidas y vean como esta listada nuestra conexion. Tambien van a ver una por ssh.
debian:/etc/apt# netstat -atnp |grep -i established
Active Internet connections (servers and established)
tcp        0     48 192.168.1.100:22        192.168.1.102:36645     ESTABLISHED 2598/0
tcp        0      0 192.168.1.100:23        192.168.1.102:57320     ESTABLISHED 3028/in.telnetd: 19
debian:/etc/apt#
debian:/etc/apt# lsof -i  |grep -i telnet
inetd     2999        root    4u  IPv4   8040       TCP *:telnet (LISTEN)
in.telnet 3028        root    0u  IPv4   8136       TCP 192.168.1.100:telnet-&gt;192.168.1.102:57320 (ESTABLISHED)
in.telnet 3028        root    1u  IPv4   8136       TCP 192.168.1.100:telnet-&gt;192.168.1.102:57320 (ESTABLISHED)
in.telnet 3028        root    2u  IPv4   8136       TCP 192.168.1.100:telnet-&gt;192.168.1.102:57320 (ESTABLISHED)
debian:/etc/apt#
</pre>
<p>Antes de seguir explicando que es cada cosa, vamos a configurar tambien el servicio ftp para que funcione con inetd.</p>
<pre>debian:/etc# aptitude install ftpd
Reading package lists... Done
..
..
Reading task descriptions... Done
debian:/etc#
debian:/etc# whereis in.ftpd
in: /usr/sbin/in.ftpd /usr/sbin/in.telnetd
debian:/etc#
debian:/etc# cat /etc/inetd.conf |grep -i ftp
ftp		stream	tcp	nowait	root	/usr/sbin/tcpd	/usr/sbin/in.ftpd

Ahora vemos quedo todo:
debian:/etc# invoke-rc.d openbsd-inetd restart
Restarting internet superserver: inetd.
debian:/etc# netstat -atnp |grep -i 21
tcp        0      0 0.0.0.0:21              0.0.0.0:*               LISTEN      3144/inetd
debian:/etc#
</pre>
<p>Fijense lo siguiente ambos puertos 21 y 23 estan escuchando atraves de inetd y por ende en el mismo proceso.<br />
debian:/etc# netstat -atnp |egrep -i &#8220;21|23&#8243; |grep -vi established<br />
tcp        0      0 0.0.0.0:21              0.0.0.0:*               LISTEN      3144/inetd<br />
tcp        0      0 0.0.0.0:23              0.0.0.0:*               LISTEN      3144/inetd<br />
debian:/etc#<br />
3144 es el numero del proceso.</p>
<p>Ahora una muestra de como me conecto al fpt.<br />
[rino@oc7287280510 ~]$ ftp 192.168.1.100<br />
Connected to 192.168.1.100 (192.168.1.100).<br />
220 debian.private FTP server (Version 6.4/OpenBSD/Linux-ftpd-0.17) ready.<br />
Name (192.168.1.100:rino): debian<br />
331 Password required for debian.<br />
Password:<br />
230- Linux debian 2.6.26-2-686 #1 SMP Thu Jan 27 00:28:05 UTC 2011 i686<br />
230-<br />
230- The programs included with the Debian GNU/Linux system are free software;<br />
230- the exact distribution terms for each program are described in the<br />
230- individual files in /usr/share/doc/*/copyright.<br />
230-<br />
230- Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent<br />
230- permitted by applicable law.<br />
230 User debian logged in.<br />
Remote system type is UNIX.<br />
Using binary mode to transfer files.<br />
ftp&gt; bye<br />
221 Goodbye.<br />
[rino@oc7287280510 ~]$</p>
<p>Otra forma de probar si anda.</p>
<pre>
debian:~# /usr/sbin/tcpdmatch -d -i /etc/inetd.conf in.telnetd@192.168.1.100 debian@192.168.1.100
warning: host address 192.168.1.100->name lookup failed
client:   address  192.168.1.100
client:   username debian
server:   address  192.168.1.100
server:   process  in.telnetd
access:   granted
debian:~# /usr/sbin/tcpdmatch -d -i /etc/inetd.conf in.ftpd@192.168.1.100 debian@192.168.1.100
warning: host address 192.168.1.100->name lookup failed
client:   address  192.168.1.100
client:   username debian
server:   address  192.168.1.100
server:   process  in.ftpd
access:   granted
debian:~#
debian:~# tcpdchk  -i /etc/inetd.conf  -v
Using network configuration file: /etc/inetd.conf

>>> Rule /etc/hosts.allow line 13:
daemons:  ALL
clients:  ALL
access:   granted
debian:~#
</pre>
<h2><a name="0.2_2"></a>Configuracion</h2>
<p>Ahora ya que vimos como instalarlo y probarlo nos queda ver como se configura bien cada entrada en el archivo inetd.conf y luego introducirlos a lo que se llama TCP_WRAPPER.</p>
<p>El archivo de configuracion /etc/inetd.conf centraliza todos los servicios en el pero tambien podriamos encontrar que existe el directorio /etc/inet.d/ y adentro de el estaran los  servicios especificos que queremos levantar , teniendo obviamente un archivo global que seria /etc/inetd.conf</p>
<p>En la siguiente tabla vamos a explicar el orden y significado de cada campo del archivo inetd.conf.</p>
<table border="1">
<tbody>
<tr>
<th>Pos. Campo</th>
<th>Nombre</th>
<th>Descripcion</th>
</tr>
<tr>
<td>1</td>
<td>Nombre del Servicio</td>
<td>Nombre del Servicio que corresponde al archivo /etc/services. Esto determina en que puerto escuchara</td>
</tr>
<tr>
<td>2</td>
<td>Tipo de Socket</td>
<td>Puede ser , stream, dgram,raw o seqpacket.Tcp usa dgram y udp stream.</td>
</tr>
<tr>
<td>3</td>
<td>Protocolo</td>
<td>Puede ser alguno de los siguientes<br />
* tcp,tcp4 = TCP ipv4<br />
* udp,udp4 = UDP ipv4<br />
* tcp6 =  TCP ipv6<br />
* udp6 = UDP ipv6<br />
* tcp46 =  Ambos  TCP (ipv4 y ipv6)<br />
* udp46 = Ambos UDP (ipv4 u ipv6)</td>
</tr>
<tr>
<td>4</td>
<td>Opciones de conexion</td>
<td> La sintaxis {wait|nowait}[/max-child[/max-connections-per-ip-per-<br />
minute[/max-child-per-ip]]]<br />
* La opcion wait o nowait definoe como inetd maneja  las conexiones entrantes. Si esta indicado wait, inetd manejara todas las peticiones a trabes de un solo demonio, en cambio con nowait esto significa que inetd iniciara un nuevo proceso por cada conexion entrante.<br />
* /max chlid indica  la cantidad de conexiones que se aceptan al mismo tiempo.<br />
*/max-connections-per-ip-per-minute and /max-child-per-ip son los límites opcionales que se pueden colocar sobre este recurso, para evitar los abusos y ataques de denegación de servicio. En donde se delimita las conexiones por cantidad  (tiempo y proceso).
</td>
</tr>
<tr>
<td>5</td>
<td>Usuario que ejecuta el servicio</td>
<td> El servicio sera inicializado con el usuario que le indiquemos.</td>
</tr>
<tr>
<td>6</td>
<td>Servidor</td>
<td>Ruta de acceso completa para el servicio que inetd debe comenzar.</td>
</tr>
<tr>
<td>7</td>
<td>Opciones del Servidor</td>
<td>Argumentos de línea de comandos (si los hay) que se debe pasar al servidor.</td>
</tr>
</tbody>
</table>
<h2><a name="0.2_3"></a>2-3 Configuracion con TCP_WRAPPER</h2>
<p>A esta altura se preguntaran porque estamos usando /usr/bin/tcpd para iniciar el servicio telnet y ftp. Bueno esto se debe a que tcpd inicializa por parametro el servicio que querramos en este caso telnet y ftp y lo hace utlizando tcp_wrapper que a continuacion vamos a ver para que nos sirve.<br />
Utilizamos todos los servicios que queremos que levante inetd con tcpd porque asi podemos aprovechar la ventaja de TCP_WRAPPER.<br />
El demonio tcpd, también conocido como el paquete TCP wrappers, se puede utilizar para limitar   las conexiones se pueden hacer a algunos servicios de red. De esta manera usted puede limitar el acceso a los servicios unicamente a los usuarios autorizados. Es fácil de configurar e integrar en un sistema de trabajo. No hay cambios  que deban hacerse a los demonios de red, sólo pequeños cambios en el archivo inetd.conf.</p>
<p>Ventajas:<br />
Cuando un usuario intenta obtener acceso cliente para un servicio de red que esta utilizando envoltorios TCP, un pequeño programa envoltorio reporta el nombre del servicio solicitado y la informacion del host cliente. EL programa envoltorio no envia directamente informacion al cliente, una vez satisfechas las directivas de control de acceso, el envoltorio se descarga y libera los recursos que esta utilizando. Los envoltorios TCP proporcionan principalmente dos ventajas frente a otras tecnicas de control de servicios de red:<br />
* El cliente que establece la conexion no advierte que envoltorios TCP esta en uso. Los usuarios legitimos no notan ninguna diferencia y los usuarios que intenten atacar al sistema no reciben informacion que indique por que ha fallado su intento de conexion.<br />
* Los envoltorios TCP operan separados de las aplicaciones a las que protege el programa envoltorio. Esto permite que muchas aplicaciones de servidor compartan un grupo comun de ficheros de configuracion para simplificar su administracion.</p>
<p>Aca podemos listar las librerias que utiliza tcpd.<br />
debian:~# ldd /usr/sbin/tcpd<br />
	linux-gate.so.1 =>  (0xb7748000)<br />
	<strong>libwrap.so.0 => /lib/libwrap.so.0 (0xb773a000)</strong><br />
	libc.so.6 => /lib/i686/cmov/libc.so.6 (0xb75df000)<br />
	libnsl.so.1 => /lib/i686/cmov/libnsl.so.1 (0xb75c5000)<br />
	/lib/ld-linux.so.2 (0xb7749000)<br />
debian:~# </p>
<p>La libreria de tcp_wrapper es libwrap.so.0</p>
<pre>
debian:~# dpkg -l |grep wrapper
ii  libwrap0                          7.6.q-16                   Wietse Venema's TCP wrappers library
ii  tcpd                              7.6.q-16                   Wietse Venema's TCP wrapper utilities
debian:~#
</pre>
<p>Para poder utilizar todo esto TCP_WRAPPER utiliza dos archivos.</p>
<p>/etc/host.allow<br />
/etc/host.deny</p>
<p>Ambos archivos de configuración utilizan el mismo formato. Si ninguno de los archivos no existne, es considerado como vacío. Si hay entradas en hosts.allow, pero no hosts.deny,<br />
todo lo que no se autorice de forma expresa se niega. Por el contrario, si hay entradas en<br />
hosts.deny, pero no en hosts.allow, se permiten aquellas conexiones  que explícitamente no se  han negado. Si existen ambas entradas , el hosts.allow se comprueba en primer lugar, y luego hosts.deny. Así que incluso si una conexión es negada en hosts.deny, puede ser anulada con hosts.allow. La sintaxis de estos archivos es el siguiente</p>
<p>Servicio : lista de host [: commando ]</p>
<p>Los servicios son los que estan listados en /etc/services.</p>
<p>Para listar las aplicaciones que soportan  libwrap</p>
<pre>
debian:/usr/bin# cd /usr/sbin
debian:/usr/sbin# for file in *
> {
> if [ -f $file ]; then
> result=`ldd $file | grep -c libwrap`
> if [ "$result" -gt "0" ]; then
> echo "/usr/sbin/$file is linked to libwrap.so"
> fi
> fi
> }
/usr/sbin/inetd is linked to libwrap.so
/usr/sbin/sshd is linked to libwrap.so
/usr/sbin/tcpd is linked to libwrap.so
/usr/sbin/tcpdchk is linked to libwrap.so
/usr/sbin/tcpdmatch is linked to libwrap.so
/usr/sbin/try-from is linked to libwrap.so
debian:/usr/sbin#
</pre>
<h2><a name="0.2_4"></a>2-4 Ejemplo de Configuracion con TCP_WRAPPER</h2>
<p>Vamos a mostrar algunos ejemplos de como configurar nuestros envoltorios TCP.</p>
<pre>
Aca lo primero que hacemos es denegar todo.
debian:/var/log# cat /etc/hosts.deny |grep -v \#

ALL: ALL
debian:/var/log# 

Luego aceptamos las conexiones que nos interesan y las demas que utilizen la libreria tcp_wrapper quedaran negadas.
debian:/var/log# cat /etc/hosts.allow |grep -v \#
in.telnetd : 192.168.1.0/255.255.255.0 : spawn (/bin/echo  `date` %c %u>> /var/log/user.log) &#038;
in.ftpd : 192.168.1.10
sshd: ALL
debian:/var/log#

Aca vemos que cuando intentan acceder al telnet este va a generar una entrada en el archivo user.log en donde nos dira quien fue el que intento conectarse.

debian:/var/log# tail -n 1 /var/log/user.log
Sun Feb 6 23:39:19 ART 2011 192.168.1.102 unknown
debian:/var/log#
</pre>
<p>Para mas informacion todo lo demas queda logueado en /var/log/syslog</p>
<p>FTP:<br />
debian:/var/log# cat syslog |grep -i ftp<br />
Feb  6 20:34:30 debian in.ftpd[3158]: connect from 192.168.1.102 (192.168.1.102)<br />
Feb  6 23:16:42 debian in.ftpd[7918]: refused connect from 192.168.1.102 (192.168.1.102)<br />
debian:/var/log# </p>
<p>debian:/var/log# cat syslog |grep -i telnet| tail -n 5<br />
Feb  6 23:37:51 debian in.telnetd[8078]: error: /etc/hosts.allow, line 13: bad option name: &#8220;%u>>&#8221;<br />
Feb  6 23:37:51 debian in.telnetd[8078]: refused connect from 192.168.1.102 (192.168.1.102)<br />
Feb  6 23:38:22 debian in.telnetd[8110]: error: /etc/hosts.allow, line 13: bad option name: &#8220;%u>>&#8221;<br />
Feb  6 23:38:22 debian in.telnetd[8110]: refused connect from 192.168.1.102 (192.168.1.102)<br />
Feb  6 23:39:19 debian in.telnetd[8152]: connect from 192.168.1.102 (192.168.1.102)<br />
debian:/var/log# </p>
<p>debian:/var/log# cat auth.log |grep -i ssh| tail -n 5<br />
Feb  6 23:16:12 debian sshd[7908]: pam_unix(sshd:session): session closed for user root<br />
Feb  6 23:16:16 debian sshd[7915]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=192.168.1.102  user=root<br />
Feb  6 23:16:17 debian sshd[7915]: Failed password for root from 192.168.1.102 port 35700 ssh2<br />
Feb  6 23:16:23 debian sshd[7915]: Failed password for root from 192.168.1.102 port 35700 ssh2<br />
Feb  6 23:16:36 debian sshd[7915]: PAM 1 more authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=192.168.1.102  user=root<br />
debian:/var/log# </p>
<p>Ahora que pasa si quisieramos enviarle un aviso al cliente cuando no pueda conectarse.<br />
Contenido de hosts.allow<br />
ALL : ALL \<br />
        : severity auth.info \<br />
        : twist /bin/echo &#8220;No se permite utilizar %d desde %h.&#8221;</p>
<p>debian:/var/log#</p>
<p>Mensaje que recibe el clente:<br />
[rino@oc7287280510 ~]$ ftp 192.168.1.100<br />
Connected to 192.168.1.100 (192.168.1.100).<br />
No se permite utilizar in.ftpd desde 192.168.1.102.<br />
ftp><br />
A diferencia de spawn twist le envia un mensaje al cliente diciendole porque no se pudo conectar.</p>
<p>Como veran el tema de los logs es muy importante asi que vale la pena dedicarle un tiempo para armar los logs de la manera mas eficiente para que luego podamos sacar estadisticas.</p>
<h2><a name="0.2_5"></a> 2-5 Tabla de valores de TCP_WRAPPER</h2>
<p>Tenemos la siguiente sintaxis:</p>
<p>Lista_demonios : lista_clientes [:spawn comando_shell]</p>
<p>Lista_demonios: Una colecion con uno o mas nombres de procesos o comodines especiales, separada con espacios en blanco.</p>
<p>Lista_clientes: Uno o mas nombres de host, direcciones de host, patrones o comodines, separados por espacios en blanco, para utilizarlos cuando el nombre de un proceso determinado coincide con un servicio solicitado.</p>
<p>Comando_Shell: Un componente opcional que especifica la accion a tomar en caso de que se utilice una regla.</p>
<p>Los patrones son especialmente utiles para especificar grupos de clientes que pueden o no tener acceso a determinado servicio. Si se coloca un caracter (.) al principio de una cadena, se aplica esa regla a todos los hosts que comparten el final de esa cadena. Es decir que .dominio.com afectara a sistema1.dominio.com y sistema2.dominio.com<br />
El carater (.) al final de la cadena tiene el mismo efecto, excepto que va en la direccion contraria. Esto se utiliza principalmente en direcciones IP, pues una regla que se aplique a 192.168.1. afectara a todo el bloque de clase C de direcciones IP. Tambien pueden utilizarse expresiones de mascara de red como patrones para controlar e lacceso de un grupo determinado de direcciones ip. Incluso es posible utlilizar  (*) o signos de interrogacion (?) para seleccionar grupos completos de nombrde hosts o direccioens IP,siempre que no los utilice la misma cadena que los otros tipos de patrones.</p>
<p>Pueden Utilizarse los siguientes valores en vez de ip o nombres de equipos.</p>
<table border="1">
<tbody>
<tr>
<th>Metodo</th>
<th>Funcion</th>
</tr>
<tr>
<td>.domain.org</td>
<td>Incluye todos los hosts  que estan en el dominio</td>
</tr>
<tr>
<td>192.168.1.</td>
<td>Incluye todos los equipos dentro de ese rango</td>
</tr>
<tr>
<td>Address/Mask</td>
<td>Rango de ip con su mascara</td>
</tr>
<tr>
<td>ALL</td>
<td>Corresponde a todos los clientes de un servicio. Para permitir a un cliente<br />
 el acceso a todos los servicios, utilice ALL en la seccion demonios</td>
</tr>
<tr>
<td>LOCAL</td>
<td>Corresponde a cualquier host cuyo nombre de host y direccion de host sean conocidos, o si el usuario es conocido</td>
</tr>
<tr>
<td>UNKNOWN</td>
<td>Corresponde a cualquier host cuyo nombre de host o direccion de host sean desconocidos, o si el usuario es desconocido</td>
</tr>
<tr>
<td>PARANOID</td>
<td>Corresponde a cualquier host  cuyo nombre de host no coincida con la direccion de host</td>
</tr>
</tbody>
</table>
<p>Una buena practica es denegar todo en host.allow y luego ahi empezar a darle permiso o denegar algunos en particular.<br />
Para eso podriamos usar la palabra reservada EXCEPT</p>
<p>in.telnetd: 10.0.1.23<br />
in.ftpd: 10.0.1. EXCEPT 10.0.1.11</p>
<p>Ademas de permitir o denegar el acceso a servicios a determinados hosts, tambien presta soporte al usode comandos de shell. Estos comandos shell se utilizan mas comunmente con reglas de denegacion para configurar trampas que suelen activar acciones que registran informacion acerca de intentos de conexion fallidos en un fichero especial o envian un mensaje de correo electronico a un administrador.  Tenemos que mencionar otra caracteristica que es el soporte de expansiones. Las expansiones proporcionan al comando informacion acerca de cliente, servidor y proceso involucrados. A continuacion mostramo una lista de expansiones que tienen soporte para esto:</p>
<table border="1">
<tbody>
<tr>
<th>Patron</th>
<th>Funcion</th>
</tr>
<tr>
<td>%a</td>
<td>La direccion IP del cliente</td>
</tr>
<tr>
<td>%A</td>
<td>LA direccion IP del servidor</td>
</tr>
<tr>
<td>%c</td>
<td>Proporciona informacion del cliente, como el nombre de usuario  y el nombre de host o el nombre de usuario y la direccion IP</td>
</tr>
<td>%d</td>
<td>El nombre de proceso del demonio</td>
</tr>
<td>%h</td>
<td>El nombre del host del cliente ( o la direccion IP, sino esta disponible el nombre del host)</td>
</tr>
<td>%H</td>
<td>El nombre del host del servidor ( o la direccion IP, sino esta disponible el nombre del host)</td>
</tr>
<tr>
<td>%n</td>
<td>El nombre de host del cliente. Si no esta disponible, se imprime UNKNOWN.<br />
Si el nombre de host y la direccion de host del cliente no coinciden, se imprime PARANOID</td>
</tr>
<tr>
<td>%N</td>
<td>El nombre de host del cservidor Si no esta disponible, se imprime UNKNOWN.<br />
Si el nombre de host y la direccion de host del servidor no coinciden, se imprime PARANOID</td>
</tr>
<tr>
<td>%p</td>
<td>El ID del proceso demonio</td>
</tr>
<tr>
<td>%s</td>
<td>Informacion del servidor, como el proceso demonio y la direccion de host o IP dervidor</td>
</tr>
<tr>
<td>%u</td>
<td>El nombre de usuario del cliente, si no esta disponible, se imprime unknown.</td>
</tr>
</tbody>
</table>
<h2><a name="0.2_6"></a>Mas Ejemplos de TCP_WRAPPER</h2>
<p>Aca voy a citar algunos ejemplos de uso..<br />
# Bloquear peticiones posiblemente falsificadas a sendmail:<br />
sendmail : PARANOID : deny</p>
<p># No permitimos conexiones desde ejemplo.com:<br />
ALL : .ejemplo.com \<br />
    : spawn (/bin/echo %a desde %h intento acceder a %d >> \<br />
      /var/log/connections.log) \<br />
    : deny</p>
<p># The rest of the daemons are protected.<br />
ALL : ALL \<br />
        : severity auth.info \<br />
        : twist /bin/echo &#8220;No se permite utilizar %d desde %h.&#8221;</p>
<p># This line is required for POP3 connections:<br />
qpopper : ALL : allow</p>
<p>ALL : .crackers.com \<br />
    : spawn (/bin/echo %a from %h attempted to access %d >> \<br />
      /var/log/connections.log) \<br />
    : deny</p>
<p>  ALL: LOCAL @devels<br />
  ALL: .nixcraft.net.in EXCEPT boobytrap.nixcraft.net.in</p>
<p>popd : 192.168.1.200 192.168.1.104<br />
imapd : 192.168.1.0/255.255.255.0<br />
sendmail : 192.168.1.0/255.255.255.0<br />
sshd : 192.168.1.2 172.16.23.12</p>
<p>sshd ,ftpd : ALL<br />
ALL: localhost</p>
<p> in.fingerd: ALL: spawn (/usr/sbin/safe_finger -l @%h | \<br />
   	/usr/bin/mail -s finger-%d-%h root) &#038;<br />
   in.telnetd: ALL: spawn (/usr/sbin/safe_finger -l @%h | \<br />
   	/usr/bin/mail -s telnet-%d-%h root) &#038;</p>
<p>   in.tftpd:   .mynet.com EXCEPT .seas.mynet.com<br />
   in.fingerd: .mynet.com EXCEPT .seas.mynet.com<br />
   in.telnetd: .mynet.com EXCEPT .seas.mynet.com</p>
<p> ALL : 206.182.68.0 : spawn /bin/ &#8216;date&#8217; %c %d >> /var/log/intruder_alert<br />
 vsftpd : ALL : banners /etc/banners/<br />
 in.telnetd : ALL : severity emerg<br />
    * Completamente cerrado:</p>
<p>      #/etc/hosts.allow<br />
    * ALL: ALL: deny Cerrado para todos excepto para las conexiones locales:</p>
<p>      #/etc/hosts.allow<br />
      ALL: 127.0.0.1<br />
    * ALL: ALL: deny Conexión local total, red local acceso por telnet y ftp, resto cerrado:</p>
<p>      #/etc/hosts.allow<br />
      ALL: 127.0.0.1<br />
      in.telnetd in.ftpd: LOCAL<br />
    * ALL: ALL: deny Sistema cerrado con informe de accesos:</p>
<p>      #/etc/hosts.allow<br />
    * ALL: ALL: twist ( /usr/bin/echo -e &#8220;Intruso %a en puerto %d&#8221; ) Sistema abierto a la red local y cerrado al exterior con acciones diferentes en función del tipo de acceso:</p>
<p>      #/etc/hosts.allow<br />
      ALL: LOCAL: spawn ( echo -e &#8220;Acceso autorizado de %a por %d&#8221; ) &#038;<br />
      ALL: PARANOID: twist ( echo -e &#8220;ATACANTE %a por puerto %d, lanzando nukes&#8221; ; /usr/local/bin/nukes.sh %a ) &#038;<br />
      ALL: UNKNOWN: twist ( echo -e &#8220;Posible nuke o scan de %a en %d&#8221; ) &#038;<br />
      ALL: ALL: twist ( /bin/echo -e &#8220;INTRUSO! %a, usando puerto %d&#8221; ) &#038;</p>
<p>Usos avanzados de tcp_wrappers, que mas puedo hacer con esto?</p>
<p>    * Detectando spoofing: los intentos de spoofing son detectados por tcp_warppers y los clasifica dentro de la categoría de PARANOID, por lo que esta linea en hosts.allow puede ayudarnos bastante a detectarlo:</p>
<p>    * ALL: PARANOID: twist ( echo -e &#8220;Spoofing en puerto %d \nLa IP %a es falsa&#8221; ) Mantener informes de red: redirigir toda la información de salida a un archivo o una consola, nos ayudara a tener informes exhaustivos de los accesos que recibimos, los ataques, los accesos &#8230; para hacer esto basta con poner lineas así:</p>
<p>    * ALL: ALL: spawn ( echo -e &#8220;IP %a en %d&#8221; > /var/log/archivo ) Realizar múltiples comandos: a veces es necesario hacer mas de una cosa frente un acceso, la sintaxis es igual que si lo hiciéramos desde bash:</p>
<p>    * ALL: ALL: spawn ( echo -e &#8220;IP %a en %d&#8221; ; wavplay alarma.wav ; nestea %a ) Enviando mensajes al sistema remoto: se puede enviar un mensaje predefinido (banner) al sistema remoto, en este mensaje podemos explicar porque no le damos acceso, que tipo de máquina tnemos, que puede hacer o no &#8230;</p>
<p>      Para que el sistema remoto vea el banner utilizaremos la linea:<br />
      ALL: ALL: banners /directorio_de_banners</p>
<p>      Nota: el banner debe llamarse como el demonio que se lanza, es decir si queremos que se vea un mensaje al entrar por telnet, el banner deberá llamarse in.telnetd</p>
<p>      Ejemplo: este banner (al que llamaremos in.telnetd) se ve al hacer acceso por telnet<br />
      Hola %a, bienvenido a mi sistema. Tu IP esta siendo guardada para mayor seguridad.</p>
<h2><a name="0.3_0"></a>Xinetd</h2>
<p>Aqui veremos un poco de que se trata Xinetd.<br />
Como mencionamos anteriormente Xinetd es una mejora de inetd dado que nos da la posibilidad de exponenciar la seguirdad que da tcp_wrapper junto con las nuevas directivas que xinetd que funciona al igual que inetd como un super servicio que engloba a otros mas manejando todo en un demonio.<br />
Las ventajas que ofrece aumenta cuando se utiliza la biblioteca libwrap.a junto con xinetd, un superdemonio que proporciona control adicional de acceso,registro,redireccion y uso de recursos. Cuando se accede a cualquiera de los servicios a traves de los numeros de puertos correspondientes en /etc/services, el demonio xinetd gestiona la peticion. Antes de abrir el servicio de red solicitado, xinetd garantiza que la informacion del host cliente cumple las reglas de control de acceso, que el numero  de instancias del servicio esta por debajo de un umbral determinado y que cualquier otra regla especificada para ese servicio o para todos los servicios xinetd se cumple. Una vez que se abre el servicio  para el cliente que establece la conexion , xinetd vuelve a dormir, esperando peticiones adicionales sobre los servicios que gestiona.</p>
<h2><a name="0.3_1"></a>3-1 Configuracion Xinetd</h2>
<p>Vamos a instalar xinetd. Seguramente nos va a decir que va a desinstalar inetd.</p>
<p>debian:/var/log# aptitude install xinetd<br />
Reading package lists&#8230; Done<br />
Building dependency tree<br />
Reading state information&#8230; Done<br />
Reading extended state information<br />
Initializing package states&#8230; Done<br />
Reading task descriptions&#8230; Done<br />
The following NEW packages will be installed:<br />
  xinetd<br />
The following packages will be REMOVED:<br />
  openbsd-inetd{a}<br />
0 packages upgraded, 1 newly installed, 1 to remove and 5 not upgraded.<br />
Need to get 136kB of archives. After unpacking 180kB will be used.<br />
Do you want to continue? [Y/n/?] </p>
<p>Le decimos que si y que continue con la instalacion.</p>
<p>Los archivos de configuracion se encuentran :</p>
<pre>
debian:/var/log# ls -l /etc/xinetd.conf
-rw-r--r-- 1 root root 289 2008-03-26 14:39 /etc/xinetd.conf
debian:/var/log# ls -l /etc/xinetd.d/
total 20
-rw-r--r-- 1 root root 798 2008-03-26 14:39 chargen
-rw-r--r-- 1 root root 660 2008-03-26 14:39 daytime
-rw-r--r-- 1 root root 549 2008-03-26 14:39 discard
-rw-r--r-- 1 root root 580 2008-03-26 14:39 echo
-rw-r--r-- 1 root root 727 2008-03-26 14:39 time
debian:/var/log#
</pre>
<p>Como ven estan separados, tiene un archivo general que es xinetd.conf y luego un directorio xinetd.d en donde ahi adentro va a tener un archivo para cada servicio.</p>
<p>Podriamos tener en nuestro archivo gral unas directivas globales que afectaran a todo los demas servicios o tenerlo vacio donde cada servicio tenga sus directivas.</p>
<pre>
debian:/var/log# cat /etc/xinetd.conf
# Simple configuration file for xinetd
#
# Some defaults, and include /etc/xinetd.d/

defaults
{

# Please note that you need a log_type line to be able to use log_on_success
# and log_on_failure. The default is the following :
# log_type = SYSLOG daemon info

}

includedir /etc/xinetd.d
debian:/var/log#
</pre>
<p>Un ejemplo si quisiera habilitar telnet con xinetd:<br />
debian:/etc/xinetd.d# cat /etc/xinetd.d/telnet<br />
service telnet<br />
{<br />
        disable         = no<br />
        flags           = REUSE<br />
        socket_type     = stream<br />
        wait            = no<br />
        user            = root<br />
        server          = /usr/sbin/in.telnetd<br />
         log_type        = SYSLOG daemon info<br />
        log_on_failure  += USERID<br />
        no_access       = 10.0.1.0/24<br />
        log_on_success  += PID HOST EXIT<br />
        access_times    = 00:45-16:15<br />
}<br />
debian:/etc/xinetd.d#<br />
Aca vemos como guarda el log:<br />
syslog:Feb  7 01:42:04 debian xinetd[8889]: START: telnet pid=8895 from=192.168.1.102</p>
<p>Aca otro ejemplo si quisieramos con ftp:<br />
debian:/var/log# cat /etc/xinetd.d/ftp<br />
service ftp<br />
{<br />
        socket_type             = stream<br />
        wait                    = no<br />
        user                    = root<br />
        server                  = /usr/sbin/in.ftpd<br />
        server_args             = -l<br />
        log_on_success          += DURATION USERID<br />
        log_on_failure          += USERID<br />
        nice                    = 10<br />
        disable                 = no<br />
}<br />
debian:/var/log# </p>
<p>Aca vemos como me guardo el log.</p>
<p>syslog:Feb  7 01:23:02 debian ftpd[8776]: connection from 192.168.1.102<br />
syslog:Feb  7 01:23:16 debian ftpd[8776]: FTP LOGIN FROM 192.168.1.102 as debian</p>
<h2><a name="0.3_2"></a>3-2 Tabla valores Xinetd</h2>
<p>Vamos a detallar la tabla de valores mas usados que tenemos para poder configurar nuestros servicios:</p>
<table border="2">
<tbody>
<tr>
<th>Campo</th>
<th>Descripcion</th>
</tr>
<tr>
<td>id</td>
<td>Nombre del servicio</td>
</tr>
<tr>
<td>flags</td>
<td>Los flags mas usados son:<br />
*  NORETRY =  no intente en caso de que falle<br />
* KEEPALIVE = setea este flag en el  socket tcp<br />
* SENSOR = Que no corra este servicio , tan solo que escuche y asi vea quienes se quisieron conectar<br />
* IPV4 = solamente ipv4<br />
* IPV6 = solamente ipv6
</td>
</tr>
<tr>
<td>disable</td>
<td>Valor booleano que determina si el servicio esta apagado o no</td>
</tr>
<tr>
<td>socket_type</td>
<td>stream,dgram,raw,seqpacket</td>
</tr>
<tr>
<td>protocol</td>
<td>Tiene que ser un protocolo valido /etc/protocols</td>
</tr>
<tr>
<td>wait</td>
<td>Se usa para tcp que normalmente esta en no y en udp en si</td>
</tr>
<tr>
<td>user</td>
<td>El servicio corre como el usuario que especifiquemos</td>
</tr>
<td>group</td>
<td>EL grupo con que va a correr el servicio</td>
<tr>
<td>instances</td>
<td>La cantidad de instancias que puede correr del servicio, por defecto es sin limite</td>
</tr>
<tr>
<td>nice</td>
<td>El valor de prioridad con que va a correr</td>
</tr>
<tr>
<td>Server</td>
<td>La ruta completa de donde va a correr el servicio</td>
</tr>
<tr>
<td>Server Args</td>
<td>Con que parametros va a correr ese servicio</td>
</tr>
<tr>
<td>only_from</td>
<td>Restriccion desde que ip,host o red se va a poder acceder</td>
</tr>
<tr>
<td>no_acces</td>
<td>Restriccion desde que ip,host o red no se va a poder acceder</td>
</tr>
<tr>
<td>access_time</td>
<td>Determina en que horas del dia se va a poder usar, formato es HH:MM &#8211; HH:MM</td>
</tr>
<tr>
<td>log_type</td>
<td>Las opciones son SYSLOG o FILE</td>
</tr>
<tr>
<td>log_on_success</td>
<td>Cuales son las variables que utiliza para loguear el evento</td>
</tr>
<tr>
<td>log_on failure</td>
<td> Cuales son las variables que utiliza para loguear el evento</td>
</tr>
<tr>
<td>port</td>
<td>Cual es el puerto que va escuchar xinetd para ese servicio</td>
</tr>
<tr>
<td>bind</td>
<td>Cual es la ip que va a estar escuchando para xinetd. Util para cuando tenemos multiples ip</td>
</tr>
<tr>
<td>per_source</td>
<td>NUmero maximo de conexiones para una ip</td>
</tr>
<tr>
<td>max_load</td>
<td>Una vez que paso un minuto luego de superar la carga maxima no va a aceptar mas conexiones hasta que baje esta carga. </td>
</tr>
<tr>
<td>cps</td>
<td>Una vez que supero el valor ej 25 (conexiones permitidas) el servicio queda retirado 30 segundos ej= cps = 25 30</td>
</tr>
</tbody>
</table>
<p>Tambien tenemos ciertas palabras reservadas a usar:</p>
<p>* ATTEMPT : Registra que se ha hecho un intento de conexion fallido. (log_on_failure)<br />
* DURATION: Registra el periodo de tiempo durante el que un sistema remoto ha utilizado un servicio (log_on_success)<br />
* EXIT: Registra el estado salir o la señal de terminacion del servicio. (log_on_success)<br />
* HOST: Registra la direccion ip del hosto remoto . (log_on_failre y log_on_success)<br />
* PID: Registra el ID de proceso del servidor que recibe la peticion. (log_on_success)<br />
* RECORD: Registra informacion acerca del sistema remoto en caso de que el servicio no pueda ser iniciado. SOlo determinados servicios, como login y finger, pueden utilizar esta opcion (log_on_failure)<br />
USERID: Registra el usuario remoto utilizando un metodo definido en la RFC 1413 para todos los servicios flulidos (stream) multiproceso. (log_on_failure y log_on_success).</p>
<p>Se puede utilizar wrapper con xinetd asi que tambien podriamos usar los archivos hosts.deny y hosts.allow ademas de todas las directivas vistas anteriormente.</p>
<p>Tambien algo util que se puede hacer es utilizar la redireccion de puertos:<br />
debian:/var/log# cat /etc/xinetd.d/telnet<br />
service telnet<br />
{<br />
        disable         = no<br />
        flags           = REUSE<br />
        socket_type     = stream<br />
        wait            = no<br />
        user            = root<br />
        server          = /usr/sbin/in.telnetd<br />
	log_type	= SYSLOG daemon info<br />
        log_on_failure  += USERID<br />
        no_access       = 10.0.1.0/24<br />
        log_on_success  += PID HOST EXIT<br />
        access_times    = 00:45-16:15<br />
	bind 		= 192.168.1.100<br />
	redirect	= 192.168.1.121 21<br />
}<br />
debian:/var/log# </p>
<p>Fijense que ahi mandamos todo lo que venga a 192.168.1.100 desde telnet hacia el puerto 21 de otra ip que tiene nuestro equipo y automaticamente nos va a responder el ftp porque ya esta utilizando ese puerto.</p>
<pre>
rino@oc7287280510 ~]$ telnet 192.168.1.100
Trying 192.168.1.100...
Connected to 192.168.1.100.
Escape character is '^]'.
220 debian.private FTP server (Version 6.4/OpenBSD/Linux-ftpd-0.17) ready.
</pre>
<p>El log lo dice todo:</p>
<p>Feb  7 02:28:56 debian xinetd[9463]: START: telnet pid=9472 from=192.168.1.102<br />
Feb  7 02:28:56 debian ftpd[9473]: connection from 192.168.1.121</p>
<p>Creo que no vale la pena dar mas ejemplos pero mirando la tabla se pueden imaginar todo el uso que le pueden dar.</p>
<h2><a name="0.3_3"></a>3-3 Usando ssh con Xinetd</h2>
<p>FUENTE: http://ubuntuforums.org/printthread.php?t=661061<br />
HOWTO: Run openssh-server sshd from xinetd</p>
<p>Ever wanted to run sshd from xinetd under Ubuntu? Sometimes worked, sometimes not? Here&#8217;s the fix!</p>
<p>First the xinetd config file:<br />
Code:<br />
service ssh<br />
{<br />
        socket_type    = stream<br />
        protocol        = tcp<br />
        wait            = no<br />
        user            = root<br />
#      server          = /usr/sbin/sshd<br />
        server          = /usr/local/sbin/sshd_start<br />
        server_args    = -i<br />
}<br />
Save it as /etc/xinetd.d/ssh</p>
<p>If you directly use sshd you might get the following problem shown in /var/log/auth.log:<br />
Code:<br />
sshd[8771]: fatal: Missing privilege separation directory: /var/run/sshd<br />
So you save the following file as /usr/local/sbin/sshd_start<br />
Code:<br />
#!/bin/sh</p>
<p>if [ ! -d /var/run/sshd ]; then<br />
        mkdir /var/run/sshd<br />
        chmod 0755 /var/run/sshd<br />
    fi</p>
<p>/usr/sbin/sshd $*<br />
and make it executable:</p>
<p>Code:<br />
#sudo chmod u+x /usr/local/sbin/sshd_start<br />
Now simply reload xinetd with</p>
<p>Code:<br />
#sudo /etc/init.d/xinetd restart</p>
<h2><a name="0.4_0"></a>4-0 FUENTES</h2>
<p>http://www.cyberciti.biz/faq/how-do-i-turn-on-telnet-service-on-for-a-linuxfreebsd-system/</p>
<p>http://www.freebsd.org/doc/es/books/handbook/tcpwrappers.html</p>
<p>http://www.cyberciti.biz/faq/tcp-wrappers-hosts-allow-deny-tutorial/#comments</p>
<p>http://book.opensourceproject.org.cn/distrib/ubuntu/hacking/opensource/final/bbl0040.html</p>
<p>http://uw714doc.sco.com/en/NET_tcpip/filterN.tcp_wrappers.html</p>
<p>http://docs.fedoraproject.org/en-US/Fedora/13/html/Security_Guide/sect-Security_Guide-Server_Security.html</p>
<p>http://www.linux-party.com/TutorialLinux/linux_files/linuxzone/web/linuxzone/tcp_wrappers.htm</p>
<p>http://www.cyberciti.biz/tips/top-linux-monitoring-tools.html</p>
<p>http://linuxhelp.blogspot.com/2005/10/using-tcp-wrappers-to-secure-linux.html</p>
<p>http://jamesthornton.com/redhat/linux/7.2/Reference-Guide/s1-tcpwrappers-xinetd.html</p>
<p>http://www.xinetd.org/</p>
<p>http://ubuntuforums.org/printthread.php?t=661061</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.itrestauracion.com.ar%2F%3Fp%3D1277&amp;title=Preparando%20LPIC-1%20110.2%20Configurar%20la%20seguridad%20del%20host" id="wpa2a_14"><img src="http://www.itrestauracion.com.ar/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.itrestauracion.com.ar/?feed=rss2&#038;p=1277</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
	</item>
		<item>
		<title>Preparando LPIC-1 106.2 Configurar un administrador de pantalla</title>
		<link>http://www.itrestauracion.com.ar/?p=1238</link>
		<comments>http://www.itrestauracion.com.ar/?p=1238#comments</comments>
		<pubDate>Mon, 27 Dec 2010 00:30:26 +0000</pubDate>
		<dc:creator>restauracion</dc:creator>
				<category><![CDATA[Administracion]]></category>
		<category><![CDATA[Lpi]]></category>
		<category><![CDATA[Administrador]]></category>

		<guid isPermaLink="false">http://www.itrestauracion.com.ar/?p=1238</guid>
		<description><![CDATA[En este topico vamos a ver ciertos comandos y archivos de configuracion de la grafica. Comenzaremos con ver dos comandos para obtener info de nuestra X: *xdpyinfo *xwininfo Xdpyinfo A veces es útil saber acerca de las capacidades de la &#8230; <a href="http://www.itrestauracion.com.ar/?p=1238">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>En este topico vamos a ver ciertos comandos y archivos de configuracion de la grafica.</p>
<p>Comenzaremos con ver dos comandos para obtener info de nuestra X:</p>
<p>*xdpyinfo<br />
*xwininfo</p>
<p><strong>Xdpyinfo</strong><br />
A veces es útil saber acerca de las capacidades de la pantalla, porque este es manejado por el server X. La herramienta para este trabajo es xdpyinfo. Cuando escribe xdpyinfo, el resultado es lanzado en la salida estandard dandonos información de las unidades organizativas de la pantalla actual, como el número de versión X, la resolución<br />
y profundidad de color de todas las pantallas actuales, y así sucesivamente. Mucha de esta información es muy de carácter técnico, por lo que no se puede entender todo. Eso está bien. Recomiendo ejecutar este programa y examinar la salida para ver qué puede aprender de ella. Si más adelante se desea para obtener información similar en la pantalla de otro ordenador, usted sabrá cómo obtenerlo.<br />
Para obtener información aún más técnica, puede utilizar la opción -ext all con xpdyinfo.<br />
La extensión es el nombre de una extensión X, que es un módulo de software que proporciona capacidades extendidas a X. (El comando xpdyinfo básico, sin opciones, muestra todos las extensiones disponibles.)</p>
<p>Ejemplos:<br />
<a href="/wp-content/uploads/2010/12/xdpyinfo.txt">xdpyinfo  </a><br />
<a href="/wp-content/uploads/2010/12/xdpyinfo-ext.txt">xdpyinfo con ext </a></p>
<p><strong>Xwininfo</strong></p>
<p>Puede obtener información técnica detallada acerca de una ventana específica con la xwininfo . En uso básico, el xwininfo , le pide que mueva el cursor del ratón sobre una ventana, y haga clic.<br />
El resultado es una lista de datos variados sobre la ventana que ha hecho clic, tales como su tamaño, ubicación, y número de identificación. Alternativamente, puede utilizar -id id o -name name para especificar el id de ventana  o por el número de identificación o nombre, o con -root  se puede utilizar para especificar la raíz ventana, es decir,<br />
toda la pantalla.</p>
<p>Ejemplos:<br />
<a href="/wp-content/uploads/2010/12/xwinfo-xterm.txt">Xwininfo  seleccionando una xterm</a><br />
<a href="/wp-content/uploads/2010/12/xwininfo-root.txt">Xwininfo con -root</a></p>
<p><strong>XDMCP</strong></p>
<p>X es una red habilitada para Interfaz gráfica de usuario. Este hecho tiene muchas consecuencias importantes, y uno de ellos se refiere a la interfaz gráfica de usuario de  sistema de acceso para Linux . Este sistema emplea un protocolo de inicio de sesión de red, el X Display Manager Control Protocol (XDMCP). Para controlar el acceso remoto, un servidor XDMCP se ejecuta en un ordenador y escucha  las conexiones desde los servidores de equipos remotos . Para hacer frente a los inicios de sesión local, un XDMCP servidor se ejecuta en un equipo y empieza como un servidor del equipo local X. El servidor XDMCP a continuación gestiona el servidor X local de pantalla, es decir, pone un inicio de sesión clasico donde nos pide usuario y contraseña.</p>
<p><strong>Introduciendonos:</strong></p>
<p>Tres servidores de XDMCP son comunes en Linux: el gestor de pantalla X (XDM), el<br />
KDE Display Manager (KDM), y el de GNOME Display Manager (GDM). Un poco más de<br />
opciones   de  servidores XDMCP también están disponibles, pero estos tres son los más importantes. Como se puede adivinar por su nombre, KDM y GDM están asociados con el KDE y GNOME, respectivamente, pero no limita su elección de entorno de escritorio. La mayoría de las distribuciones de Linux puede funcionar tanto con GDM o KDM como el servidor por defecto XDMCP, pero se puede cambiar la que utiliza el sistema si no te gusta el valor por defecto.</p>
<p><strong>Corriendo un servidor XDMCP:</strong><br />
Muchos metodos existen para poder arrancar un servidor XDMCP. Los dos mas conocidos son lazando este servicio tras el /etc/inittab o tras un demonio en con SysV script.<br />
Independientemente de estos metodos muchas distrubuciones configuran este arranque de XDMCP cuando arranca en determino runlevel (5 o 3, dependiendo de la distribucion).<br />
Como se vio anteriormente en el inittab tenemos algo como esto:<br />
id:5:initdefault:<br />
Pero en algunas distribuciones este se lanza atraves de script (gdm,xdm,kdm).<br />
Tambien podemos configurar un poco esto con ciertos archivos:</p>
<p><strong>Selección de archivo de configuración:</strong>  algunas distribuciones  ocultan la opción de servidor XDMCP en un archivo de configuración, a menudo en el directorio /etc/sysconfig . En Fedora, el archivo /etc/sysconfig/desktop establece la variable DISPLAYMANAGER a XDM, KDM o GDM. En SUSE Linux, /etc/sysconfig/displaymanager establece la variable DISPLAYMANAGER de una manera similar, pero usando los nombres de pantalla en minuscula.</p>
<p><strong>Selección a través de script SysV</strong>: En distribuciones Debian y derivados, como Ubuntu, el displaymanager se establece a través de la elección del script SysV  de inicio con una secuencia de comandos para usar gdm con gdm, kdm  con KDM, y así sucesivamente. De forma predeterminada, sólo un servidor XDMCP  está instalado, así que si quieres cambiar el servidor XDMCP, es posible que necesite instalar<br />
el servidor deseado.</p>
<p><strong>Configurando un Display Manager:</strong><br />
El gestor de ventanas es la herramienta para administrar las sesiones de X en las pantallas tanto físicas como a nivel local como a través de la red. Parte de su trabajo es manejar la autenticación de usuarios a través de una pantalla gráfica de login, que sustituye a la entrada familiar en modo texto.Hay tres gestores de visualización principal implementados con Linux: xdm, kdm y gdm.</p>
<p><strong> Configurando XDM:</strong></p>
<p>El gestor de pantalla X (XDM) es un programa que permite a una sesión gráfica<br />
empezar en un servidor de X.<br />
xdm se distribuye como parte de X. Org y está configurado por una serie de archivos que se encuentran en <strong>/ etc/X11/xdm</strong>. Estos archivos incluyen:</p>
<p><strong>Xaccess</strong><br />
Este archivo controla las solicitudes entrantes de sistemas remotos.<br />
<strong>Xresources</strong><br />
Mantiene la configuración en formación de algunos recursos xdm, incluyendo la pantalla de login gráfica. Este archivo puede ser editado para modificar la apariencia de la pantalla de inicio xdm.<br />
<strong>Xservers</strong><br />
Esto asocia los nombres X para mostrar (: 0, 1, &#8230;) ya sea con el servidor X local  o una pantalla externa, como un terminal de X.<br />
<strong>Xsession</strong><br />
Este archivo contiene unos script xdm que se inicia  después de un inicio de sesión con éxito. Por lo general, busca. Xsession en el directorio home del usuario y ejecuta los comandos que se encuentran allí. Si dicho archivo no existe, Xsession arranca los valores por defectos de nuestro windows manager y sus aplicaciones.<br />
<strong>Xsetup_0</strong><br />
Este archivo es un script iniciado antes de la pantalla gráfica de login. A menudo incluye<br />
comandos para configurar los colores, gráficos de pantalla, o ejecutar otros programas. Este script es ejecutado como root.<br />
<strong>xdm-config</strong><br />
Este asocia el archivo de configuración de  recursos de xdm  con los otros archivos en esta lista. Por lo general, no es necesario hacer cambios en este archivo a menos que un experto en administraciónr planea personalizar la configuración de xdm.</p>
<p>Si quisieramos instalar xdm tendriamos que buscar este paquete:<br />
xorg-x11-xdm.i386 : X.Org X11 xdm &#8211; X Display Manager</p>
<p>Los archivos de xdm:</p>
<pre>
[root@localhost ~]# ls -la /etc/X11/xdm/
total 128
drwxr-xr-x 3 root root  4096 Nov 26 20:55 .
drwxr-xr-x 9 root root  4096 Nov 26 19:05 ..
drwx------ 3 root root  4096 Nov 26 19:08 authdir
-rwxr-xr-x 1 root root   510 Jan 26  2010 GiveConsole
-rwxr-xr-x 1 root root   244 Jan 26  2010 TakeConsole
-rw-r--r-- 1 root root  3608 Nov 26 19:41 Xaccess
-rw-r--r-- 1 root root  1422 Nov 26 19:36 xdm-config
-rwxr-xr-x 1 root root   191 Jan 26  2010 Xreset
-rw-r--r-- 1 root root  2642 Nov 26 20:55 Xresources
-rw-r--r-- 1 root root 12288 Nov 26 20:43 .Xresources.swp
-rw-r--r-- 1 root root   496 Nov 26 19:40 Xservers
-rwxr-xr-x 1 root root  1073 Jan 26  2010 Xsession
-rwxr-xr-x 1 root root  1017 Nov 26 20:39 Xsetup_0
-rwxr-xr-x 1 root root   189 Jan 26  2010 Xstartup
-rwxr-xr-x 1 root root   303 Jan 26  2010 Xwilling
[root@localhost ~]#
</pre>
<p>XDM es el mas simple de todos los XDMCP. Este acepta usuarios y password pero no habilita a los usuarios a hacer otro tipo de accion, como elegir tipo  de ambiente de escritorio queremos correr.(esto se hace atraves de archivos de configuracion de usuarios).<br />
Uno de los archivos de configuracion el /etc/X11/xdm/xdm-config que ya viene por defecto para que funcione de manera local, se puede habilitar para que puede recibir conexiones remotas y para eso tendremos que mirar esta linea:</p>
<p><strong>DisplayManager.requestPort: 0</strong></p>
<p>Esta linea permite que nadie se puede conectar al puerto convencional que escucha xdm.<br />
Para activar este como un XDM que permita conexiones remotas tendriamos que ponerlo en 177, el puerto tradicional de xdmcp y luego restartear xdm.</p>
<p>El archivo <strong> /etc/X11/xdm/Xaccess</strong>   es otro importante punto a tocar.<br />
Si XDM esta configurado para permitir accesos remotos, este otro archivo es el que me va a indicar quien es capaz de acceder a nuestro servidor XDMCP.<br />
El * indica que todos puende acceder.<br />
* CHOOSER BROADCAST<br />
y luego podriamos poner<br />
*.educacionit.com<br />
director.itrestauracion.com.ar<br />
*.redhat.com</p>
<p>Tambien podriamos cambiar muchas mas cosas en /etc/X11/xdm/Xresources , en donde van a cambiar aquellos recursos que estan basados en programas X-based. Por ejemplos podriamos cambiar el texto de logueo tocando algunos de estos ejemplos:<br />
Prestar atencion que los comentarios empiezan con !<br />
! Xresources file<br />
xlogin*borderWidth: 10<br />
xlogin*greeting: Welcome to Linux on CLIENTHOST<br />
xlogin*namePrompt: Login:\040<br />
xlogin*fail: Login incorrect &#8211; try again!<br />
xlogin*failColor: red<br />
xlogin*Foreground: Yellow<br />
xlogin*Background: MidnightBlue</p>
<p>Tambien podriamos configurar nuestro <strong>/etc/X11/xdm/Xservers</strong> para poder incluir lineas de comando que encontramos en /etc/X11/xorg.conf. Por ejemplo si quisieramos cambiar la profundidad de color, lo harias como -bpp (bit por pixel) para nuestra configuracion local.<br />
# Xservers file<br />
:0 local /usr/X11R6/bin/X -bpp 24</p>
<p>Para incluir programas adicionales o seteos en la pantalla de login podriamos ponerlo en /etc/X11/xmd/Xsetup_0. En el siguiente ejempño cambiariamos el color de fondo del X Display a un color color solido y agregariamos un reloj.</p>
<p># Xsetup<br />
/usr/bin/xsetroot -solid &#8220;#356390&#8243;<br />
/usr/bin/xclock -digital -update 1 -geometry -5-5 &#038;</p>
<p>Para lograr que nuesto XDM inicie automaticamente en un sistema redhat.<br />
Tendriamos que tocar el archivo:<br />
/etc/inittab y cambiar lo siguiente:<br />
id:3:initdefault:<br />
a<br />
id:5:initdefault:</p>
<p>Y podriamos chequear esta otra linea.<br />
x:5:respawn:/etc/X11/prefdm -nodaemon<br />
como ven no hace referencia a prefdm pero si analizamos ese script.<br />
<code></p>
<pre>
[root@localhost ~]# cat /etc/X11/prefdm
#!/bin/sh

PATH=/sbin:/usr/sbin:/bin:/usr/bin

# shut down any graphical boot that might exist
if [ -x /usr/bin/rhgb-client ]; then
    /usr/bin/rhgb-client --quit
fi

# We need to source this so that the login screens get translated
[ -f /etc/sysconfig/i18n ] &#038;&#038; . /etc/sysconfig/i18n

# Run preferred X display manager
preferred=
if [ -f /etc/sysconfig/desktop ]; then
	. /etc/sysconfig/desktop
	if [ "$DISPLAYMANAGER" = GNOME ]; then
		preferred=/usr/sbin/gdm
	elif [ "$DISPLAYMANAGER" = KDE ]; then
		preferred=/usr/bin/kdm
	elif [ "$DISPLAYMANAGER" = XDM ]; then
	        preferred=/usr/bin/xdm
        elif [ -n "$DISPLAYMANAGER" ]; then
		preferred=$DISPLAYMANAGER
	fi
fi

shopt -s execfail

[ -n "$preferred" ] &#038;&#038; exec $preferred "$@" >/dev/null 2>&#038;1 </dev/null

# Fallbacks, in order
exec gdm "$@" >/dev/null 2>&#038;1 </dev/null
exec kdm "$@" >/dev/null 2>&#038;1 </dev/null
exec xdm "$@" >/dev/null 2>&#038;1 </dev/null

# catch all exit error
exit 1
[root@localhost ~]#
</pre>
<p></code></p>
<p>Como ven en el script primero busca en el archivo que se define en /etc/sysconfig/desktop y si ahi no le encuentra prueba arrancar los clasicos gdm,kdm y por ultimo xdm.</p>
<p>Iniciando Sesion:</p>
<p>Para eso tendremos que crear este archivo en nuestro home directory.</p>
<pre>
[root@localhost ~]# cat .xsession
exec xterm &#038;
exec xclock &#038;
exec xeyes &#038;
startkde
[root@localhost ~]#
</pre>
<p>Con este archivo lo que hacemos es una vez que inicie xdm y nos de login vamos a ingresar nuestro usuario y clave para que luego lea este archivo y arranque nuestra sesion</p>
<p>Con esto ya vimos un resumen de XDM pero ahora la mala noticia es que ya no se usa mas por default xdm por diversos temas de seguridad y porque kdm y gdm son mas chulos jeje.</p>
<p>Configurando GDM:<br />
Para instalarlo en una version red hat:<br />
yum groupinstall "GNOME Desktop Environment"</p>
<p>Archivos de configuracion:<br />
[root@localhost gdm]# ls -l<br />
total 80<br />
-rw-r--r-- 1 root root 2633 Dec 26 23:47 custom.conf<br />
drwxr-xr-x 2 root root 4096 Nov 25 23:58 Init<br />
-rw-r--r-- 1 root root 4048 Sep  5  2009 locale.alias<br />
drwxr-xr-x 2 root root 4096 Nov 25 23:58 modules<br />
drwxr-xr-x 2 root root 4096 Nov 25 23:58 PostLogin<br />
drwxr-xr-x 2 root root 4096 Nov 25 23:58 PostSession<br />
drwxr-xr-x 2 root root 4096 Nov 25 23:58 PreSession<br />
-rw-r--r-- 1 root root   71 Sep  5  2009 securitytokens.conf<br />
-rwxr-xr-x 1 root root 5536 Sep  5  2009 XKeepsCrashing<br />
lrwxrwxrwx 1 root root   21 Nov 25 23:58 Xsession -> ../X11/xinit/Xsession<br />
[root@localhost gdm]# </p>
<p>El mas conocido y que podemos tocar mas cosas es el gdm.conf</p>
<p>Un ejemplo de su contenido con configuracion extra:</p>
<pre>
#
#
#
#
#
#
#
#
For full reference documentation see the GNOME help browser under
GNOME|System category. You can also find the docs in HTML form on

http://www.gnome.org/projects/gdm/

NOTE: Some values are commented out, but show their default values.
that begin with "#" are considered comments.
Lines
Have fun!
[daemon]
# Automatic login, if true the first local screen will automatically logged
# in as user as set with AutomaticLogin key.
AutomaticLoginEnable=false
AutomaticLogin=
# Timed login, useful for kiosks.
# amount of time.
TimedLoginEnable=false
TimedLogin=
TimedLoginDelay=30
Log in a certain user after a certain
# The GDM configuration program that is run from the login screen, you
# should probably leave this alone.
#Configurator=/usr/sbin/gdmsetup --disable-sound --disable-crash-dialog
# The chooser program. Must output the chosen host on stdout, probably you
# should leave this alone.
#Chooser=/usr/lib/gdm/gdmchooser
Change gdmlogin to gdmgreeter
# The greeter for xdmcp logins, usually you want a less graphically
# intensive greeter here so it's better to leave this with gdmlogin
#RemoteGreeter=/usr/lib/gdm/gdmlogin
</pre>
<p>En las versiones Ubuntu tenemos toda esta info en /etc/gdm/gdm.schemas</p>
<p>Para poder activar conexiones xdmp tan solo agregar en el modulo<br />
 [xdmcp]<br />
Enable=1</p>
<p>Luego en el cliente cambiar /etc/hosts<br />
comentar<br />
#127.0.0.1<br />
y agregar<br />
ipremota localhost</p>
<p>Si se pueden conectar sin retocar esas lineas mejor, sino comentenlas y prueben.</p>
<p><strong>Instalando KDM</strong></p>
<p> yum install kdm</p>
<pre>
[root@localhost gdm]# ls -l /etc/kde
total 16
drwxr-xr-x 2 root root 4096 Nov 26 19:57 env
drwxr-xr-x 3 root root 4096 Nov 26 19:56 xdg
[root@localhost gdm]#
</pre>
<p><strong>Cambiando entre desktops</strong><br />
En sistemas red hat:<br />
[root@localhost menus]# yum install switchdesk-gui.noarch switchdesk.noarch </p>
<pre>
[root@localhost ~]# cat /etc/sysconfig/desktop
DESKTOP= "GNOME"
DISPLAYMANAGER= "gdm"
[root@localhost ~]#
</pre>
<p><strong>Bueno ahora supongamos que queremos ejecutar remotamente sesiones o aplicaciones de nuestro servidor en otra maquina.</strong></p>
<p>Para hacer poder aprovechar los recursos de nuestra maquina servidor y usar las demas como cliente de ella vamos a hacer lo siguiente:</p>
<p>En una maquina cliente ejecutamos:<br />
1)<br />
<strong>xinit</strong>, si ya estamos en una grafica tan solo abrimos una terminal</p>
<p><a href="/wp-content/uploads/2010/12/xinit.png"><img src="/wp-content/uploads/2010/12/xinit-150x150.png" alt="" title="xinit" width="150" height="150" class="aligncenter size-thumbnail wp-image-1269" /></a></p>
<p>2)Luego  hacemos xhost +ipremota</p>
<p><a href="/wp-content/uploads/2010/12/xhost.png"><img src="/wp-content/uploads/2010/12/xhost-150x150.png" alt="" title="xhost" width="150" height="150" class="aligncenter size-thumbnail wp-image-1268" /></a></p>
<p>3)Luego nos logueamos al equipo remoto con ssh.</p>
<p><a href="/wp-content/uploads/2010/12/ssh.png"><img src="/wp-content/uploads/2010/12/ssh-150x150.png" alt="" title="ssh" width="150" height="150" class="aligncenter size-thumbnail wp-image-1267" /></a></p>
<p>4) Luego exportamos la variable DISPLAY, export DISPLAY=iplocal:0.0</p>
<p><a href="/wp-content/uploads/2010/12/export.png"><img src="/wp-content/uploads/2010/12/export-150x150.png" alt="" title="export" width="150" height="150" class="aligncenter size-thumbnail wp-image-1266" /></a></p>
<p>5)Ahora podemos ejecutar una aplicacion.<br />
Como ven estamos en la maquina remota ejecutando la aplicacion pero desde nuestra estacion fisica de trabajo.</p>
<p><a href="/wp-content/uploads/2010/12/gnometerminal.png"><img src="/wp-content/uploads/2010/12/gnometerminal-150x150.png" alt="" title="gnometerminal" width="150" height="150" class="aligncenter size-thumbnail wp-image-1265" /></a></p>
<p>6)Ahora podriamos probar levantar toda una grafica.</p>
<p><a href="/wp-content/uploads/2010/12/grafica.png"><img src="/wp-content/uploads/2010/12/grafica-150x150.png" alt="" title="grafica" width="150" height="150" class="aligncenter size-thumbnail wp-image-1264" /></a></p>
<p>7) Por ultimo podemos hacer con ssh un forwardeo...</p>
<p><a href="/wp-content/uploads/2010/12/sshx.png"><img src="/wp-content/uploads/2010/12/sshx-150x150.png" alt="" title="sshx" width="150" height="150" class="aligncenter size-thumbnail wp-image-1263" /></a></p>
<p> <img src='http://www.itrestauracion.com.ar/wp-includes/images/smilies/icon_cool.gif' alt='8)' class='wp-smiley' /> La yapa algo mas descabellado e inutil, levantar la grafica remota dentro de mi grafica..</p>
<p><a href="/wp-content/uploads/2010/12/graficacompartida.png"><img src="/wp-content/uploads/2010/12/graficacompartida-150x150.png" alt="" title="graficacompartida" width="150" height="150" class="aligncenter size-thumbnail wp-image-1270" /></a></p>
<p>Bueno esto es todo...</p>
<p>Fuentes:<br />
[1]http://tldp.org/HOWTO/XDMCP-HOWTO/procedure.html<br />
[2]http://codeghar.wordpress.com/2009/06/11/remote-login-with-gdm-and-vnc-on-fedora-11/<br />
[3]http://www.linuxparatodos.net/portal/staticpages/index.php?page=11-como-x-remoto<br />
[4]http://www.estrellateyarde.org/so/x-remoto-display-manager<br />
[5]http://es.w3support.net/index.php?db=so&#038;id=754707<br />
[6]http://tldp.org/HOWTO/XDM-Xterm/config.html<br />
[7]http://sicutdeux.wordpress.com/2009/08/12/acceso-remoto-bajo-gnulinux-xdmcp/<br />
[8]http://www.mail-archive.com/debian-user-spanish@lists.debian.org/msg33394.html<br />
[9]http://www.itrestauracion.com.ar/?p=1149<br />
[10]http://tldp.org/HOWTO/XWindow-User-HOWTO/index.html<br />
[11]http://www.faqs.org/docs/Linux-HOWTO/XDMCP-HOWTO.html<br />
[12]http://linux.derkeiler.com/Mailing-Lists/RedHat/2005-11/0384.html<br />
[13]http://www.faqs.org/docs/lnag/lnag_xwindows.html#GUI_login</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.itrestauracion.com.ar%2F%3Fp%3D1238&amp;title=Preparando%20LPIC-1%20106.2%20Configurar%20un%20administrador%20de%20pantalla" id="wpa2a_16"><img src="http://www.itrestauracion.com.ar/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.itrestauracion.com.ar/?feed=rss2&#038;p=1238</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
	</item>
		<item>
		<title>Preparando LPIC-1 106.1 Instalar y configurar X11</title>
		<link>http://www.itrestauracion.com.ar/?p=1224</link>
		<comments>http://www.itrestauracion.com.ar/?p=1224#comments</comments>
		<pubDate>Sun, 19 Dec 2010 20:33:51 +0000</pubDate>
		<dc:creator>restauracion</dc:creator>
				<category><![CDATA[Administracion]]></category>
		<category><![CDATA[Lpi]]></category>
		<category><![CDATA[Administrador]]></category>

		<guid isPermaLink="false">http://www.itrestauracion.com.ar/?p=1224</guid>
		<description><![CDATA[Vamos a ver brevemente un poco de estos temas: Antes empezaremos con una breve explicacion de que es una X: Historia:[4-5] X Window System (en español sistema de ventanas X) es un software que fue desarrollado a mediados de los &#8230; <a href="http://www.itrestauracion.com.ar/?p=1224">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Vamos  a ver brevemente un poco de estos temas:</p>
<p>Antes empezaremos con una breve explicacion de que es una X:<br />
<strong><br />
Historia:</strong>[4-5]<br />
X Window System (en español sistema de ventanas X) es un software que fue desarrollado a mediados de los años 1980 en el MIT para dotar de una interfaz gráfica a los sistemas Unix. Este protocolo permite la interacción gráfica en red entre un usuario y una o más computadoras haciendo transparente la red para éste. Generalmente se refiere a la versión 11 de este protocolo, X11, el que está en uso actualmente. X es el encargado de mostrar la información gráfica de forma totalmente independiente del sistema operativo.</p>
<p>* X es un modelo de cliente/servidor.<br />
* X fue diseñado primariamente para implementar clientes ligeros, donde mucha gente usaba simultáneamente la capacidad de procesamiento de un mismo computador trabajando en tiempo compartido. Cada persona usaba un terminal en red que tenía capacidades limitadas para dibujar la pantalla y aceptar la entrada del usuario. Debido a la ubicuidad del soporte para el software X en Unix, es usado en los computadores personales incluso cuando no hay necesidad del tiempo compartido.<br />
* Mientras que los servidores de X manejan hardware estos no definen la forma en que se va a ver la pantalla y no ofrecen herramientas para manipular los clientes.<br />
* El servidor X es el responsable de realizar el rendering the las formas y colares en la pantalla.</p>
<p><strong>Ejemplos de lo que incluye:</strong></p>
<p>Programas de X.org que controlan nuestra placa de video,<br />
Programas de X.org que funcionan en redes diferentes mostrandonos la salida de los programas en nuestro equipo.<br />
Otros sistemas de red Unix corren sus propios X server software (cuando corremos nuestra maquina local)<br />
Clientes X son programas de usuarios como : firefox,opera,Evolution,OpenOffice,xterm</p>
<p><strong>Cliente/Servidor</strong><br />
El sistema de ventanas X distribuye el procesamiento de aplicaciones especificando enlaces cliente-servidor. El servidor provee servicios para acceder a la pantalla, teclado y ratón, mientras que los clientes son las aplicaciones que utilizan estos recursos para interacción con el usuario. De este modo mientras el servidor se ejecuta de manera local, las aplicaciones pueden ejecutarse remotamente desde otras máquinas, proporcionando así el concepto de transparencia de red.<br />
Debido a este esquema cliente-servidor, se puede decir que X se comporta como un terminal gráfico virtual.<br />
El hecho que exista un estándar definido para X permite que se desarrollen servidores X para distintos sistemas operativos y plataformas, lo que hace que el código sea muy portable. Por ejemplo. permite tener clientes X ejecutándose en un potente servidor UNIX mientras los resultados son visualizados en una PC de escritorio con cualquier otro sistema operativo funcionando.<br />
La comunicación entre el cliente X y el servidor se realiza por medio de un protocolo conocido como Xprotocol, que consiste en una serie de bytes interpretados como comandos básicos para generar ventanas, posicionarlas, o controlar eventos. Los clientes X acceden al Xprotocol mediante el uso de una biblioteca llamada Xlib, que evita al programador de clientes X tener que lidiar con el código binario del Xprotocol. Sin embargo, los aspectos de decoración de ventana y manejos de ventanas no están definidos en esta biblioteca.</p>
<p>Un programa de cliente especial llamado window manager es el responsable de las funciones mencionadas anteriormente que nos provee ademas de ventanas, cambio de tamaño, botones de cerrar y maximizar y muchas mas.<br />
Este controla los demas clientes que corren bajo un Servidor X. Multiples window manager podemos encontrar para nuestro X Window System pudiendo asi poder elegir un estilo de interface que mas necesitemos para cada uso.<br />
X no es un gestor de ventanas, necesita de uno para controlar el manejo de ventanas. Esto trae la ventaja de que permite al usuario instalar uno o más administradores de ventanas de su preferencia. También trae la ventaja de que hace de X estrictamente un sistema gráfico, de tal modo que un cliente X podría estar enviando un gráfico a una pantalla, a una impresora o a cualquier otro hardware sin darse cuenta, flexibilizando la salida gráfica.</p>
<p>Por otro lado, la desventaja que trae el hecho de no tener un único entorno gráfico es que los programadores de clientes X que desean hacer uso de los recursos de los entornos gráficos (botones, barras de deslizamientos, etc) deben elegir un entorno gráfico específico para programar y contar que el usuario tenga por los menos las bibliotecas de dicho entorno gráfico instalado. Las bibliotecas de los entornos gráficos se conocen como &#8220;Toolkits&#8221;, el estándar X provee sólo de un conjunto de herramientas básicas llamadas Xintrisics que permiten a los programadores de los entornos gráficos armar sus Toolkits sobre éstas.</p>
<p>Un completo set de escritorio graficos se encuentran disponible y contiene entre sus paquetes un window manager y una gran cantidad de aplicaciones que trabajan en conjunto para poder crear un ambiente de trabajo completo. Un ejemplo son los mas conocidos KDE y GNOME, por supuesto que hay muchos mas y mucha variedad pero estos son los mas conocidos.</p>
<p><strong>Interfaces de Usuario:</strong><br />
X es primariamente una definición de primitivas de protocolo y gráficas, y deliberadamente no contiene especificaciones de diseño de interfaz de usuario, como estilos de botón, menú, barra de título para las ventanas. En vez de eso, un software de aplicación (tal como los manejadores de ventana, Widget toolkits de GUI y ambientes de escritorio, o las interfaces gráficas de usuario específicas de una aplicación) definen y proporcionan tales detalles. Como resultado, no hay interfaz X típica y varios ambientes de escritorio han sido populares entre los usuarios.<br />
Un manejador de ventana controla la colocación y la apariencia de las ventanas de aplicación. Esto puede resultar en interfaces semejantes a las de Microsoft Windows o Macintosh (los ejemplos incluyen Metacity en GNOME, KWin en KDE, Xfwm en Xfce, o Compiz) o tener controles radicalmente diferentes (tales como tiling window manager, como wmii o Ratpoison). Los manejadores de ventana abarcan en sofisticación y complejidad desde los más simples (ej., twm, el manejador de ventana básico suministrado con X, o evilwm, un manejador de ventana extremadamente liviano) hasta los ambientes de escritorio más completos tales como Enlightenment.<br />
Muchos usuarios usan X con un ambiente de escritorio, que, independientemente del manejador de ventana, incluyen varias aplicaciones usando una interfaz de usuario consistente. GNOME, KDE y Xfce son los ambientes de escritorio más populares. El ambiente estándar de Unix es Common Desktop Environment (CDE). La iniciativa freedesktop.org se dirige a la interoperabilidad entre el escritorio y los componentes necesarios para un escritorio X competitivo.</p>
<p>Puesto que el X es responsable de la interacción entre el teclado y el ratón con el escritorio gráfico, ciertos atajos de teclado han llegado a estar asociados con X. Control-Alt-Backspace típicamente termina la sesión actualmente corriendo en X, mientras que el Control-Alt conjuntamente con una tecla de función cambia a la consola virtual asociada. Sin embargo, esto es un detalle dejado al diseño de una implementación de servidor X y no es universal; por ejemplo, las implementaciones de servidor X para Windows y Macintosh típicamente no proporcionan estos atajos de teclado.</p>
<p><strong>Terminales X</strong><br />
Un terminal X es un cliente ligero que solamente corre un servidor X. Esta arquitectura llegó a ser popular para construir paquetes de terminales baratos para que muchos usuarios usaran simultáneamente el mismo gran servidor de computadora para ejecutar programas de aplicación como clientes de cada terminal X. Este uso está muy cerca con la intención original del proyecto MIT.</p>
<p>Los terminales X exploran la red (el dominio de difusión local) usando el protocolo de control del X Display Manager para generar una lista de anfitriones disponibles que son permitidos como clientes. Uno de los anfitriones de clientes debe correr un X display manager.</p>
<p>El hardware dedicado para terminales X ha llegado a ser menos común; un PC o un moderno cliente ligero con un servidor X proporciona típicamente la misma funcionalidad a igual o más bajo costo.</p>
<p><strong>X Display Manager</strong>[5]<br />
En el X Window System, un X Display Manager (XDM), gestor de pantalla X, o gestor de pantalla X, es una parte opcional del sistema X Window que permite comenzar una sesión sobre un servidor X desde la misma u otra computadora. Un gestor de pantalla presenta al usuario con una pantalla de autenticación (login) que solicita el nombre de usuario y su contraseña. Una sesión comienza cuando el usuario entra con éxito una combinación válida de nombre de usuario y contraseña.</p>
<p>Cuando el gestor de pantalla corre en la computadora del usuario, inicia el servidor X antes de presentar al usuario la pantalla de login (autentificación), opcionalmente repitiendo esto cuando el usuario cierra la sesión (logs out). En esta condición, el gestor de pantalla realiza en el X Window System la funcionalidad del init, getty y autentifica al usuario en el terminal en modo de caracteres. Cuando el gestor de pantalla corre en una computadora remota, actúa como un servidor de telnet, solicitando el nombre de usuario y la contraseña y comenzando una sesión remota.</p>
<p>Piense en XDM como proveedor de la misma funcionalidad que la utilidad getty(8). Esto quiere decir que se encarga de los ingresos del sistema en la pantalla a la que está conectado y arranca el gestor de sesiones para el usuario (normalmente un gestor de ventanas X). XDM entonces espera a que este programa termine, señalando que el usuario ha terminado y que se debería desconectar de la pantalla. En este punto XDM puede mostrar las pantallas de entrada al sistema y de selección de pantalla para que el siguiente usuario intente acceder al sistema.</p>
<p>Esto es útil para diferentes situaciones tales como &#8220;Terminales X&#8221; con escritorios mínimos y grandes servidores de red (LTSP, cliente liviano). Como X Window System es independiente del protocolo y de la red hay muchas posibles configuraciones para ejecutar clientes y servidores X en diferentes equipos conectados a una red. XDM da una interfaz gráfica para elegir a qué pantalla se quiere conectar y solicitar la información de autenticación, como el nombre de usuario y le contraseña.</p>
<p>También es útil para múltiples usuarios trabajando con un mismo computador (configuración multiseat), en donde cada usuario tiene su propio pantalla, teclado y ratón, y comparten los recursos del computador, como el CPU, la tarjeta madre, la memoria RAM, el disco duro, etc., abaratando significativamente los costos.</p>
<p><strong>Seleccionando e instalando un  X-Server:</strong><br />
X.Org es el standard X Window System de la mayoria de las distribuciones de Linux.<br />
X.Org es mantenida por X.Org Fundation que es una comunidad sin fines de lucro donde se colabora con el desarrollo y documentacion<br />
El codigo de X11 de X.Org esta basado en XFree86 que fue usado como X Windows en muchas distribuciones de Linux. Freedesktop.org es un proyecto colaborativo donde se desarrolla software para los sistemas X Windows.<br />
El proyecto  X.Org tiene soporte para una gran cantidad de hardware. Esto se debe a la cooperacion de muchos fabricantes que liberan el codigo de sus drivers y  sus documentaciones.A traves del tiempo se vio que muchos fabricantes fueron interesandose en dejar cierta informacion a la comunidad X.Org para que puedan darle soporte a su hardware y es por eso que X.Org ya posee una inmesa compativilidad con el hardware de hoy en dia.</p>
<p><strong>Configurando el entorno X Window System</strong><br />
Lo primero que tenemos que hacer es recopilar la información necesaria, para la correcta configuración del servidor gráfico Xorg</p>
<p>La información mínima necesaria es la siguiente:</p>
<p>* Especificaciones del monitor<br />
* Chip y cantidad de memoria de la tarjeta gráfica (vídeo)<br />
* Especificaciones del ratón<br />
* Especificaciones del teclado<br />
<strong><br />
Ver la version de nuestro X:</strong></p>
<p>Red Hat:</p>
<pre>[rino@oc4037774485 ~]$ X -version

X.Org X Server 1.9.1
Release Date: 2010-10-22
X Protocol Version 11, Revision 0
Build Operating System: x86-02 2.6.32-72.el6.bz634452.x86_64
Current Operating System: Linux oc4037774485.ibm.com 2.6.35.9-64.fc14.x86_64 #1 SMP Fri Dec 3 12:19:41 UTC 2010 x86_64
Kernel command line: ro root=UUID=1f15bf0f-79bd-4dae-a644-f4ad768504ef rd_NO_LUKS rd_NO_LVM rd_NO_MD rd_NO_DM LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 KEYTABLE=la-latin1 rhgb quiet selinux=0
Build Date: 09 November 2010  08:15:25PM
Build ID: xorg-x11-server 1.9.1-3.fc14
Current version of pixman: 0.18.4
	Before reporting problems, check http://wiki.x.org
	to make sure that you have the latest version.
[rino@oc4037774485 ~]$
</pre>
<p><strong><br />
Chipset de Video:</strong><br />
Los driver de video X.Org son escrito para los chipset graficos no para las placas de video en donde estan installadas. Muchas placas de video de varios fabricantes tienen el mismo chipset de video  haciendo a estas que tengan la misma funcionalidad.<br />
Por eso hay que mirar si el chipset que tenemos es soportado por X.org para poder usar las opciones de graficos mas avanzadas. Ver la lista de chipset soportados en la wiki de X.Org<br />
El chip de la tarjeta gráfica también llamada tarjeta de vídeo, define que controlador utilizaremos para que funcione correctamente.<br />
La memoria de la tarjeta gráfica determina la resolución máxima y la profundidad de color máxima con la que el sistema puede trabajar.</p>
<p><strong>Especificaciones del monitor</strong><br />
Usaremos las especificaciones del monitor para determinar la resolución y frecuencia de refresco a la que funcionara. Dichas especificaciones vienen en la documentación del monitor, o bien la obtenemos desde la web del fabricante.</p>
<p>Necesitamos tres rangos muy importantes:</p>
<p>* Frecuencia de refresco horizontal<br />
* Frecuencia de refresco vertical<br />
* Resolución máxima.</p>
<p>Con esta información sabemos como hemos de configurar nuestro monitor para no dañarlo o quemarlo.</p>
<p><strong>Especificaciones del mouse</strong></p>
<p>Las especificaciones del ratón son muy fáciles, basta con observar dicho ratón para saber:</p>
<p>* El tipo de conector: USB, PS2, Serial, etc&#8230;<br />
* El numero de botones: 1, 2, 3, 4, etc&#8230;<br />
* Si tiene rueda y cuantas tiene: 1, 2</p>
<p><strong>Especificaciones del teclado</strong></p>
<p>Las especificaciones del teclado al igual que las del ratón, con observar dicho teclado conocemos la información:</p>
<p>* El tipo de conector: USB o PS2<br />
* Que mapa de caracteres que usa: QWERTY, AZERTY, etc..<br />
* El numero de teclas: 101, 102, 104, 105 o microsoft</p>
<p><strong>Instalando X.Org</strong><br />
Es raro que tengamos que instalar X.Org nosotros a mano porque este ya fue instalado generalmente cuando instalamos nuestro sistema si tenemos planeado usar la grafica (X).<br />
Casi todas las distribuciones de linux contienen los paquetes de X.ORg en sus instaladores.</p>
<p>La forma de instalar el sistema de ventanas x window en su equipo sera de la siguiente manera:</p>
<p>Para sistemas operativos de la familia Red Hat teclee lo siguiente:</p>
<p><strong>[BASH] # yum install xorg-x11</strong></p>
<p>Para sistemas operativos de la familia Debian teclee lo siguiente:</p>
<p><strong>[BASH] # apt-get install x-window-system<br />
</strong></p>
<p><strong>Configurando un Servidor X y su archivo de configuracion xorg.conf</strong><br />
El archivo de configuracion de X.Org difiere a lo largo de las distintas distribuciones de linux y de las versiones de X.Org. Este archivo es creado durante la instalacion y segun los dispositivos que fueron detectados ira armando la configuracion.<br />
Generalmente no hace falta cambiar nada de este archivo porque es manejado por el sistema. El servidor X usa este archivo de configuracion cuando se inicia para setear  la configuracion del teclado, mouse, fuentes (fonts) y resolucion del monitor.</p>
<h3 id="section-Certificaci_C3_B3n+LPI+102-FicheroXorg.conf"><strong>Fichero xorg.conf</strong></h3>
<p>La configuración del servidor gráfico xorg se encuentra en el fichero xorg.conf, en la siguiente ruta:</p>
<pre>/etc/X11</pre>
<p>Y se  encuentra dividido en las siguientes secciones:</p>
<table border="1">
<tbody>
<tr>
<td>Section &#8220;Files&#8221;</td>
<td>Ruta o path de los archivos</td>
</tr>
<tr>
<td>Section &#8220;Modules&#8221;</td>
<td>Carga módulos dinámicos</td>
</tr>
<tr>
<td>Section &#8220;InputDevice&#8221;</td>
<td>Descripción de los dispositivos periféricos</td>
</tr>
<tr>
<td>Section &#8220;Device&#8221;</td>
<td>Descripción de los dispositivos gráficos</td>
</tr>
<tr>
<td>Section &#8220;Monitor&#8221;</td>
<td>Descripción del monitor</td>
</tr>
<tr>
<td>Section &#8220;Screen&#8221;</td>
<td>Configuración de la pantalla</td>
</tr>
<tr>
<td>Section &#8220;ServerLayout&#8221;</td>
<td>Esquema global</td>
</tr>
</tbody>
</table>
<p>Cada sección comienza con la instrucción Section seguido del  nombre de la &#8220;sección entre comillas&#8221; las opciones, driver, etc.. y  terminada con EndSection.</p>
<h4 id="section-Certificaci_C3_B3n+LPI+102-SeccionFiles">Seccion “Files”</h4>
<p>Esta sección define la ruta de archivos necesarios para levantar el servidor X.</p>
<ul>
<li>Define la ruta de los tipos de letras en las entradas &#8221; FontPath&#8221;</li>
<li>Especifica la ubicación de la base de dartos de colores RGB &#8220;RgbPath&#8221;</li>
</ul>
<p>Ejemplo:</p>
<pre>Section “Files”
         RgbPath     “/usr/lib/X11/rgb”
EndSection</pre>
<h4 id="section-Certificaci_C3_B3n+LPI+102-SeccionModules">Seccion “Modules”</h4>
<p>La sección Module especifica que módulos cargará el servidor gráfico  X, dichos módulos añaden funcionalidad adicional al servidor X.</p>
<pre>Section “Module”
         Load     “dbe”
         Load     “extmod”
         Load     “type1”
         Load     “freetype”
         Load     “glx”
EndSection</pre>
<h4 id="section-Certificaci_C3_B3n+LPI+102-SeccionInputDevice">Seccion “InputDevice”</h4>
<p>Cada sección InputDevice configura un dispositivo de entrada para el  servidor X. Los sistemas Xorg tienen mínimo dos secciones InputDevice:</p>
<ul>
<li>Un Mouse</li>
<li>Un Teclado</li>
</ul>
<p><strong>Configuracion tipica de un mouse</strong></p>
<p>Ejemplo:</p>
<pre>Section “InputDevice”
         Identifier   “Mouse0”
         Driver       “mouse”
         Option       “Protocol” “Auto”
         Option       “Device”   “/dev/psaux”
         Option       “Emulate3Buttons” “no”
         Option       “ZaxisMapping” “4 5”
EndSection</pre>
<p><strong>Identifier:</strong> Especifica un nombre para esta sección</p>
<p><strong>Driver:</strong> Especifica el controlador que debe cargar para el correcto funcionamiento del ratón. &#8220;mouse&#8221;: soporta cuatro tipos de mouse:</p>
<ul>
<li>Serial</li>
<li>Bus</li>
<li>PS/2</li>
<li>USB</li>
</ul>
<p><strong>Option:</strong> Especifica las opciones necesarias pertinentes al dispositivo</p>
<p>Para un mouse, las opciones son las siguientes:</p>
<p><strong>Protocol:</strong> Indica el protocolo define el tipo de mouse que tenemos</p>
<ul>
<li>&#8220;ImPS/2&#8243;</li>
<li>&#8220;ExplorerPS/2&#8243;</li>
<li>&#8220;MouseMan&#8221;</li>
<li>&#8220;Microsoft&#8221;</li>
<li>&#8220;Mousesystems&#8221;</li>
<li>&#8220;IntelliMouse&#8221;</li>
<li>&#8220;ThinkingMouse&#8221;</li>
<li>&#8220;ThinkingMousePS/2&#8243;</li>
<li>&#8220;NetScrollPS/2&#8243;</li>
<li>&#8220;NetMousePS/2&#8243;</li>
<li>&#8220;GlidePoint&#8221;</li>
<li>&#8220;GlidePointPS/2&#8243;</li>
<li>&#8220;MouseManPlusPS/2&#8243;</li>
</ul>
<p>NOTA:</p>
<ul>
<li>Los mouse seriales antiguos de dos o tres botones estan normalmente soportados por el protocolo 	&#8220;Microsoft&#8221; o &#8220;MouseMan&#8221;</li>
<li>Los mouse seriales con rueda los soporta el protocolo &#8220;IntelliMouse&#8221;</li>
<li>Los mouse PS/2 los soporta el protocolo &#8220;ImPS/2&#8243;</li>
<li>El protocolo &#8220;auto&#8221; se usa siempre que este es capaz de detectar el mouse.</li>
</ul>
<p><strong>CorePointer:</strong> Indica que el ratón definido es el mouse principal</p>
<p><strong>Device:</strong> Indica la ubicación del dispositivo físico (donde se encuentra conectado), las opciones son las siguientes:</p>
<ul>
<li>/dev/input/mice (conectado al puerto USB)</li>
<li>/dev/psaux (conectado al puerto PS/2)</li>
<li>/dev/ttyS0 (conectado al puerto Serial 0)</li>
<li>/dev/ttyS1 (conectado al puerto Serial 1)</li>
</ul>
<p><strong>Emulate3Buttoms:</strong> Especifica si un mouse de dos botones se comporte como uno de tres botones, cuando se presionen ambos botones simultáneamente.</p>
<p><strong>ZAxisMapping:</strong> Especifica que funcione la rueda que incorpora el mouse.</p>
<p><strong>Configuracion tipica de un teclado</strong></p>
<p>Ejemplo:</p>
<pre>Section “InputDevice”
         Identifier   “Generic Keyboard”
         Driver       “kbd”
         Option       “CoreKeyboard”
         Option       “XkbRules”   “xorg”
         Option       “XkbModel” “pc105”
         Option       “XkbLayout” “es”
EndSection</pre>
<p><strong>Identifier:</strong> Especifica un nombre para esta sección.</p>
<p><strong>Driver:</strong> Especifica el controlador que debe cargar para el correcto funcionamiento del teclado.</p>
<p><strong>Option:</strong> Especifica las opciones necesarias pertinentes al dispositivo</p>
<p>Para un teclado las opciones son las siguientes:</p>
<p><strong>CoreKeyboard:</strong> Especifica que es el teclado principal</p>
<p><strong>XkbModel:</strong> Especifica el tipo de teclado. Los valores mas comunes son:</p>
<ul>
<li>&#8220;pc101&#8243;</li>
<li>&#8220;pc102&#8243;</li>
<li>&#8220;pc104&#8243;</li>
<li>&#8220;pc105&#8243;</li>
<li>&#8220;microsoft&#8221;</li>
</ul>
<p><strong>XkbLayout:</strong> Especifica el lenguaje que usaremos, &#8220;es&#8221; (español), &#8220;us&#8221; (ingles)</p>
<h4 id="section-Certificaci_C3_B3n+LPI+102-SeccionDevice">Seccion “Device”</h4>
<p>Esta sección es la que define y configura la tarjeta gráfica (vídeo)</p>
<p>Ejemplo:</p>
<pre>Section “Device”
         Identifier   “Device0”
         Driver       “nvidia”
         VendorName   “NVIDIA Corporation”
         Option       “RenderAccel”  “true”
         Option       “AllowGLXWithCompisite”   “true”
         Option       “dpms”
EndSection</pre>
<p><strong>Identifier:</strong> Especifica un nombre para esta sección.</p>
<p><strong>Driver:</strong> Especifica el controlador que debe cargar para el correcto funcionamiento del vídeo.</p>
<p><strong>VendorName:</strong> Este parámetro es opcional, especifica el fabricante de la tarjeta de vídeo.</p>
<p><strong>BusID:</strong> Este parámetro es opcional, especifica el bus en el que  se encuentra conectada la tarjeta gráfica, Esta 	opción únicamente es  necesaria para sistema con múltiples tarjetas gráficas.</p>
<p><strong>Screen:</strong> Este parámetro es opcional, especifica que conector  del monitor en la tarjeta gráfica configura la 	sección Device. Esta  opción en muy útil solamente para tarjetas con múltiples conectores.</p>
<p>Si dos monitores o mas son conectados en diferentes conectores en la  misma tarjeta gráfica, deben existir en xorg.conf secciones Device  separadas y cada una de estas secciones debe tener un valor Screen  diferente.</p>
<p>Los valores para la entrada Screen debe ser enteros. El primer  conector de la tarjeta de vídeo tiene el valor 0. El valor para cada  conector adicional incrementa este valor en uno.</p>
<p><strong>Option</strong> &#8220;nombre_opción&#8221;: Este parámetro es opcional. Reemplace  &#8220;nombre_opción&#8221; con una de las opciones 	listadas para esta sección en  la pagina man de xorg.conf</p>
<p>Una de las opciones mas habituales es &#8220;dpms&#8221; (Display Power  Management Signalling), se usa para activar el estado de ahorro de  energía del monitor.</p>
<h4 id="section-Certificaci_C3_B3n+LPI+102-SeccionMonitor">Seccion “Monitor”</h4>
<p>Esta sección es la que define y configura los parámetro del monitor</p>
<p>Ejemplo:</p>
<pre>Section “Monitor”
         Identifier   “Acer X203W”
         Option       “DPMS”
         HorizSync    30-83
         VertRefresh  “55-75”
EndSection</pre>
<p><strong>Identifier:</strong> Especifica un nombre para esta sección. Puede  existir varias secciones &#8220;Monitor&#8221; en el archivo 	xorg.conf, cada una  con diferente identificación (Identifier), esto es causado porque  disponemos de dos o mas 	monitores conectados al ordenador.</p>
<p><strong>HorizSync:</strong> Especifica la frecuencia de barrido horizontal del  monitor, expresado en kHz. Puede ser una 	frecuencia fija (30.5),  multiples frecuencias fijas (30.5, 35.8), un rango (30-110), o varios  rangos (15-25, 30-64)</p>
<p><strong>VertRefresh:</strong> Especifica la frecuencia de barrido vertical del monitor, expresado en Hz, los valores son iguales 	a la opción HorizSync.</p>
<h4 id="section-Certificaci_C3_B3n+LPI+102-SeccionScreen">Seccion “Screen”</h4>
<p>Esta sección es la que va a definir la pantalla, vinculando una tarjeta gráfica (Device) con la sección &#8220;Monitor&#8221; Ejemplo:</p>
<pre>Section “Screen”
         Identifier     “Default Screen”
         Device         “nvidia geforce mx400”
         Monitor        “AcerX203W”
         DefaultDepth   24
         Options        “AddARGBGLXvVisuals”   “True”
         Subseccion “Display”
            Depth    1
            Modes    “1600x1050” ”1200x1024” ”1024x768” ”800x600” “640X400”
         Subseccion “Display”
            Depth    4
            Modes    “1600x1050” ”1200x1024” ”1024x768” ”800x600” “640X400”
         Subseccion “Display”
            Depth    8
            Modes    “1600x1050” ”1200x1024” ”1024x768” ”800x600” “640X400”
         Subseccion “Display”
            Depth    15
            Modes    “1600x1050” ”1200x1024” ”1024x768” ”800x600” “640X400”
         Subseccion “Display”
            Depth    16
            Modes    “1600x1050” ”1200x1024” ”1024x768” ”800x600” “640X400”
         Subseccion “Display”
            Depth    24
            Modes    “1600x1050” ”1200x1024” ”1024x768” ”800x600” “640X400”
EndSection</pre>
<p><strong>Identifier:</strong> Especifica un nombre unico para esta sección</p>
<p><strong>Device:</strong> Especifica el nombre de una sección &#8220;Device&#8221; existente en el fichero xorg.conf</p>
<p><strong>Monitor:</strong> Especifica el nombre único de una sección &#8220;Monitor&#8221; existente en fichero xorg.conf</p>
<p><strong>Observación:</strong> las entradas &#8220;Device y Monitor&#8221; tienen que tener  el mismo valor que la entrada &#8220;Identifier&#8221; de las 	secciones &#8220;Device&#8221; y  &#8220;Monitor&#8221;. De  esta manera se entrelazan las configuraciones de las diferentes  secciones.</p>
<p><strong>DefaultDepth:</strong> Especifica la profundidad de color por defecto en bits.</p>
<p><strong>SubSection</strong> &#8220;Display&#8221;: Especifica los modos disponibles de la pantalla para una profundidad de color en 	particular.</p>
<p><strong>Observación:</strong> Una sección &#8220;Screen&#8221; puede tener múltiples  subsecciones &#8220;Display&#8221;, pero debe existir al menos 	una para la  profundidad de color especificada en la entrada &#8220;DefaultDepth&#8221;</p>
<p><strong>Depth:</strong> Especifica la profundidad de color de la subsección, los valores posibles son: 1, 4, 8, 15, 16 y 24 bits</p>
<p><strong>Modes:</strong> Especifica las resoluciones que podremos visualizar  según nuestro monitor. Puede especificarse una 	sola resolución  &#8220;1680&#215;1050&#8243; (si sabemos que nuestro monitor la soporta), o un listado de  estas: &#8220;1680&#215;1050&#8243; 	&#8220;1280&#215;1024&#8243; &#8220;1024&#215;768&#8243; &#8220;800&#215;600&#8243; &#8220;640&#215;480&#8243;. Por  defecto se usa la primera en la lista, siempre que este 	soportada por  nuestro monitor, si no se usa la siguiente, y asi hasta la ultima  resolución que tengamos listada.</p>
<p>Nota: Dependiendo de nuestro monitor y tarjeta grafica (si son de  gama &#8220;media baja&#8221; o inferior), puede darse 	los siguientes casos:</p>
<p>* A mayor profundidad de color &#8220;24 bits&#8221; obtenemos menor resolución  &#8220;800&#215;600&#8243; 	* A menor profundidad de color &#8220;8 bits&#8221; obtenemos mayor  resolución &#8220;1680&#215;1050&#8243;</p>
<p><strong>Option</strong> &#8220;nombre de opción&#8221;: Especifica parámetros extras para  la sección. Reemplace &#8220;nombre de opción&#8221; 	con una opción valida listada  para esta sección en la pagina man de xorg.conf</p>
<h4 id="section-Certificaci_C3_B3n+LPI+102-SeccionServerLayaout">Seccion “ServerLayaout”</h4>
<p>Esta sección es la que vincula los dispositivos de entrada y salida que controla el servidor xorg.</p>
<p>Como mínimo, esta sección debe especificar un dispositivo de salida (monitor) y al menos dos de entrada ( un teclado y un ratón)</p>
<p>En Particular esta sección junta todos los identificadores &#8220;Identifier&#8221; de cada sección.</p>
<pre>Section “ServerLayout”
         Identifier     “Default Layout”
         Screen         “Default Screen”
         InputDevice    “Generic Layout”
         InputDevice    “Configured Mouse”
EndSection</pre>
<p><strong>Identifier:</strong> Especifica un nombre para esta sección.</p>
<p><strong>Screen:</strong> Especifica el nombre de la sección &#8220;Screen&#8221; a ser usado por el servidor xorg. Pueden estar presente 	más de una opción &#8220;Screen&#8221;<br />
Crear una nueva configuracion de xorg[6-7]</p>
<p><strong>X Fonts</strong></p>
<p>X.Org viene con una coleccion de fuentes para usos mas comunes incluyendo estas para los textos a mostrar en las ventanas de terminales y navegadores. Para muchos usuarios<br />
las fuentes por defectos son las adecuadas pero para otros les esencial agregar mas fuentes al sistema.<br />
Una gran variedad de fuentes hay disponibles y estan son libres y otras pagas.<br />
Muchas de ellas son desarrolladas por personas que las distribuyen por internet y siempre hay que buscar que sean para X.Org.<br />
X.Org hace que las fuentes esten disponibles para los programas clientes. Una  ruta para una fuente basica es compilada para que este adentro de nuestro X-Server pero nosotros podemos indicar tambien otra ruta de fuentes para que pueda ser utilizada en la directiva de FontPath asi tendremos mas fuentes en nuestro xorg.conf.</p>
<p>La sintaxis es la siguiente:<br />
FontPath &#8220;path&#8221;<br />
Por Ejemplo:<br />
Section &#8220;Files&#8221;<br />
FontPath &#8220;/usr/share/X11/fonts/misc&#8221;<br />
FontPath &#8220;/usr/share/X11/fonts/cyrillic&#8221;<br />
FontPath &#8220;/usr/share/X11/fonts/100dpi/:unscaled&#8221;<br />
FontPath &#8220;/usr/share/X11/fonts/75dpi/:unscaled&#8221;<br />
FontPath &#8220;/usr/share/X11/fonts/Type1&#8243;<br />
FontPath &#8220;/usr/share/X11/fonts/100dpi&#8221;<br />
FontPath &#8220;/usr/share/X11/fonts/75dpi&#8221;<br />
FontPath &#8220;/usr/share/fonts/X11/misc&#8221;<br />
# path to defoma fonts<br />
FontPath &#8220;/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType&#8221;<br />
EndSection<br />
Este grupo de FontPath crea una ruta de fuentes que consiste de ocho directorios todos debajo de /usr/share/X11/fonts. Cuando arranca nuestra X  este va a incluir todas las fuentes que fueron definidas en xorg.conf durante nuestra sesion grafica.</p>
<p><strong>Instalando Fuentes:</strong><br />
Añadir nuevas fuentes es sencillo.<br />
En primer lugar, un directorio adecuado debe ser creado para las nuevas fuentes, como por ejemplo / usr/share/X11/fonts/local o /usr/local/ fonts. Si lo desea, para separar sus propias fuentes de los directorios por default de X. Org  para protegerlos durante las actualizaciones. Despues que las fuentes son instaladas en el nuevo directorio, la utilidad mkfontdir se ejecuta para agregar al  catálogo  las nuevas fuentes en el nuevo directorio.<br />
Las nuevas entradas se agregan al archivo xorg.conf para incluir la ruta de acceso de las nuevas fuentes.<br />
Por ejemplo:</p>
<p>FontPath<br />
&#8220;/usr/local/fonts&#8221;<br />
En este punto, el servidor de X puede ser reiniciado para reconocer las nuevas fuentes, o las fuentes pueden ser agregadas de forma dinamica con le comando xset.<br />
# xset fp+ /usr/local/fonts</p>
<p>El servidor de fuentes X<br />
En una red con múltiples estaciones de trabajo, la gestión de las fuentes de forma manual para cada sistema puede llevar mucho tiempo. Para simplificar este problema, el administrador puede instalar todas las  fuentes que desee en un solo sistema y ejecutar xfs, el servidor de fuentex x, en ese sistema. En un sistema local, xfs deja fuera las cargas de trabajo de la reproduccion de fuentes  en el servidor X,lo que significa que el servidor X puede realizar otras tareas mientras que las fuentes están siendo renderizadas. Esto es<br />
especialmente notable en los sistemas más lentos o sistemas sin una unidad de punto flotante  (FPU).<br />
Section &#8220;Files&#8221;<br />
RgbPath<br />
FontPath<br />
EndSection<br />
&#8220;/usr/share/X11/fonts/rgb&#8221;<br />
&#8220;unix/:-1&#8243;<br />
Si instala xfs de un paquete de su distribución, es probable que sea de forma automática<br />
configurado para iniciarse en el momento del arranque y correr continuamente ,sirviendo a las fuentes locales y programas clients remotos.<br />
Para iniciar xfs manualmente, simplemente escriba el comando xfs. Para mayor seguridad<br />
, es posible que desee ejecutar xfs como usuario root pero no lo haga. xfs se configura con su archivo de configuración, /etc/X11/fs/config<br />
Controlando Aplicaciones X con .Xresources.</p>
<p>El sistema de ventanas X también tiene muchas características integradas de personalización. Muchas  aplicaciones X se programan con una variedad de recursos, que son de configuraciónes ajustes que se pueden manipular externamente. En lugar de tener una utilidad de configuración integrada en cada aplicación, las aplicaciones pueden ser escritas para examinar el contenido de un archivo en el directorio home del usuario. El archivo. Xresources contiene una línea para cada configuracion de recursos que  figura en el siguiente Ejemplo:</p>
<p><strong>program*resource: value</strong><br />
Esta linea debe ser traducida asi:</p>
<p>• El programa es el nombre de un programa configurable, como emacs o xterm.<br />
• los recursos son una de las opciones configurables permitidas por el programa, tales como colores.<br />
• El valor es la opcion que se va  aplicar a los recursos.<br />
Por Ejemplo, el sisguiente es un ejemplo de como configuramos los colores para un xterm con el archivo .Xresources.<br />
xterm*background: Black<br />
xterm*foreground: Wheat<br />
xterm*cursorColor: Orchid<br />
xterm*reverseVideo: false</p>
<p>Fuentes:<br />
[1]http://www2.linuxparatodos.net/web/comunidad/base-de-conocimiento/-/wiki/Base%20de%20Conocimiento/Certificaci%C3%B3n%20LPI%20102#section-Certificaci_C3_B3n+LPI+102-InstalarYConfigurarXWindowSystem<br />
[2]http://en.wikibooks.org/wiki/LPI_Linux_Certification/Install_%26_Configure_X11<br />
[3]http://www.itrestauracion.com.ar/?p=1149<br />
[4]http://es.wikipedia.org/wiki/X_Window_System<br />
[5]http://es.wikipedia.org/wiki/X_Display_Manager<br />
[6]http://fedoraproject.org/wiki/How_to_create_xorg.conf<br />
[7]http://www.my-guides.net/en/content/view/161/26/2/13/<br />
[8]http://www.rru.com/~meo/pubsntalks/xrj/xdm.html<br />
[9]http://www.tldp.org/HOWTO/XDMCP-HOWTO/index.html<br />
[10]http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/x-xdm.html</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.itrestauracion.com.ar%2F%3Fp%3D1224&amp;title=Preparando%20LPIC-1%20106.1%20Instalar%20y%20configurar%20X11" id="wpa2a_18"><img src="http://www.itrestauracion.com.ar/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.itrestauracion.com.ar/?feed=rss2&#038;p=1224</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
	</item>
		<item>
		<title>Preparando LPIC-1 Tema 106 Interfaces de Usuario y Escritorios</title>
		<link>http://www.itrestauracion.com.ar/?p=1221</link>
		<comments>http://www.itrestauracion.com.ar/?p=1221#comments</comments>
		<pubDate>Sun, 19 Dec 2010 17:59:20 +0000</pubDate>
		<dc:creator>restauracion</dc:creator>
				<category><![CDATA[Lpi]]></category>

		<guid isPermaLink="false">http://www.itrestauracion.com.ar/?p=1221</guid>
		<description><![CDATA[Temas: Preparando LPIC-1 106.1 Instalar y configurar X11 Preparando LPIC-1 106.2 Configurar un administrador de pantalla Preparando LPIC-1 106.3 Accesibilidad (EN CONSTRUCCION)]]></description>
			<content:encoded><![CDATA[<p>Temas:</p>
<p><a href="?p=1224">Preparando LPIC-1  106.1 Instalar y configurar X11</a><br />
<a href="?p=1238">Preparando LPIC-1  106.2 Configurar un administrador de pantalla</a><br />
<a href="http://www.itrestauracion.com.ar/go.php?http://" title="(No click)">Preparando LPIC-1  106.3 Accesibilidad</a> (EN CONSTRUCCION)</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.itrestauracion.com.ar%2F%3Fp%3D1221&amp;title=Preparando%20LPIC-1%20Tema%20106%20Interfaces%20de%20Usuario%20y%20Escritorios" id="wpa2a_20"><img src="http://www.itrestauracion.com.ar/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.itrestauracion.com.ar/?feed=rss2&#038;p=1221</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
	</item>
	</channel>
</rss>
