<?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/"
	>

<channel>
	<title># rm-rf.es &#187; Unix</title>
	<atom:link href="http://rm-rf.es/categoria/unix/feed/" rel="self" type="application/rss+xml" />
	<link>http://rm-rf.es</link>
	<description>Administración de sistemas, Unix, Linux, FreeBSD, Windows, hosting, dominios, servidores...</description>
	<lastBuildDate>Sat, 28 Jan 2012 19:36:55 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Ejemplos prácticos de grep y egrep</title>
		<link>http://rm-rf.es/ejemplos-practicos-de-grep-y-egrep/</link>
		<comments>http://rm-rf.es/ejemplos-practicos-de-grep-y-egrep/#comments</comments>
		<pubDate>Tue, 06 Dec 2011 16:19:55 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Comandos]]></category>
		<category><![CDATA[Unix]]></category>
		<category><![CDATA[expresiones regulares]]></category>
		<category><![CDATA[grep]]></category>

		<guid isPermaLink="false">http://rm-rf.es/?p=2399</guid>
		<description><![CDATA[Grep es sin duda alguna no de los comandos más utilizados en el día a día por los administradores de sistemas. Muchos no van más allá de sus usos más básicos, que si bien cumplen a la perfección su función son una mínima parte de las posibilidades que nos ofrece. Algunos de estos ejemplos se [...]]]></description>
			<content:encoded><![CDATA[<p><img class=" size-full wp-image-2402" title="grep search" src="http://rm-rf.es/wp-content/uploads/2011/12/search-logo.jpg" alt="grep search" width="180" height="179" align="right" />Grep es sin duda alguna no de los comandos más utilizados en el día a día por los administradores de sistemas. Muchos no van más allá de sus usos más básicos, que si bien cumplen a la perfección su función son una mínima parte de las posibilidades que nos ofrece. Algunos de estos ejemplos se pueden ejecutar tanto con grep como con egrep (<strong>egrep= grep -E</strong>), independientemente de que casi siempre se ejecuten con egrep en el post. Espero que os sean de utilidad.</p>
<p>Este es el texto que se va a utilizar para trabajar como ejemplo. Sí, es un fichero de configuración de un Cluster MySQL de prueba, pero es que no tenía otra cosa a mano y no me apetecía preparar un fichero específicamente para esto ;)</p>
<pre>[ndb_mgmd]
hostname=192.168.0.10           # Hostname or IP address of management node
datadir=/var/lib/mysql-cluster  # Directory for management node log files

# Options for data node "A":
[ndbd]
                                # (one [ndbd] section per data node)
hostname=192.168.0.30           # Hostname or IP address
datadir=/usr/local/mysql/data   # Directory for this data node's data files

# Options for data node "B":
[ndbd]
hostname=192.168.0.40           # Hostname or IP address
datadir=/usr/local/mysql/data   # Directory for this data node's data files

# SQL node options:
[mysqld]
hostname=192.168.0.20           # Hostname or IP address
                                # (additional mysqld connections can be
                                # specified for this node for various
                                # purposes such as running ndb_restore)</pre>
<h3>Buscar dos ó n strings distintas dentro de un mismo fichero</h3>
<p>La sintaxis es &#8216;(cadena1|cadena2|cadenaN)&#8217;. La salida será todas aquellas líneas que contienen cualquiera de esas strings. Esto nos permite hacer múltiples búsquedas en un único comando:</p>
<pre>$ egrep '(192.168.0.30|192.168.0.40)' test
hostname=192.168.0.30           # Hostname or IP address
hostname=192.168.0.40           # Hostname or IP address</pre>
<pre>$ egrep '(192.168.0.30|192.168.0.40|192.168.0.20)' test
hostname=192.168.0.30           # Hostname or IP address
hostname=192.168.0.40           # Hostname or IP address
hostname=192.168.0.20           # Hostname or IP address</pre>
<h3>Usar los corchetes para reducir el rango de búsqueda</h3>
<p>Podemos hacer uso de los corchetes [] para definir, dentro de una misma string, que una sección contenga únicamente X carácteres, un rango de ellos, etc.</p>
<p>En este caso queremos sacar únicamente los resultados que contengan 192.168.0.30 y 192.168.0.40:</p>
<pre>$ egrep 192.168.0.[30,40] test
hostname=192.168.0.30           # Hostname or IP address
hostname=192.168.0.40           # Hostname or IP address</pre>
<p>Pero si quisiéramos definir los rangos que queremos mostrar para los dos últimos caracteres, en este caso numéricos (se podría hacer con alfanuméricos) podemos hacerlo separando el valor inicial y el final con &#8220;-&#8221;. En este ejemplo queremos que nos muestre aquello que cumpla la condición de que el primer número del último bloque tiene que ser 0,1 ó 2:</p>
<pre>$ egrep 192.168.0.[0-2]0 test
hostname=192.168.0.10           # Hostname or IP address of management node
hostname=192.168.0.20           # Hostname or IP address</pre>
<p>Y en este que el primer número del último bloque sea 1,2 ó 3 y el último entre 0 y 9:</p>
<pre>$ egrep 192.168.0.[0-3][0-9] test
hostname=192.168.0.10           # Hostname or IP address of management node
hostname=192.168.0.30           # Hostname or IP address
hostname=192.168.0.20           # Hostname or IP address</pre>
<p>Un ejemplo práctico con caracteres alfanuméricos sería usar por ejemplo <strong>[a-c]test</strong>, que buscaría atest, btest y ctest ó por ejemplo <strong>[ar4d]test</strong> que buscaría atest, rtest, 4test y dtest.</p>
<h3>Uso de clases predefinidas</h3>
<p>Existen clases predefinidas que nos pueden llegar a ahorrar mucho trabajo. Son las siguientes:</p>
<pre>[:alnum:], [:alpha:], [:cntrl:], [:digit:], [:graph:], [:lower:], [:print:], [:punct:], [:space:], [:upper:], [:xdigit:]</pre>
<p>Lo que hace cada una de ellas está claro por su nombre, no obstante vamos a ver un ejemplo. Podemos buscar toda línea que contenga un carácter en mayúsculas:</p>
<pre>$ egrep [[:upper:]] test
hostname=192.168.0.10           # Hostname or IP address of management node
datadir=/var/lib/mysql-cluster  # Directory for management node log files
...
...</pre>
<h3>Todo lo que comienza o termina por&#8230;</h3>
<p>Esto es sencillo, <strong>las líneas comienzan por el carácter ^ y terminan con $</strong>. Por lo que:</p>
<p>Buscar todo lo que comience por &#8220;hostname&#8221;:</p>
<pre>$ egrep ^hostname test
hostname=192.168.0.10           # Hostname or IP address of management node
hostname=192.168.0.30           # Hostname or IP address
hostname=192.168.0.40           # Hostname or IP address
hostname=192.168.0.20           # Hostname or IP address</pre>
<p>O todo lo que termine por &#8220;node&#8221;:</p>
<pre>$ egrep node$ test
hostname=192.168.0.10           # Hostname or IP address of management node</pre>
<h3>Más expresiones regulares</h3>
<p>Ya hicimos un artículo sobre ello hace tiempo, podéis revisarlo aquí: <a title="Unix: Expresiones regulares" href="http://rm-rf.es/unix-expresiones-regulares/">unix: Expresiones regulares</a>, ahí también encontraréis unos cuantos <strong>ejemplos de grep</strong>. Son muy útiles los operadores de repetición:</p>
<pre>       ?      El carácter que precede es opcional y coincide al menos una vez.
       *      El carácter que precede coincidirá 0 o más veces.
       +      El carácter que precede coincidirá 1 o más veces.
       {n}    El carácter que precede coincidirá exactamente n veces.
       {n,}   El carácter que precede coincidirá n o más veces.
       {,m}   El carácter que precede coincidirá como máximo m veces.
       {n,m}  El carácter que precede coincidirá entre n y m veces.</pre>
<p>Podemos entonces buscar todas las líneas del fichero que contienen una IP. Usamos primero los corchetes para definir que puede haber números del 0 al 9, con las llaves decimos que habrá 1 o 3 números en cada bloque y así cuatro veces (nota: hay que escapar las llaves):</p>
<pre>$ grep '[0-9]\{1,3\}.[0-9]\{1,3\}.[0-9]\{1,3\}.[0-9]\{1,3\}' test
hostname=192.168.0.10           # Hostname or IP address of management node
hostname=192.168.0.30           # Hostname or IP address
hostname=192.168.0.40           # Hostname or IP address
hostname=192.168.0.20           # Hostname or IP address</pre>
<h3>Buscar palabras completas, contar resultados</h3>
<p>Para indicar a grep que queremos que la búsqueda se centre en palabras y no en caracteres sueltos especificamos el parámetro &#8220;-w&#8221;. Podemos ver la diferencia buscando &#8220;data&#8221; en el ejemplo, contamos los resultados satisfactorios con el parámetro &#8220;-c&#8221;:</p>
<pre>$ grep -cw data test
5
$ grep -c data test
6</pre>
<h3>Excluir resultados, sensibilidad a mayúsculas</h3>
<p>Algo básico a la hora de usar grep es conocer los parámetros &#8220;-v&#8221; que excluye la cadena indicada en el resultado y &#8220;-i&#8221; que especifica que no se tendrá en cuenta si el resultado es mayúscula o minúscula.</p>
<p>Eliminamos las líneas que tienen comodines:</p>
<pre>$ grep -v "#" test
[ndb_mgmd]

[ndbd]

[ndbd]

[mysqld]</pre>
<h3>Uso de pipes</h3>
<p>Todos usamos pipes (|) para acotar resultados. Hacemos un primer grep, con el resultado de ese hacemos otro y así sucesivamente:</p>
<pre>$ grep -iw hostname test | grep 192.168.0.[0-9]0 | grep -v 192.168.0.40 | grep -vw node
hostname=192.168.0.30           # Hostname or IP address
hostname=192.168.0.20           # Hostname or IP address</pre>
<h3>Listar los archivos que contienen la cadena</h3>
<p>Con el parámetro -l podemos ejecutar grep contra varios archivos (y de forma recursiva en múltiples directorios con -R) y recibiremos el listado de archivos con coincidencias sin mostrar las líneas que contienen la cadena:</p>
<pre>$ grep -lR SQL *
config.ini
header.xcf
iptables.sh
test
dir1/test.sql
dir2/prueba.txt
...</pre>
<h3>Número de línea en la que se encuentran los resultados</h3>
<p>Para saber el número de línea en la que se encuentra el resultado utilizaremos el parámetro -n:</p>
<pre>$ grep -n hostname test
2:hostname=192.168.0.10           # Hostname or IP address of management node
8:hostname=192.168.0.30           # Hostname or IP address
...</pre>
<h3>Cuantas veces se encuentran resultados</h3>
<p>Si &#8220;-n&#8221; nos monstraba el nº de línea en el que estaba la coincidencia, &#8220;-c&#8221; nos dice cuantas veces está la búsqueda en el fichero:</p>
<pre>$ grep -c hostname test
4</pre>
<p>Bueno, de momento esto es todo. Por supuesto hay muchas más opciones y explotar la potencia de grep llevaría mucho tiempo así que a partir de aquí investigáis vosotros ;)</p>
<h4  class="related_post_title">También te puede interesar:</h4><ul class="related_post"><li><a href="http://rm-rf.es/awk-imprimir-expresion-regular-hasta-final-fichero/" title="AWK: imprimir a partir de una expresión regular hasta el final del fichero">AWK: imprimir a partir de una expresión regular hasta el final del fichero</a></li><li><a href="http://rm-rf.es/grep-mostrar-lineas-anteriores-posteriores-busqueda/" title="Truco GREP: Mostrar líneas anteriores/posteriores al resultado de la búsqueda">Truco GREP: Mostrar líneas anteriores/posteriores al resultado de la búsqueda</a></li><li><a href="http://rm-rf.es/truco-shell-unix-quitar-lineas-en-blanco-de-un-fichero-con-grep/" title="Truco shell Unix: quitar líneas en blanco de un fichero con grep">Truco shell Unix: quitar líneas en blanco de un fichero con grep</a></li><li><a href="http://rm-rf.es/vim-manual-de-expresiones-regulares/" title="Vim: Manual de expresiones regulares">Vim: Manual de expresiones regulares</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://rm-rf.es/ejemplos-practicos-de-grep-y-egrep/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Montar un filesystem por UUID o label</title>
		<link>http://rm-rf.es/montar-un-filesystem-por-uuid-o-label/</link>
		<comments>http://rm-rf.es/montar-un-filesystem-por-uuid-o-label/#comments</comments>
		<pubDate>Fri, 25 Nov 2011 20:04:57 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Storage]]></category>
		<category><![CDATA[Unix]]></category>
		<category><![CDATA[fstab]]></category>
		<category><![CDATA[sistema ficheros]]></category>

		<guid isPermaLink="false">http://rm-rf.es/?p=2378</guid>
		<description><![CDATA[El beneficio de montar los sistemas de ficheros con su UUID o label en lugar de con el nombre asignado a la partición (/dev/sda1, /dev/hda2&#8230;) es que se trata de un identificador único, como su propio nombre indica: Universally Unique Identifier (UUID). Esto evita problemas que se pueden producir cuando añadimos nuevos dispositivos al sistema, [...]]]></description>
			<content:encoded><![CDATA[<p><img class="size-full wp-image-1695" style="margin-left: 12px; margin-right: 12px;" title="disco duro" src="http://rm-rf.es/wp-content/uploads/2011/04/disco-duro.jpg" alt="disco duro" width="160" height="160" align="right" />El beneficio de <strong>montar los sistemas de ficheros con su UUID o label</strong> en lugar de con el nombre asignado a la partición (/dev/sda1, /dev/hda2&#8230;) es que se trata de un identificador único, como su propio nombre indica: <strong>Universally Unique Identifier (UUID)</strong>. Esto evita problemas que se pueden producir cuando añadimos nuevos dispositivos al sistema, movemos particiones, etc ya que el nombre de la partición puede cambiar pero no el UUID o label (etiqueta asignada por nosotros).</p>
<h3>¿Cómo averiguamos el UUID de una partición?</h3>
<p>Hay varias formas: con el comando blkid, tune2fs&#8230; Vamos a localizar el UUID de la partición /dev/sda2:</p>
<pre># tune2fs -l /dev/sda2 | grep UUID
Filesystem UUID:          528c141b-66fd-43d5-808b-4a94a639f323</pre>
<pre># blkid /dev/sda2
/dev/sda2: UUID="528c141b-66fd-43d5-808b-4a94a639f323" TYPE="ext4"</pre>
<p>Con esta información ya podemos añadir la entrada correspondiente al fichero <strong>/etc/fstab</strong>. Si antes estaba así:</p>
<pre>/dev/sda2     /datos               ext4    defaults        1 1</pre>
<p>Ahora quedaría así:</p>
<pre>UUID=528c141b-66fd-43d5-808b-4a94a639f323     /datos        ext4    defaults   1 1</pre>
<h3>¿Y cómo averiguamos o configuramos la etiqueta del filesystem?</h3>
<p>Es sencillo, con el comando<strong> tune2fs seguido del parámetro -L</strong> podemos configurar la etiqueta que queramos:</p>
<pre># tune2fs -L "DATOS" /dev/sda2
tune2fs 1.41.12 (17-May-2010)</pre>
<p>Para consultar la etiqueta/label de la partición:</p>
<pre># tune2fs -l /dev/sda2 | grep "Filesystem volume name"
Filesystem volume name:   DATOS</pre>
<p>También podemos verla con el comando anterior blkid, ahora que la partición tiene label nos muestra tanto el UUID como la etiqueta:</p>
<pre># blkid /dev/sda2
/dev/sda2: UUID="528c141b-66fd-43d5-808b-4a94a639f323" TYPE="ext4" LABEL="DATOS"</pre>
<p>Y para montarla en /etc/fstab tan sencillo como:</p>
<pre>LABEL=DATOS     /datos        ext4    defaults   1 1</pre>
<h4  class="related_post_title">También te puede interesar:</h4><ul class="related_post"><li><a href="http://rm-rf.es/openvz-virtuozzo-activar-noatime-para-un-contenedor/" title="OpenVZ &#038; Virtuozzo: activar noatime para un contenedor">OpenVZ &#038; Virtuozzo: activar noatime para un contenedor</a></li><li><a href="http://rm-rf.es/atime-noatime-y-relatime/" title="atime, noatime y relatime">atime, noatime y relatime</a></li><li><a href="http://rm-rf.es/gestion-de-particiones-con-parted-en-linux/" title="Gestión de particiones con parted en Linux">Gestión de particiones con parted en Linux</a></li><li><a href="http://rm-rf.es/autofs-y-automount-para-servir-nfs/" title="Autofs y automount para servir nfs">Autofs y automount para servir nfs</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://rm-rf.es/montar-un-filesystem-por-uuid-o-label/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Routing Tables: &#8216;netstat -rn&#8217; y &#8216;route -n&#8217;</title>
		<link>http://rm-rf.es/routing-tables-netstat-rn-y-route-n/</link>
		<comments>http://rm-rf.es/routing-tables-netstat-rn-y-route-n/#comments</comments>
		<pubDate>Sun, 20 Nov 2011 18:17:47 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Redes]]></category>
		<category><![CDATA[Unix]]></category>
		<category><![CDATA[netstat]]></category>
		<category><![CDATA[network]]></category>
		<category><![CDATA[network config]]></category>

		<guid isPermaLink="false">http://rm-rf.es/?p=2364</guid>
		<description><![CDATA[Algo importante en los sistemas Linux (o Unix) y todo lo relacionado con networking es conocer el estado y configuración de las tablas de rutas IP (routing tables), que nos indican cómo y a través de donde se envía un paquete en las distintas redes. Para visualizar la tabla de rutas tenemos dos posibilidades, utilizar [...]]]></description>
			<content:encoded><![CDATA[<p>Algo importante en los sistemas Linux (o Unix) y todo lo relacionado con networking es conocer el <strong>estado y configuración de las tablas de rutas IP (routing tables)</strong>, que nos indican cómo y a través de donde se envía un paquete en las distintas redes.</p>
<p>Para visualizar la tabla de rutas tenemos dos posibilidades, utilizar el comando <strong>netstat -rn</strong> o <strong>route -n</strong>, ambos nos ofrecen la misma salida:</p>
<pre># route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth0
0.0.0.0         192.168.1.1     0.0.0.0         UG        0 0          0 eth0</pre>
<p>Las tres primeras columnas nos indican, por un lado las redes de destino (Destination), la puerta de enlace que utilizan (Gateway) y la máscara de red (Genmask). En las Flags vemos &#8220;U&#8221;, que significa que la interfaz de red está levantada y G que indica que esa ruta utiliza la puerta de enlace. 0.0.0.0 es tratado como un wildcard (también se suele representar con un *) y especifica el destino a cualquier red no especificada.</p>
<p>Explicando la salida del comando route anterior, vemos en primer lugar que <strong>todo paquete dirigido a las redes 192.168.1.0/255.255.255.0 y 169.254.0.0/255.255.0.0 serán enviados a través de redes LAN</strong> (vemos que no hay flag de gateway) por lo que no harán uso de puerta de enlace. En cambio <strong>todo paquete con destino 0.0.0.0, es decir, el resto de redes sí que pasará por nuestra puerta de enlace 192.168.1.1</strong>. Todas estas rutas trabajan bajo la interfaz de red eth0, si tuviéramos más interfaces levantadas aparecerían marcadas como ethX en la columna Iface.</p>
<h4  class="related_post_title">También te puede interesar:</h4><ul class="related_post"><li><a href="http://rm-rf.es/enrutar-en-linux-route-add-del/" title="Enrutar en Linux (route add/del)">Enrutar en Linux (route add/del)</a></li><li><a href="http://rm-rf.es/snort-fatal-error-openpcap-device-eth0-open-bind-network-is-down/" title="Snort: FATAL ERROR: OpenPcap() device eth0 open: bind: Network is down">Snort: FATAL ERROR: OpenPcap() device eth0 open: bind: Network is down</a></li><li><a href="http://rm-rf.es/netstat-estado-de-las-conexiones/" title="Netstat: Estado de las conexiones">Netstat: Estado de las conexiones</a></li><li><a href="http://rm-rf.es/configurar-spamassassin-aceptar-conexiones-remotas/" title="Configurar spamassassin para aceptar conexiones remotas">Configurar spamassassin para aceptar conexiones remotas</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://rm-rf.es/routing-tables-netstat-rn-y-route-n/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Introducción a SMF (Service Management Facility) en Solaris</title>
		<link>http://rm-rf.es/introduccion-a-smf-service-management-facility-en-solaris/</link>
		<comments>http://rm-rf.es/introduccion-a-smf-service-management-facility-en-solaris/#comments</comments>
		<pubDate>Tue, 01 Nov 2011 11:02:07 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Unix]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[servicios]]></category>
		<category><![CDATA[solaris]]></category>

		<guid isPermaLink="false">http://rm-rf.es/?p=2327</guid>
		<description><![CDATA[Hace unos días comentaba el paso de System V a Upstart en RHEL y Centos 6. Hoy vamos a hablar sobre Solaris y el cambio introducido a partir de Solaris 9 para la gestión de servicios. Antes de Solaris 9 los servicios se gestionaban como en la mayoría de sistemas Unix y Linux (legacy), teníamos [...]]]></description>
			<content:encoded><![CDATA[<p><img class="size-full wp-image-2331" title="Solaris" src="http://rm-rf.es/wp-content/uploads/2011/11/Solaris.jpg" alt="Solaris" width="250" height="130" align="right" />Hace unos días comentaba el paso de <a title="RHEL/CentOS 6: adios System V, hola Upstart" href="http://rm-rf.es/rhel-centos-6-adios-system-v-hola-upstart/">System V a Upstart en RHEL y Centos 6</a>. Hoy vamos a hablar sobre Solaris y el cambio introducido a partir de Solaris 9 para la gestión de servicios.</p>
<p>Antes de Solaris 9 los servicios se gestionaban como en la mayoría de sistemas Unix y Linux (legacy), teníamos scripts de arranque en /etc/init.d y se creaban enlaces simbólicos contra ellos en los distintos runlevels (directorios RC) para su arranque/parada. A partir de Solaris 9 se introdujo <strong>SMF (Service Management Facility)</strong> y se ha convertido en la manera por defecto de gestionar los servicios en Solaris 10.</p>
<p>Los beneficios de SMF sobre el método anterior son sustanciales. Entre ellos la posibilidad de <strong>mantener monitorizados los servicios</strong> para que en el momento que se produzca una caída levanten de forma instantánea, la <strong>gestión inteligente de arranque</strong> mediante la cual el servicio tiene unas <strong>dependencias</strong> y hasta que no estén activas el servicio no está disponible, el <strong>arranque en paralelo y de forma asíncrona</strong>, etc.</p>
<p>Los comandos básicos para gestion de servicios en SMF son <strong>svcs, svccfg y svcadm</strong>. Mediante svcs a secas podemos ver el estado de los servicios del sistema (incluidos los del sistema antiguo legacy), a través de distintos parámetros podemos filtrar únicamente los deshabilitados, etc:</p>
<pre># svcs
STATE          STIME    FMRI
legacy_run      9:04:48 lrc:/etc/rc2_d/S20sysetup
legacy_run      9:04:48 lrc:/etc/rc2_d/S47pppd
legacy_run      9:04:49 lrc:/etc/rc2_d/S72autoinstall
legacy_run      9:04:49 lrc:/etc/rc2_d/S73cachefs_daemon
legacy_run      9:04:49 lrc:/etc/rc2_d/S81dodatadm_udaplt
legacy_run      9:04:49 lrc:/etc/rc2_d/S89PRESERVE
disabled        9:02:34 svc:/platform/i86pc/acpihpd:default
online          9:01:28 svc:/system/svc/restarter:default
online          9:01:35 svc:/system/early-manifest-import:default
online          9:01:38 svc:/network/netcfg:default
online          9:01:39 svc:/network/datalink-management:default
online          9:01:39 svc:/network/socket-config:default
...
...</pre>
<p>Básicamente vemos el estado del proceso, la última vez que el servicio cambió de estado y su <strong>FMRI (Fault Management Resource Identifier)</strong>. El FMRI es el identificador del servicio. El FMRI se divide en tres partes separadas por &#8220;:&#8221;. La primera el esquema (svc o lrc según el tipo de servicio), la categoría en la que se encuentra (network, system&#8230;) y el nombre del servicio, y finalmente la instancia.</p>
<p>Podemos ver también con detalle el estado de un único servicio con el parámetro &#8220;-x&#8221; y sus dependencias con &#8220;-d&#8221;:</p>
<pre># svcs -x  svc:/system/cron:default
svc:/system/cron:default (clock daemon (cron))
 State: online since  1 de noviembre de 2011 09:02:51 WET
   See: cron(1M)
   See: crontab(1)
   See: /var/svc/log/system-cron:default.log
Impact: None.</pre>
<pre># svcs -d svc:/system/cron:default
STATE          STIME    FMRI
online          9:02:35 svc:/milestone/name-services:default
online          9:02:49 svc:/system/filesystem/local:default</pre>
<p>Podemos verificar rápidamente cómo SMF monitoriza activamente los servicios que están bajo su control, vamos a ver el estado del servicio cron, matarlo con una <a title="Linux: enviar señales a un proceso con el comando kill" href="http://rm-rf.es/linux-enviar-senales-a-un-proceso-con-el-comando-kill/">señal kill</a> y verificar que al momento SMF lo ha levantado de nuevo:</p>
<pre># date
martes  1 de noviembre de 2011 09:46:24 WET
# svcs -v system/cron
STATE          NSTATE        STIME    CTID   FMRI
online         -              <strong>9:02:51</strong>     62 svc:/system/cron:default
# ps -ef | grep cron
    root   441     1   0 09:02:51 ?           0:00 /usr/sbin/cron
    root   841   687   0 09:46:33 pts/1       0:00 grep cron
# kill 441
# svcs -v system/cron
STATE          NSTATE        STIME    CTID   FMRI
online         -              <strong>9:46:38</strong>     96 svc:/system/cron:default</pre>
<p>A través de svcs también podemos ver el estado de un servicio y diagnosticarlo cuando no es satisfactorio. Encontraremos los siguientes estados: <strong>online, offline, disabled, degraded, maintenance y legacy-run</strong>. Los cuatro primeros estados están claros, online, offline, deshabilitado y degradado. Cuando un servicio está en estado maintenance es debido a que hay algún problema con el servicio y no puede ser arrancado. Como requiere nuestra intervención se pone a nuestra disposición la ruta hacia el log del servicio para verificar el origen del problema. El estado legacy-run simplemente indica que se trata de un servicio legacy.</p>
<p>Mediante <strong>svcadm</strong> podemos gestionar el estado de cada uno de los servicios, con los parámetros <strong>&#8220;enable&#8221;, &#8220;disable&#8221;, &#8220;refresh&#8221;, &#8220;clear&#8221;, &#8220;mark&#8221; y &#8220;restart&#8221;</strong>. Aparte de los obvios, conviene comentar que &#8220;refresh&#8221; sirve para leer de nuevo los ficheros de configuración del servicio por si se ha realizado algún cambio, &#8220;clear&#8221; sirve para resetear el servicio si se encuentra en estado de mantenimiento y &#8220;mark&#8221; para marcar un servicio como degradado, mantenimiento, etc.</p>
<p>Para que veáis un ejemplo de fichero xml básico para un servicio aquí tenéis uno para la gestión de <a title="Configurar PHP + FastCGI en Oracle iPlanet Web Server" href="http://rm-rf.es/configurar-php-fastcgi-en-oracle-iplanet-web-server/"> Oracle iPlanet webserver 7</a> que instalamos hace unos días. Básicamente hemos establecido como dependencias los servicios de red, los sistemas de ficheros locales y el arranque bajo el milestone multi-user (lo que viene siendo el runlevel 3 en legacy). Después establecemos los tres comandos para el arranque, parada y reinicio del servicio:</p>
<pre>&lt;?xml version='1.0'?&gt;

&lt;!DOCTYPE service_bundle SYSTEM '/usr/share/lib/xml/dtd/service_bundle.dtd.1'&gt;

&lt;service_bundle type='manifest' name='webserver7'&gt;

&lt;service name='network/webserver7' type='service' version='0'&gt;
&lt;create_default_instance enabled='true'/&gt;
&lt;single_instance/&gt;
&lt;dependency name='fs' grouping='require_all' restart_on='none' type='service'&gt;
&lt;service_fmri value='svc:/system/filesystem/local'/&gt;
&lt;/dependency&gt;
&lt;dependency name='net' grouping='require_all' restart_on='none' type='service'&gt;
&lt;service_fmri value='svc:/network/physical'/&gt;
&lt;/dependency&gt;
&lt;dependent name='webserver7_multi-user' restart_on='none' grouping='optional_all'&gt;
&lt;service_fmri value='svc:/milestone/multi-user'/&gt;
&lt;/dependent&gt;
&lt;exec_method name='start' type='method' exec='su www -c "/opt/webserver7/bin/webserver7 start"' timeout_seconds='60'&gt;
&lt;method_context/&gt;
&lt;/exec_method&gt;
&lt;exec_method name='stop' type='method' exec='su www -c "/opt/webserver7/bin/webserver7 stop"' timeout_seconds='60'&gt;
&lt;method_context/&gt;
&lt;/exec_method&gt;
&lt;exec_method name='restart' type='method' exec='su www -c "/opt/webserver7/bin/webserver7 restart"' timeout_seconds='60'&gt;
&lt;method_context/&gt;
&lt;/exec_method&gt;
&lt;/service&gt;

&lt;/service_bundle&gt;</pre>
<p>Para importar un servicio creado de este modo ejecutamos el siguiente comando:</p>
<pre># svccfg import webserver7.xml</pre>
<p>Como siempre os recomiendo revisar las páginas man de todos estos comandos para recibir información detallada sobre cada uno de ellos, esto es una pequeña introducción que podría extenderse mucho más si entráramos en detalle de cada una de las características y posibilidades de SMF. Ahí van unas cuantas referencias para aprender más sobre Service Management Facility:</p>
<ul>
<li><a href="http://www.oreillynet.com/pub/a/sysadmin/2006/04/13/using-solaris-smf.html?page=1" target="_blank">Using Solaris SMF (O&#8217;Reilly)</a></li>
<li><a href="http://www.princeton.edu/~unix/Solaris/troubleshoot/smf.html" target="_blank">Universidad de Princeton, Service Management Facility</a></li>
<li><a href="http://hub.opensolaris.org/bin/view/Community+Group+smf/faq" target="_blank">OpenSolaris SMF FAQ</a></li>
</ul>
<h4  class="related_post_title">También te puede interesar:</h4><ul class="related_post"><li><a href="http://rm-rf.es/stub-start-error-en-oracle-iplanet-web-server-php-fastcgi/" title="Stub Start Error en Oracle iPlanet Web Server: PHP + FastCGI">Stub Start Error en Oracle iPlanet Web Server: PHP + FastCGI</a></li><li><a href="http://rm-rf.es/configurar-php-fastcgi-en-oracle-iplanet-web-server/" title="Configurar PHP + FastCGI en Oracle iPlanet Web Server">Configurar PHP + FastCGI en Oracle iPlanet Web Server</a></li><li><a href="http://rm-rf.es/gestionar-el-storage-en-solaris-con-zfs-y-zpool/" title="Gestionar el storage en Solaris con zfs y zpool">Gestionar el storage en Solaris con zfs y zpool</a></li><li><a href="http://rm-rf.es/gestion-de-snapshots-en-zfs/" title="Gestión de snapshots en ZFS">Gestión de snapshots en ZFS</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://rm-rf.es/introduccion-a-smf-service-management-facility-en-solaris/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Oracle Solaris/Open Solaris, DHCP, IPs estáticas y nwam</title>
		<link>http://rm-rf.es/oracle-solaris-open-solaris-dhcp-ips-estaticas-y-nwam/</link>
		<comments>http://rm-rf.es/oracle-solaris-open-solaris-dhcp-ips-estaticas-y-nwam/#comments</comments>
		<pubDate>Mon, 26 Sep 2011 18:38:03 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Unix]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[solaris]]></category>

		<guid isPermaLink="false">http://rm-rf.es/?p=2270</guid>
		<description><![CDATA[Lo reconozco, soy novato con Solaris y todavía estoy aprendiendo sus peculiaridades más allá de lo común con cualquier sistema Unix. En este caso, el primer problema que tuve fue a la hora de desactivar el dhcp y activar la posibilidad de utilizar IPs estáticas. Hiciera lo que hiciera con el comando ipadm (sustituto de [...]]]></description>
			<content:encoded><![CDATA[<p>Lo reconozco, soy novato con Solaris y todavía estoy aprendiendo sus peculiaridades más allá de lo común con cualquier sistema Unix. En este caso, el primer problema que tuve fue a la hora de <strong>desactivar el dhcp y activar la posibilidad de utilizar IPs estáticas</strong>.</p>
<p>Hiciera lo que hiciera con el comando ipadm (sustituto de ifconfig) no me dejaba desactivar en la interfaz de red el DHCP. Tras un rato trasteando y buscando en google encontré una opción que permite <strong>desactivar nwam (NetWork Auto Magic, que configura la red de forma automática)</strong>, el responsable de esta asignación dinámica y activar la opción &#8216;por defecto&#8217; para la configuración de las interfaces.</p>
<p>Ante todo desconozco (de momento) si esta es la solución más óptima para hacerlo, pero desde luego es rápida y efectiva. Únicamente son dos pasos:</p>
<pre># pfexec svcadm enable physical:default
# pfexec svcadm disable physical:nwam</pre>
<p>Con svcadm activamos la opción default y desactivamos nwam. pfexec es algo así como el sudo de Solaris, ya hablaremos de él más adelante. Una vez realizado esto, ya podéis <a title="Configurar tarjetas de red en Oracle Solaris 11 con ipadm" href="http://rm-rf.es/configurar-tarjetas-de-red-en-oracle-solaris-11-con-ipadm/">configurar ips estáticas en Oracle Solaris 11 con ipadm</a>.</p>
<h4  class="related_post_title">También te puede interesar:</h4><ul class="related_post"><li><a href="http://rm-rf.es/introduccion-a-smf-service-management-facility-en-solaris/" title="Introducción a SMF (Service Management Facility) en Solaris">Introducción a SMF (Service Management Facility) en Solaris</a></li><li><a href="http://rm-rf.es/stub-start-error-en-oracle-iplanet-web-server-php-fastcgi/" title="Stub Start Error en Oracle iPlanet Web Server: PHP + FastCGI">Stub Start Error en Oracle iPlanet Web Server: PHP + FastCGI</a></li><li><a href="http://rm-rf.es/configurar-php-fastcgi-en-oracle-iplanet-web-server/" title="Configurar PHP + FastCGI en Oracle iPlanet Web Server">Configurar PHP + FastCGI en Oracle iPlanet Web Server</a></li><li><a href="http://rm-rf.es/gestionar-el-storage-en-solaris-con-zfs-y-zpool/" title="Gestionar el storage en Solaris con zfs y zpool">Gestionar el storage en Solaris con zfs y zpool</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://rm-rf.es/oracle-solaris-open-solaris-dhcp-ips-estaticas-y-nwam/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cómo instalar y gestionar paquetes en Oracle Solaris (pkg)</title>
		<link>http://rm-rf.es/como-instalar-y-gestionar-paquetes-en-oracle-solaris-pkg/</link>
		<comments>http://rm-rf.es/como-instalar-y-gestionar-paquetes-en-oracle-solaris-pkg/#comments</comments>
		<pubDate>Sun, 25 Sep 2011 18:56:39 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Unix]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[solaris]]></category>

		<guid isPermaLink="false">http://rm-rf.es/?p=2259</guid>
		<description><![CDATA[Sigo explorando el sistema Oracle Solaris Express, tras su instalación y configuración de la red vamos a ver la utilización del gestor/repositorio de paquetes que incorpora, pkg. La filosofía es similar al apt en Debian o yum en RHEL, así que vamos a ver unos cuantos ejemplos de instalación, eliminación, actualización de paquetes, etc. Buscar [...]]]></description>
			<content:encoded><![CDATA[<p><img class="size-full wp-image-2255" title="Oracle Solaris" src="http://rm-rf.es/wp-content/uploads/2011/09/Oracle_Solaris_logo.png" alt="Oracle Solaris" width="252" height="122" align="right" />Sigo explorando el sistema <strong>Oracle Solaris Express</strong>, tras su <a title="Cómo instalar Oracle Solaris 11 Express" href="http://rm-rf.es/como-instalar-oracle-solaris-11-express/">instalación</a> y <a title="Configurar tarjetas de red en Oracle Solaris 11 con ipadm" href="http://rm-rf.es/configurar-tarjetas-de-red-en-oracle-solaris-11-con-ipadm/">configuración de la red</a> vamos a ver la utilización del gestor/repositorio de paquetes que incorpora, <strong>pkg</strong>.</p>
<p>La filosofía es similar al apt en Debian o yum en RHEL, así que vamos a ver unos cuantos ejemplos de instalación, eliminación, actualización de paquetes, etc.</p>
<h3>Buscar un paquete</h3>
<p>La sintaxis a utilizar es la siguiente:</p>
<pre># pkg search &lt;paquete&gt;</pre>
<p>Si por ejemplo quisiéramos buscar el servidor web <a title="Instalación y configuración de Lighttpd con PHP + FastCGI" href="http://rm-rf.es/instalacion-y-configuracion-de-lighttpd-con-php-fastcgi/">Lighttpd</a> podríamos buscar las versiones disponibles así:</p>
<pre># pkg search lighttpd
INDEX ACTION VALUE PACKAGE
description set Lighttpd Web Server pkg:/web/server/lighttpd-14@1.4.23-0.151.0.1
pkg.description set The Lighttpd Web Server (1.4.23) pkg:/web/server/lighttpd-14@1.4.23-0.151.0.1
pkg.summary set Lighttpd Web Server pkg:/web/server/lighttpd-14@1.4.23-0.151.0.1
basename dir etc/lighttpd pkg:/web/server/lighttpd-14@1.4.23-0.151.0.1
basename dir usr/lighttpd pkg:/web/server/lighttpd-14@1.4.23-0.151.0.1
basename dir var/lighttpd pkg:/web/server/lighttpd-14@1.4.23-0.151.0.1
basename file etc/security/auth_attr.d/lighttpd pkg:/web/server/lighttpd-14@1.4.23-0.151.0.1
basename file etc/security/prof_attr.d/lighttpd pkg:/web/server/lighttpd-14@1.4.23-0.151.0.1
basename file usr/lighttpd/1.4/sbin/lighttpd pkg:/web/server/lighttpd-14@1.4.23-0.151.0.1
pkg.fmri set solaris/web/server/lighttpd pkg:/web/server/lighttpd@1.4.23-0.134</pre>
<p>También podemos <strong>buscar en un repositorio determinado</strong> con el parámetro -s:</p>
<pre># pkg search -s http://pkg.repo.com/ lighttpd</pre>
<p>O utilizar las cláusula <strong>AND y OR para encadenar consultas y/o utilizar comodines</strong>:</p>
<pre># pkg search lighttpd AND htt*d OR apache</pre>
<h3>Ver la información de un paquete</h3>
<p>Para ver toda la información de un paquete usaremos el parámetro info seguido del paquete a consultar:</p>
<pre># pkg info pkg://solaris/web/server/lighttpd-14@1.4.23-0.151.0.1
          Name: web/server/lighttpd-14
       Summary: Lighttpd Web Server
   Description: The Lighttpd Web Server (1.4.23)
      Category: Web Services/Application and Web Servers
         State: Not installed
     Publisher: solaris
       Version: 1.4.23
 Build Release: 5.11
        Branch: 0.151.0.1
Packaging Date:  5 de noviembre de 2010 06:22:12
          Size: 794.78 kB
          FMRI: pkg://solaris/web/server/lighttpd-14@1.4.23,5.11-0.151.0.1:20101105T062212Z</pre>
<h3>Instalación de un paquete</h3>
<p>La instalación es sencilla, como en cualquier gestor de paquetes:</p>
<pre># pkg install &lt;paquete&gt;</pre>
<p>Vamos a instalar una de las versiones de lighttpd encontradas antes:</p>
<pre># pkg install pkg:/web/server/lighttpd-14@1.4.23-0.151.0.1
Packages to install: 2
Create boot environment: No
Services to restart: 1
DOWNLOAD PKGS FILES XFER (MB)
Completed 2/2 52/52 4.5/4.5

PHASE ACTIONS
Install Phase 143/143

PHASE ITEMS
Package State Update Phase 2/2
Image State Update Phase 2/2</pre>
<p>Como véis, a la hora de instalar un paquete se puede <strong>especificar la versión exacta</strong> a instalar de todas las disponibles, y también el &#8220;<strong>publisher</strong>&#8221; del cual la queremos instalar. Si quisieramos instalarla desde otro repositorio/publisher lo especificaríamos del siguiente modo, donde repo-mirror.com es el publisher.:</p>
<pre># pkg install pkg://repo-mirror.com/test/paquete-solaris</pre>
<h3>Simular la instalación de un paquete</h3>
<p>Pasando los <strong>parámetros -nv a install</strong> podemos ver lo que se instalaría en el sistema sin necesidad de hacerlo:</p>
<pre># pkg install -nv &lt;paquete&gt;</pre>
<pre># pkg install -nv pkg:/system/management/webmin@1.510-0.151.0.1
               Packages to install:     1
           Create boot environment:    No
               Services to restart:     1
              Rebuild boot archive:    No
Changed fmris:
  None -&gt; pkg://solaris/system/management/webmin@1.510,5.11-0.151.0.1:20101105T061636Z
Services:
  restart_fmri: svc:/system/manifest-import:default</pre>
<h3>Actualizar un paquete</h3>
<p>A la hora de actualizar un paquete se puede usar tanto la orden install como update:</p>
<pre># pkg update &lt;paquete&gt;
# pkg install &lt;paquete&gt;</pre>
<h3>Verificar la instalación de un paquete</h3>
<p>Una vez realizada una instalación podemos verificar si todo se ha realizado de forma correcta, si el paquete se ha instalado bien, busqueda de errores, etc. Para ello utilizamos el parámetro <strong>verify</strong>. Con el parámetro -v vemos toda la información y con -q únicamente los errores:</p>
<pre># pkg verify -v pkg:/web/server/lighttpd-14@1.4.23-0.151.0.1
Verifying: PACKAGE                                             STATUS
pkg://solaris/web/server/lighttpd-14                    OK</pre>
<h3>Arreglar fallos en paquetes instalados</h3>
<p>En caso de haber recibido algún error en el punto mencionado anteriormente (<em>verify</em>), podemos tratar de arreglarlo mediante la siguiente orden:</p>
<pre>pkg fix --accept &lt;paquete&gt;</pre>
<h3>Desinstalar un paquete</h3>
<p>Muy sencillo:</p>
<pre>pkg uninstall &lt;paquete&gt;</pre>
<p>Vamos a desinstalar el servidor web lighttpd instalado anteriormente:</p>
<pre># pkg uninstall pkg://solaris/web/server/lighttpd-14@1.4.23-0.151.
                Packages to remove:     1
           Create boot environment:    No
               Services to restart:     1
PHASE                                        ACTIONS
Removal Phase                                  1/104
Warning - directory //var/lighttpd/1.4/logs not empty or not expected during operation - contents preserved in /var/pkg/lost+found/var/lighttpd/1.4/logs-20110925T204323Z

Warning - directory //var/lighttpd/1.4/docroot not empty or not expected during operation - contents preserved in /var/pkg/lost+found/var/lighttpd/1.4/docroot-20110925T204323Z
Removal Phase                                104/104

PHASE                                          ITEMS
Package State Update Phase                       1/1
Package Cache Update Phase                       1/1
Image State Update Phase                         2/2</pre>
<h3>Ver el contenido de un paquete</h3>
<p>Siempre es útil conocer el contenido del paquete a instalar para saber con exactitud que es lo que vamos a instalar en nuestro sistema y donde. Si queremos, podemos especificar que nos indique el path, el tamaño de cada fichero, etc:</p>
<pre># pkg contents -r -o pkg.size,path pkg://solaris/web/server/lighttpd-14@1.4.23-0.151.0.1
PKG.SIZE PATH
  1503
    1503
         etc
         etc/lighttpd
         etc/lighttpd/1.4
         etc/lighttpd/1.4/conf.d
    1934 etc/lighttpd/1.4/conf.d/fcgi-php.conf
    1105 etc/lighttpd/1.4/conf.d/ssl.conf
   11497 etc/lighttpd/1.4/lighttpd.conf
         etc/security
....
....
....
   11696 usr/lighttpd/1.4/lib/mod_extforward.so</pre>
<h3>Visualizar el historial de acciones realizadas con pkg</h3>
<p>Podemos ver un registro de las acciones realizadas:</p>
<pre># pkg history
TIME                OPERATION                 CLIENT          OUTCOME
2010-11-05T16:14:56 purge-history             pkg             Succeeded
2011-09-22T18:41:16 uninstall                 pkg             Succeeded
2011-09-22T18:41:37 uninstall                 pkg             Succeeded
2011-09-22T18:41:53 set-property              pkg             Succeeded
2011-09-22T18:42:03 set-property              pkg             Succeeded
2011-09-25T10:21:01 uninstall                 pkg             Succeeded
2011-09-25T17:05:22 refresh-publishers        pkg             Succeeded
2011-09-25T17:05:22 install                   pkg             Failed (Bad Request)
2011-09-25T17:12:25 refresh-publishers        pkg             Succeeded</pre>
<p>Y para eliminar este registro:</p>
<pre># pkg purge-history</pre>
<p>Espero que os haya sido de utilidad esta guía de iniciación a pkg en Oracle Solaris, seguiré profundizando en los secretos de este sistema en próximos artículos.</p>
<h4  class="related_post_title">También te puede interesar:</h4><ul class="related_post"><li><a href="http://rm-rf.es/introduccion-a-smf-service-management-facility-en-solaris/" title="Introducción a SMF (Service Management Facility) en Solaris">Introducción a SMF (Service Management Facility) en Solaris</a></li><li><a href="http://rm-rf.es/stub-start-error-en-oracle-iplanet-web-server-php-fastcgi/" title="Stub Start Error en Oracle iPlanet Web Server: PHP + FastCGI">Stub Start Error en Oracle iPlanet Web Server: PHP + FastCGI</a></li><li><a href="http://rm-rf.es/configurar-php-fastcgi-en-oracle-iplanet-web-server/" title="Configurar PHP + FastCGI en Oracle iPlanet Web Server">Configurar PHP + FastCGI en Oracle iPlanet Web Server</a></li><li><a href="http://rm-rf.es/gestionar-el-storage-en-solaris-con-zfs-y-zpool/" title="Gestionar el storage en Solaris con zfs y zpool">Gestionar el storage en Solaris con zfs y zpool</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://rm-rf.es/como-instalar-y-gestionar-paquetes-en-oracle-solaris-pkg/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Configurar tarjetas de red en Oracle Solaris 11 con ipadm</title>
		<link>http://rm-rf.es/configurar-tarjetas-de-red-en-oracle-solaris-11-con-ipadm/</link>
		<comments>http://rm-rf.es/configurar-tarjetas-de-red-en-oracle-solaris-11-con-ipadm/#comments</comments>
		<pubDate>Sun, 25 Sep 2011 14:47:18 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Unix]]></category>
		<category><![CDATA[interfaz red]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[solaris]]></category>

		<guid isPermaLink="false">http://rm-rf.es/?p=2254</guid>
		<description><![CDATA[En el sistema Oracle Solaris 11 Express tenemos la posibilidad de utilizar un nuevo comando para realizar tareas de configuración y mantenimiento de nuestras interfaces de red. Este comando puede sustituir al ya conocido por todos ifconfig, se trata de ipadm. Vamos a ver como haríamos para configurar una IP estática en nuestro sistema para [...]]]></description>
			<content:encoded><![CDATA[<p><img class="size-full wp-image-2255" title="Oracle Solaris" src="http://rm-rf.es/wp-content/uploads/2011/09/Oracle_Solaris_logo.png" alt="Oracle Solaris" width="252" height="122" align="right" />En el sistema <strong>Oracle Solaris 11 Express</strong> tenemos la posibilidad de utilizar un nuevo comando para realizar tareas de <strong>configuración y mantenimiento de nuestras interfaces de red</strong>. Este comando puede sustituir al ya conocido por todos <strong>ifconfig</strong>, se trata de <strong>ipadm</strong>.</p>
<p>Vamos a ver como haríamos para configurar una IP estática en nuestro sistema para la interfaz de red e1000g0. Una IP dentro del rango 192.168.0.0/24 y con puerta de enlace 192.168.1.1.</p>
<p>Lo primero que podemos hacer es echar un vistazo a lo que ya tenemos configurado, en este caso únicamente las interfaces locales, con show-if vemos el estado de las interfaces y con show-addr el estado de las direcciones asignadas:</p>
<pre># ipadm  show-if
IFNAME     STATE    CURRENT      PERSISTENT
lo0        ok       -m-v------46 ---
# ipadm  show-addr
ADDROBJ           TYPE     STATE        ADDR
lo0/v4            static   ok           127.0.0.1/8
lo0/v6            static   ok           ::1/128</pre>
<p>Bien, lo primero que debemos hacer es &#8216;dar de alta&#8217; nuestra interfaz, activarla. Para ello utilizaremos el parámetro <strong>create-if</strong>:</p>
<p>Una vez creada, vemos con show-if que efectivamente ya figura, aunque de momento está caída:</p>
<pre># ipadm show-if e1000g0
IFNAME     STATE    CURRENT      PERSISTENT
e1000g0    down     bm--------46 -46</pre>
<p>Procedemos a asignar ya una IP estática y máscara a la interfaz, en este caso la 192.168.1.100, con máscara /24 y tipo ipv4:</p>
<pre># ipadm create-addr -T static -a 192.168.1.100/24 e1000g0/v4</pre>
<p>Ahora podemos verificar, ya sea con ifconfig como con ipadm que la IP ha sido configurada correctamente:</p>
<pre># ifconfig e1000g0
e1000g0: flags=1000843 mtu 1500 index 2
        inet 192.168.1.100 netmask ffffff00 broadcast 192.168.1.255
        ether 8:0:27:30:43:df 

# ipadm show-addr e1000g0/v4
ADDROBJ           TYPE     STATE        ADDR
e1000g0/v4        static   ok           192.168.1.100/24</pre>
<p>Efectivamente, tenemos conectividad con otros nodos de la red:</p>
<pre># ping 192.168.1.128
192.168.1.128 is alive</pre>
<p>Sólo nos queda configurar el enrutado y los servidores DNS para tener la red configurada de forma correcta:</p>
<pre># route -p add default 192.168.0.1
add net default: gateway 192.168.0.1
add persistent net default: gateway 192.168.0.1

Verificamos la tabla de rutas con el comando netstat:</pre>
<pre># netstat -r

Routing Table: IPv4
  Destination           Gateway           Flags  Ref     Use     Interface
-------------------- -------------------- ----- ----- ---------- ---------
default              192.168.1.1          UG        1          0
solaris              solaris              UH        2         24 lo0
192.168.1.0          192.168.1.100        U         4        369 e1000g0   

Routing Table: IPv6
  Destination/Mask            Gateway                   Flags Ref   Use    If
--------------------------- --------------------------- ----- --- ------- -----
solaris                     solaris                     UH      2       0 lo0</pre>
<p>Las DNS las añadiríamos en el <a title="Cómo cambiar los servidores DNS desde línea de comandos" href="http://rm-rf.es/como-cambiar-servidores-dns-desde-linea-comandos/">fichero /etc/resolv.conf</a> como en cualquier sistema Unix. También verificaríamos que estas dos entradas del fichero <strong>/etc/nsswitch.conf</strong> tienen añadida la opción dns:</p>
<pre>
hosts:      files dns
ipnodes:    files dns
</pre>
<h4  class="related_post_title">También te puede interesar:</h4><ul class="related_post"><li><a href="http://rm-rf.es/introduccion-a-smf-service-management-facility-en-solaris/" title="Introducción a SMF (Service Management Facility) en Solaris">Introducción a SMF (Service Management Facility) en Solaris</a></li><li><a href="http://rm-rf.es/stub-start-error-en-oracle-iplanet-web-server-php-fastcgi/" title="Stub Start Error en Oracle iPlanet Web Server: PHP + FastCGI">Stub Start Error en Oracle iPlanet Web Server: PHP + FastCGI</a></li><li><a href="http://rm-rf.es/configurar-php-fastcgi-en-oracle-iplanet-web-server/" title="Configurar PHP + FastCGI en Oracle iPlanet Web Server">Configurar PHP + FastCGI en Oracle iPlanet Web Server</a></li><li><a href="http://rm-rf.es/gestionar-el-storage-en-solaris-con-zfs-y-zpool/" title="Gestionar el storage en Solaris con zfs y zpool">Gestionar el storage en Solaris con zfs y zpool</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://rm-rf.es/configurar-tarjetas-de-red-en-oracle-solaris-11-con-ipadm/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cómo instalar Oracle Solaris 11 Express</title>
		<link>http://rm-rf.es/como-instalar-oracle-solaris-11-express/</link>
		<comments>http://rm-rf.es/como-instalar-oracle-solaris-11-express/#comments</comments>
		<pubDate>Thu, 22 Sep 2011 16:00:57 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Manuales]]></category>
		<category><![CDATA[Unix]]></category>
		<category><![CDATA[Vídeos]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[solaris]]></category>

		<guid isPermaLink="false">http://rm-rf.es/?p=2239</guid>
		<description><![CDATA[Hoy vamos a ver lo sencillo que resulta instalar Oracle Solaris 11 Express 2010.11 tanto en una máquina virtual como en un equipo físico. Lo primero que tenemos que hacer es descargar la imagen de instalación correspondiente desde este enlace del sitio web de Oracle (es necesario registro). En mi caso, como es habitual he [...]]]></description>
			<content:encoded><![CDATA[<p>Hoy vamos a ver lo sencillo que resulta <strong>instalar Oracle Solaris 11 Express 2010.11</strong> tanto en una máquina virtual como en un equipo físico. Lo primero que tenemos que hacer es descargar la imagen de instalación correspondiente desde <a href="http://www.oracle.com/technetwork/server-storage/solaris11/downloads/index.html" target="_blank">este enlace del sitio web de Oracle</a> (es necesario registro). En mi caso, como es habitual he utilizado la versión de <strong>instalación en modo texto para x86</strong>.</p>
<p>Vamos a ello, arrancamos el equipo con un CD con la imagen ISO grabada y empezamos la instalación. Seleccionamos el tipo de teclado, en nuestro caso &#8217;39&#8242; (español):</p>
<p><img class="size-full wp-image-2240" title="solaris_001" src="http://rm-rf.es/wp-content/uploads/2011/09/solaris_001.jpeg" alt="" width="545" height="126" /></p>
<p>Ahora toca elegir el idioma, en mi caso selecciono inglés ya que prefiero instalar los sistemas en inglés que en español, sobre todo porque a la hora de buscar documentación y errores hay mucha más información:</p>
<p><img class="size-full wp-image-2241" title="solaris_002" src="http://rm-rf.es/wp-content/uploads/2011/09/solaris_002.jpeg" alt="" width="645" height="193" /></p>
<p>Comienza la instalación de Oracle Solaris, elegimos &#8217;1&#8242; para empezar:</p>
<p><img class="size-full wp-image-2242" title="solaris_003" src="http://rm-rf.es/wp-content/uploads/2011/09/solaris_003.jpeg" alt="" width="509" height="148" /></p>
<p>Tras la pantalla de bienvenida, empezamos con la configuración de discos y particiones. Primero toca elegir el disco sobre el que hacer la instalación y después la estructura de particiones. En este caso es un disco virtual sobre Virtualbox, así que elegimos el único disco disponible y usamos todo el disco para instalar el sistema.</p>
<p><img class="size-full wp-image-2243" style="border: 1px solid black;" title="solaris_004" src="http://rm-rf.es/wp-content/uploads/2011/09/solaris_004.jpeg" alt="" width="591" height="331" /></p>
<p><img class="size-full wp-image-2244" style="border: 1px solid black;" title="solaris_005" src="http://rm-rf.es/wp-content/uploads/2011/09/solaris_005.jpeg" alt="" width="575" height="303" /></p>
<p>Ahora <strong>introducimos el nombre de la máquina (hostname) y especificamos si deseamos que la configuración de red sea automática</strong> o si preferimos realizarla de forma manual posteriormente:</p>
<p><img class="size-full wp-image-2245" style="border: 1px solid black;" title="solaris_006" src="http://rm-rf.es/wp-content/uploads/2011/09/solaris_006.jpeg" alt="" width="589" height="215" /></p>
<p>Establecemos la<strong> configuración regional</strong> del equipo, fecha, etc:</p>
<p><img class="size-full wp-image-2246" style="border: 1px solid black;" title="solaris_007" src="http://rm-rf.es/wp-content/uploads/2011/09/solaris_007.jpeg" alt="" width="444" height="249" /></p>
<p>Llega el momento de asignar una <strong>clave al usuario root y la creación de una cuenta de usuario</strong> extra:</p>
<p><img class="size-full wp-image-2247" style="border: 1px solid black;" title="solaris_008" src="http://rm-rf.es/wp-content/uploads/2011/09/solaris_008.jpeg" alt="" width="629" height="244" /></p>
<p>Antes de comenzar la instalación, podemos ver un resumen de las opciones configuradas y elegir cambiar alguna de ellas volviendo atrás (F3):</p>
<p><img class="size-full wp-image-2248" style="border: 1px solid black;" title="solaris_009" src="http://rm-rf.es/wp-content/uploads/2011/09/solaris_009.jpeg" alt="" width="582" height="347" /></p>
<p>Cuando todo esté correcto, presionamos F2 y la instalación comenzará:</p>
<p><img class="size-full wp-image-2249" style="border: 1px solid black;" title="solaris_010" src="http://rm-rf.es/wp-content/uploads/2011/09/solaris_010.jpeg" alt="" width="549" height="176" /></p>
<p>Una vez finalizada la instalación sólo nos queda presionar F8 para hacer un reboot y ya podemos comenzar a disfrutar de nuestro sistema Oracle Solaris:</p>
<pre>alex@solaris:~$ uname -a
SunOS solaris 5.11 snv_151a i86pc i386 i86pc</pre>
<p>En las próximas entradas empezaremos a ver cómo configurar las interfaces de red, la instalación de paquetes y una visión general del sistema.</p>
<h4  class="related_post_title">También te puede interesar:</h4><ul class="related_post"><li><a href="http://rm-rf.es/introduccion-a-smf-service-management-facility-en-solaris/" title="Introducción a SMF (Service Management Facility) en Solaris">Introducción a SMF (Service Management Facility) en Solaris</a></li><li><a href="http://rm-rf.es/stub-start-error-en-oracle-iplanet-web-server-php-fastcgi/" title="Stub Start Error en Oracle iPlanet Web Server: PHP + FastCGI">Stub Start Error en Oracle iPlanet Web Server: PHP + FastCGI</a></li><li><a href="http://rm-rf.es/configurar-php-fastcgi-en-oracle-iplanet-web-server/" title="Configurar PHP + FastCGI en Oracle iPlanet Web Server">Configurar PHP + FastCGI en Oracle iPlanet Web Server</a></li><li><a href="http://rm-rf.es/gestionar-el-storage-en-solaris-con-zfs-y-zpool/" title="Gestionar el storage en Solaris con zfs y zpool">Gestionar el storage en Solaris con zfs y zpool</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://rm-rf.es/como-instalar-oracle-solaris-11-express/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Seguridad Unix con TCP Wrappers</title>
		<link>http://rm-rf.es/seguridad-unix-con-tcp-wrappers/</link>
		<comments>http://rm-rf.es/seguridad-unix-con-tcp-wrappers/#comments</comments>
		<pubDate>Mon, 05 Sep 2011 16:58:15 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Seguridad]]></category>
		<category><![CDATA[Unix]]></category>
		<category><![CDATA[hosts]]></category>
		<category><![CDATA[tcp]]></category>

		<guid isPermaLink="false">http://rm-rf.es/?p=2220</guid>
		<description><![CDATA[El otro día hablábamos sobre securizar un sistema Linux con iptables y en otro artículo encontrábamos un firewall basado en FreeBSD llamado pfSense. Hoy vamos a ver cómo securizar un sistema Unix (Linux, BSD&#8230;) a través de TCP Wrappers,  un buen complemento de iptables. La wikipedia lo define como: TCP Wrapper (&#8220;Envoltorio de TCP&#8221;) es [...]]]></description>
			<content:encoded><![CDATA[<p><img class="size-full wp-image-2221" style="margin-left: 20px; margin-right: 20px;" title="Seguridad Unix TCP Wrappers" src="http://rm-rf.es/wp-content/uploads/2011/09/seguridad.jpg" alt="Seguridad Unix TCP Wrappers" width="198" height="198" align="right" />El otro día hablábamos sobre <a title="Introducción a iptables" href="http://rm-rf.es/introduccion-a-iptables/">securizar un sistema Linux con iptables</a> y en otro artículo encontrábamos un <a title="pfSense: Firewall Open Source basado en FreeBSD" href="http://rm-rf.es/pfsense-firewall-open-source-basado-en-freebsd/">firewall basado en FreeBSD llamado pfSense</a>. Hoy vamos a ver <strong>cómo securizar un sistema Unix (Linux, BSD&#8230;) a través de TCP Wrappers</strong>,  un buen complemento de iptables. La wikipedia lo define como:</p>
<blockquote><p>TCP Wrapper (&#8220;Envoltorio de TCP&#8221;) es un sistema de red ACL que trabaja en terminales y que se usa para filtrar el acceso de red a servicios de protocolos de Internet que corren en sistemas operativos (tipo UNIX), como Linux o BSD. Permite que las direcciones IP, los nombres de terminales y/o respuestas de consultas ident de las terminales o subredes sean usadas como tokens sobre los cuales filtrar para propósitos de control de acceso.</p></blockquote>
<p>Bien, partimos de la base de que tenemos dos ficheros configurables, <strong>/etc/hosts.deny</strong> y <strong>/etc/hosts.allow</strong>. En ellos podemos <strong>especificar que IPs, hostnames o redes pueden acceder a determinados servicios</strong> del sistema. TCP Wrappers suele venir instalado por defecto en la mayoría de sistemas operativos Unix.</p>
<p>La sintaxis básica de estos ficheros es la siguiente:</p>
<pre>daemon : dirección : acción
ó
daemon : dirección</pre>
<p>Daemon es el demonio/servicio a filtrar, dirección es la <strong>dirección, host o subred</strong> y acción si denegamos o aceptamos el acceso. Para <strong>saber si un servicio puede ser configurado para filtrado vía TCP Wrappers</strong> hay que saber si su binario está enlazado con la biblioteca libwrap.a. Para ello:</p>
<pre># ldd /usr/sbin/sshd | grep libwrap.so
	libwrap.so.0 =&gt; /lib/libwrap.so.0 (0x001ce000)</pre>
<p>Si la salida es NULL el demonio no está compilado con TCP Wrappers y no funcionará. Si devuelve algo como lo anterior sí que lo está. Vamos a ver entonces unos cuantos ejemplos:</p>
<h3>Permitir acceso ssh únicamente a unas IPs</h3>
<p><strong>/etc/hosts.allow</strong> Permitimos acceso a las IPs 192.168.0.111, 192.168.0.112, 192.168.0.113.</p>
<pre>sshd: 192.168.0.111 192.168.0.112 192.168.0.113</pre>
<p><strong>/etc/hosts.deny</strong> Denegamos al resto.</p>
<pre>sshd: ALL</pre>
<h3>Bloquear todo excepto lo declarado en /etc/hosts.allow</h3>
<p><strong>/etc/hosts.allow</strong></p>
<pre>sshd: 192.168.0.111 192.168.0.112 192.168.0.113</pre>
<p><strong>/etc/hosts.deny</strong> Denegamos acceso al resto de servicios excepto SSH a las Ips indicadas. La máquina quedará blindada excepto el acceso SSH a las Ips permitidas:</p>
<pre>ALL: ALL</pre>
<h3>Permitir también el uso de sendmail a una subred y unos hosts concretos</h3>
<p><strong>/etc/hosts.allow</strong> Permitimos acceso a las IPs 192.168.0.111, 192.168.0.112, 192.168.0.113.</p>
<pre>sshd: 192.168.0.111 192.168.0.112 192.168.0.113
sendmail: 10.0.0.0/24 test.com prueba.com</pre>
<p><strong>/etc/hosts.deny</strong></p>
<pre>ALL: ALL</pre>
<h3>Permitir todo y bloquear el acceso total a una única IP</h3>
<p><strong>/etc/hosts.allow</strong></p>
<pre>ALL: ALL</pre>
<p><strong>/etc/hosts.deny</strong></p>
<pre>ALL: 192.168.0.115</pre>
<h3>Filtrar y ejecutar un comando tras un intento de acceso</h3>
<p><strong>/etc/hosts.allow</strong></p>
<pre>ALL: ALL</pre>
<p><strong>/etc/hosts.deny</strong></p>
<pre>ALL: 192,168.0.115 \
   : spawn (/bin/echo %a desde %h intento acceder a %d &gt;&gt; \
    /var/log/connections.log) \
   : deny</pre>
<p>Aquí ya depende todo si queremos aplicar una política restrictiva desde el principio, bloquear todo y a partir de ahí comenzar a abrir servicios a determinadas Ips, rangos o hosts o si por el contrario queremos dejar todo abierto y cerrar servicios a determinadas Ips,etc.</p>
<p>Si os resulta interesante, disponéis de más información en el <a href="http://www.freebsd.org/doc/es/books/handbook/tcpwrappers.html" target="_blank">handbook de freebsd</a> o en <a href="http://linux.about.com/od/commands/l/blcmdl5_hostsde.htm" target="_blank">Linux about.com</a>. Esta ha sido una mera introducción a TCP Wrappers</p>
<h4  class="related_post_title">También te puede interesar:</h4><ul class="related_post"><li><a href="http://rm-rf.es/encriptar-un-filesystem-con-luks-y-cryptsetup/" title="Encriptar un filesystem con LUKS y cryptsetup">Encriptar un filesystem con LUKS y cryptsetup</a></li><li><a href="http://rm-rf.es/10-trucos-para-securizar-php/" title="10 trucos para securizar PHP">10 trucos para securizar PHP</a></li><li><a href="http://rm-rf.es/comando-chage-tiempo-de-vida-de-claves-y-usuarios-en-gnulinux/" title="Comando chage: tiempo de vida de claves y usuarios en GNU/Linux">Comando chage: tiempo de vida de claves y usuarios en GNU/Linux</a></li><li><a href="http://rm-rf.es/permisos-especiales-setuid-setgid-sticky-bit/" title="Permisos especiales (setuid, setgid, sticky bit)">Permisos especiales (setuid, setgid, sticky bit)</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://rm-rf.es/seguridad-unix-con-tcp-wrappers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>visudo, vipw y vigr: editando ficheros críticos en Linux de forma segura</title>
		<link>http://rm-rf.es/visudo-vipw-y-vigr-editando-ficheros-criticos-en-linux-de-forma-segura/</link>
		<comments>http://rm-rf.es/visudo-vipw-y-vigr-editando-ficheros-criticos-en-linux-de-forma-segura/#comments</comments>
		<pubDate>Wed, 13 Jul 2011 14:57:11 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Unix]]></category>
		<category><![CDATA[contraseñas]]></category>
		<category><![CDATA[passwd]]></category>
		<category><![CDATA[shadow]]></category>

		<guid isPermaLink="false">http://rm-rf.es/?p=2006</guid>
		<description><![CDATA[Siguiendo con el tema tratado en el anterior post sobre como encontrar fallos e inconsistencias en los ficheros passwd y shadow vamos a ver como a la hora de editar ciertos ficheros críticos del sistema debemos asegurarnos de hacerlo de forma correcta. Ficheros como /etc/passwd, /etc/group, /etc/shadow o /etc/sudoers pueden editarse &#8216;al vuelo&#8217; con un [...]]]></description>
			<content:encoded><![CDATA[<p><img align="right" class="size-full wp-image-2008" style="margin-left: 13px; margin-right: 13px;" title="visudo" src="http://rm-rf.es/wp-content/uploads/2011/07/visudo.jpg" alt="visudo" width="200" height="65" />Siguiendo con el tema tratado en el anterior post sobre <a title="Cómo encontrar fallos e inconsistencias en los ficheros passwd y shadow" href="http://rm-rf.es/como-encontrar-fallos-e-inconsistencias-en-los-ficheros-passwd-y-shadow/">como encontrar fallos e inconsistencias en los ficheros passwd y shadow</a> vamos a ver como a la hora de editar ciertos ficheros críticos del sistema debemos asegurarnos de hacerlo de forma correcta. Ficheros como <strong>/etc/passwd</strong>, <strong>/etc/group</strong>, <strong>/etc/shadow</strong> o <strong>/etc/sudoers</strong> pueden editarse &#8216;al vuelo&#8217; con un editor normal (gedit, vi, vim, nano&#8230;) pero corremos el peligro de que mientras lo estamos editando sus datos se hayan actualizado y se pierdan los cambios.</p>
<h3>visudo</h3>
<p>El comando visudo permite modificar en modo seguro el fichero /etc/sudoers. La diferencia de editarlo con visudo a hacerlo con cualquier otro editor es que <strong>visudo bloquea el fichero para evitar ediciones sumultaneas</strong>. Otro punto a favor de editar sudoers de esta forma es que en el momento de guardar los cambios <strong>realiza un chequeo del fichero en busca de fallos de sintaxis</strong> y todo tipo de errores, y en caso de encontrarlos no nos permitirá guardar el fichero y nos indicará el número de línea donde se encuentra el error, permitiendonos editar el ficehro o salir sin guardar.</p>
<pre># visudo</pre>
<h3>vipw y vigr</h3>
<p>Los comandos vipw y vigr permiten editar los ficheros /etc/passwd y /etc/group respectivamente de forma segura. Si quisieramos editar el fichero /etc/shadow y /etc/gshadow deberíamos utilizar el parámetro -s.</p>
<p>Cabe decir que es recomendable evitar la manipulación directa de estos ficheros y que es conveniente usar los comandos correspondientes para gestión de usuarios: <a title="Crear, eliminar y modificar usuarios de sistema en Unix" href="http://rm-rf.es/crear-eliminar-y-modificar-usuarios-de-sistema-en-unix/">crear, eliminar y modificar usuarios de sistema en Unix</a>. Si fuera estrictamente necesario, la modificación de passwd y shadow sería del siguiente modo:</p>
<p>Primero editamos el fichero /etc/passwd:</p>
<pre># vipw
Ha modificado /etc/passwd.
Necesitará modificar /etc/shadow por consistencia.
Use la orden «vipw -s» para hacerlo.</pre>
<p>Y posteriormente editamos el fichero shadow y gshadow:</p>
<pre># vipw -s
vipw: /etc/shadow no está cambiado</pre>
<p>Si no quisieramos editar el fichero shadow a mano podemos decirle al sistema que lo actualice de forma automática con el comando <strong>pwconv</strong>:</p>
<pre># pwconv</pre>
<p>Y lo mismo cuando editamos grupos con vigr, para evitar la modificación manual de gshadow podemos usar grpconv:</p>
<pre># grpconv</pre>
<p>Al igual que con visudo, vigr y vipw bloquean los ficheros para evitar que puedan ser editados a la vez. Para evitar esto se crea un fichero temporal /etc/ptmp y se deshabilita la escritura del mismo.</p>
<p>Os recomiendo revisar las páginas man de los comandos para encontrar información más detallada sobre el funcionamiento y posibilidades de cada uno de ellos.</p>
<h4  class="related_post_title">También te puede interesar:</h4><ul class="related_post"><li><a href="http://rm-rf.es/como-encontrar-fallos-e-inconsistencias-en-los-ficheros-passwd-y-shadow/" title="Cómo encontrar fallos e inconsistencias en los ficheros passwd y shadow">Cómo encontrar fallos e inconsistencias en los ficheros passwd y shadow</a></li><li><a href="http://rm-rf.es/crear-eliminar-y-modificar-usuarios-de-sistema-en-unix/" title="Crear, eliminar y modificar usuarios de sistema en Unix">Crear, eliminar y modificar usuarios de sistema en Unix</a></li><li><a href="http://rm-rf.es/securizar-la-gestion-de-claves-en-linux-mediante-pam/" title="Securizar la gestión de claves en Linux mediante PAM">Securizar la gestión de claves en Linux mediante PAM</a></li><li><a href="http://rm-rf.es/generador-claves-password-contrasenas-aleatorios/" title="Generador de passwords aleatorios">Generador de passwords aleatorios</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://rm-rf.es/visudo-vipw-y-vigr-editando-ficheros-criticos-en-linux-de-forma-segura/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

