Guía del Estudiante CE 1.0a "Comunidad OpenSolaris Hispano"

Embed Size (px)

Citation preview

  • 8/14/2019 Gua del Estudiante CE 1.0a "Comunidad OpenSolaris Hispano"

    1/193

    Gua del Estudiante CE 1.0aCommunity EditionComunidad OpenSolaris Hispanoes.opensolaris.org

    USE IMPROVE EVANGELIZE

  • 8/14/2019 Gua del Estudiante CE 1.0a "Comunidad OpenSolaris Hispano"

    2/193

    Comunidad OpenSolaris Hispano

    Licencia

    Esta obra est bajo una licencia de Creative Commons. Para veruna copia de esta licencia, visitehttp://creativecommons.org/licenses/by-sa/2.5/ o enve una carta aCreative Commons, 559 Nathan Abbott Way, Stanford, California 94305,USA.

    Usted es libre de:

    - Copiar, distribuir y comunicar pblicamente la obra y hacer obrasderivadas.

    Bajo las condiciones siguientes:

    Reconocimiento. Debe reconocer los crditos de la obra de lamanera especificada por el autor o el licenciador (pero no de unamanera que sugiera que tiene su apoyo o apoyan el uso que hace desu obra).

    Compartir bajo la misma licencia. Si altera o transforma estaobra, o genera una obra derivada, slo puede distribuir la obragenerada bajo una licencia idntica a sta.

    Al reutilizar o distribuir la obra, tiene que dejar bien claro los trminos de la licencia de esta obra.

    Alguna de estas condiciones puede no aplicarse si se obtiene el permiso del titular de los

    derechos de autor

    Nada en esta licencia menoscaba o restringe los derechos morales del autor.

    Referencias

    Todos los nombres propios de programas, sistemas operativos, equiposhardware, etc., que aparecen en este libro son marcas registradas desus respectivas compaas u organizaciones.

    2

  • 8/14/2019 Gua del Estudiante CE 1.0a "Comunidad OpenSolaris Hispano"

    3/193

    Comunidad OpenSolaris Hispano

    Changelog

    Bajo el modelo de licenciamiento actual de tipo CC (CreativeCommons) y con las condiciones de Reconocimiento y Comparticin deesta licencia ya citadas anteriormente, este apartado pretende ser unaapuesta por la colaboracin y ademas un sistema de control deversiones / actualizaciones de cada uno de los nuevos anexos que sepueden aadir de forma libre y abierta.

    Actualmente el estado de las diferentes contribuciones aldocumento, es el siguiente:

    David Galan (http://davidgalan.opensolarisblog.org):- Introduccin- Instalacin- Arranque y Parada

    - Service Management Facility (SMF)- Gestion de Usuarios- Procesos y seales- Gestion de discos- Zettabyte File Systems (ZFS)- Zonas/Contenedores y BrandZ

    Juan Jose Mora (http://jjmora.es):- Xen Virtual Machine (xVM)

    Juan Jose Mora (http://jjmora.es) & Roger Jordan (http://rjblog.es):- Navegando por el /Proc- Rendimiento y Tunning

    Iban Nieto (http://inieto.wordpress.com):- Introduccin a DTRACE

    Victor M. Fernndez (http://vfernandezg.blogspot.com):- Role Based Access Control (RBAC)- Solaris Volume Manager (SVM)- IPFilter (IPF)- Image Packaging System (IPS)

    3

  • 8/14/2019 Gua del Estudiante CE 1.0a "Comunidad OpenSolaris Hispano"

    4/193

    Comunidad OpenSolaris Hispano

    OpenSolaris

    OpenSolaris nace en Junio de 2005 y es el resultado de laliberacin de la mayor parte del cdigo fuente de Solaris pasando aser un proyecto de software libre. Desde este nuevo enfoque nacennuevas distribuciones que aportan mejoras al sistema adems de

    enriquecerlas con ms software.

    Distribuciones OpenSolaris

    De las diferentes aportaciones realizadas por comunidades deusuarios o desarrolladores nacen las siguientes distribuciones:

    Solaris 10: es la versin oficial de Sun Microsystems disponiblepara arquitectura Sparc y x86. Es estable y robusta estandodiseada para entornos de produccin donde se necesita

    estabilidad. Es gratuita y podemos descargarla del sitio weboficial de Sun.

    Solaris Express Community Edition: su nombre en clave es nevadaes una distribucin binaria que se actualiza cada dos viernes, esuna versin que puede no ser compatible con otras versiones yaque incorpora muchos cambios.

    Solaris Express Developer Edition: contiene todas las nuevasincorporaciones de funcionalidades y software que darn lugar ala prxima versin estable de Solaris por lo tanto esta

    recomendada para entornos de desarrollo o preproduccin. Seactualiza cada tres o cuatro meses.

    4

    http://www.sun.es/http://es.opensolaris.org/os/downloads/sol_ex_cd/http://www.sun.com/software/solaris/solaris-express/get.jsphttp://es.opensolaris.org/os/downloads/sol_ex_cd/http://www.sun.com/software/solaris/solaris-express/get.jsphttp://www.sun.es/
  • 8/14/2019 Gua del Estudiante CE 1.0a "Comunidad OpenSolaris Hispano"

    5/193

    Comunidad OpenSolaris Hispano

    OpenSolaris Developer Preview: mas conocida como OpenSolaris2008.05 es una distribucin en un solo CD que combina livecd einstalacin en disco. OpenSolaris 2008.05 esta en sus primerasfases de desarrollo. Las versiones actualmente liberadas no sontotalmente estables. Incluye un kit para crear tu propia

    distribucin y es instalable en una llave USB. Nexenta OS: es una distribucin totalmente independiente a Sun y

    esta basado en GNU libre y de cdigo abierto, integra el kernelde OpenSolaris y un conjunto de aplicaciones Open Source. Es unadistribucin que comparte la filosofa de a Ubuntu.

    Belenix: LiveCD basado en OpenSolaris que esta dando pasos enconvertirse en una distribucin completa. Aporta un conjunto desoftware OpenSource. Incluye scripts para crear tu propio livecdy se puede instalar y arrancar desde una llave USB.

    MartUX mBE :es un DVDlive para SPARC y x64/x86 y esta cargado depaquetes de CommunitySoftWare.

    Shillix: es una distro basada en OpenSolaris y es LiveCD paraarquitecturas x86,x64 y EM64T. Esta basada en Nevada Build 17.

    OpenGrok

    OpenGrok es el motor de bsqueda de cdigo fuente, con OpnGrokpodemos descargar el fuente de OpenSolaris y examinar su cdigo ademasde poder hacer modificaciones para realizar modificaciones al ya

    existente.Para entrar en OpenGrok entre en la direccin:http://cvs.opensolaris.org/source

    Las comunidades

    Las comunidades son puntos de encuentro dentro de OpenSolaris.orgdonde puedes encontrar otras personas con las mismas inquietudes sobreuna tecnologa o apliacin. Hay comunidades alrededor de ZFS, DTrace,SMF, Virtualizacin etc..Algunas de las comunidades:

    Teora e investigacin:http://www.opensolaris.org/os/community/edu

    DTrace:http://www.opensolaris.org/os/community/dtrace ZFS : http://www.opensolaris.org/os/community/zfs Redes:http://www.opensolaris.org/os/community/networking Zonas:http://www.opensolaris.org/os/community/zones Documentacin:

    http://www.opensolaris.org/os/community/documentation Controladores de dispositivos:

    http://www.opensolaris.org/os/community/device_drivers Herramientas:http://www.opensolaris.org/os/community/tools

    5

    http://es.opensolaris.org/os/project/indiana/resources/getit/http://es.opensolaris.org/os/project/indiana/resources/getit/http://www.gnusolaris.org/gswikihttp://www.gnusolaris.org/gswikihttp://www.genunix.org/distributions/belenix_site/belenix_home.htmlhttp://www.genunix.org/distributions/belenix_site/belenix_home.htmlhttp://www.martux.org/http://www.martux.org/http://www.opensolaris.org/os/community/eduhttp://www.opensolaris.org/os/community/dtracehttp://www.opensolaris.org/os/community/zfshttp://www.opensolaris.org/os/community/networkinghttp://www.opensolaris.org/os/community/zoneshttp://www.opensolaris.org/os/community/documentationhttp://www.opensolaris.org/os/community/device_drivershttp://www.opensolaris.org/os/community/toolshttp://es.opensolaris.org/os/project/indiana/resources/getit/http://www.gnusolaris.org/gswikihttp://www.genunix.org/distributions/belenix_site/belenix_home.htmlhttp://www.martux.org/http://www.opensolaris.org/os/community/eduhttp://www.opensolaris.org/os/community/dtracehttp://www.opensolaris.org/os/community/zfshttp://www.opensolaris.org/os/community/networkinghttp://www.opensolaris.org/os/community/zoneshttp://www.opensolaris.org/os/community/documentationhttp://www.opensolaris.org/os/community/device_drivershttp://www.opensolaris.org/os/community/tools
  • 8/14/2019 Gua del Estudiante CE 1.0a "Comunidad OpenSolaris Hispano"

    6/193

    Comunidad OpenSolaris Hispano

    Impulsores:http://www.opensolaris.org/os/community/advocacy Seguridad:http://www.opensolaris.org/os/community/security Rendimiento:http://www.opensolaris.org/os/community/performance Almacenamiento:http://www.opensolaris.org/os/community/storage

    Proyectos

    Los proyectos alojados en www.opensolaris.org albergan lascontribuciones de cdigo, documentos, grficos o productos de variosautores. Los proyectos disponen de espacio para alojar cdigo.

    Participa

    Puedes participar en la comunidad OpenSolaris Hispano de formasdiferentes y da igual tu nivel de experiencia con OpenSolaris.

    Si eres principiante puedes desarrollar documentos yalimentar la Wiki:http://www.genunix.org/wiki/index.php/OpenSolarisHispanocon el conocimiento que vas aprendiendo, tu aportacin sermuy til para otros recin llegados.

    Si eres desarrollador puedes participar bien proponiendo un

    proyecto o unirte a un proyecto de la comunidad paraparticipar en su desarrollo.

    Si eres un usuario experimentado puedes participarimpartiendo charlas, desarrollando documentacin,alimentado la Wiki y ayudando a otros usuarios.

    6

    http://www.opensolaris.org/os/community/advocacyhttp://www.opensolaris.org/os/community/securityhttp://www.opensolaris.org/os/community/performancehttp://www.opensolaris.org/os/community/storagehttp://www.opensolaris.org/http://www.genunix.org/wiki/index.php/OpenSolarisHispanohttp://www.opensolaris.org/os/community/advocacyhttp://www.opensolaris.org/os/community/securityhttp://www.opensolaris.org/os/community/performancehttp://www.opensolaris.org/os/community/storagehttp://www.opensolaris.org/http://www.genunix.org/wiki/index.php/OpenSolarisHispano
  • 8/14/2019 Gua del Estudiante CE 1.0a "Comunidad OpenSolaris Hispano"

    7/193

    Comunidad OpenSolaris Hispano

    Instalando OpenSolaris2008.05

    Novedades de OpenSolarisOpenSolaris 2008.05 incorpora importantes novedades sobre susantecesores inmediatos. Veamos algunas de ellas:

    Solaris Service Manager es una nueva infraestructura que viene asustituir al clsico inicio secuencial de Unix System V. Estanueva infraestructura permite arrancar los servicios de formaparalela acorde a sus relaciones de dependencia. Permite aladministrador observar, deshabilitar, arrancar y parar de unamanera sencilla y eficiente.

    Solaris Containers es una tecnologa de virtualizacin quepermite la ejecucin de servicios y aplicaciones de formatotalmente aisladas.

    ZFS (Solaris Zeta File System) nuevo sistema de archivos de128bits. Su capacidad de almacenamientos es practicanteilimitada. Su implantacin y administracin comparada con lossistemas anteriores muy sencilla. Implementa un nuevo modelo deACL sencillo de administrar utilizando los comandos chmod y ls.

    DTrace es una potente herramienta que permite a losadministradores observar procesos del ncleo y de los usuarios.Se compone de ms de 30.000 sensores que aportan informacinsobre las aplicaciones asociadas a estos.

    Image Packaging System es el nuevo sistema de paquetes deOpenSolaris 2008.05 que permite la instalacin de paquetes derepositorios de una forma sencilla resolviendo problemas comodependencias. IPS instalar, actualizar y eliminar aplicaciones.

    7

  • 8/14/2019 Gua del Estudiante CE 1.0a "Comunidad OpenSolaris Hispano"

    8/193

    Comunidad OpenSolaris Hispano

    Slim Install un nuevo instalador que solo necesita de seis pasospara instalar OpenSolaris 2008.05 .

    Sun xVM Hypervisor (basado en el trabajo de la comunidad Xenpermitiendo correr Solaris, GNU/Linux y Windows en mquinasvirtuales)

    Requisitos de Instalacin

    Antes de comenzar la instalacin debemos comprobar si la maquinadestino cumple con los requisitos demandados por OpenSolaris2008.05 . En la siguiente tabla podemos ver dichos requisitosmnimos:

    Arquitectura X86 Mnimo necesariosMemoria 512MB recomendados.

    Espacio en disco 10GB

    Iniciando OpenSolaris 2008.05

    El proceso de instalacin de OpenSolaris 2008.05 esta basado enSlim Install que nos permitir instalar el sistema de forma sencilla.Resumimos la instalacin en:

    Arranque del LiveCD de OpenSolaris 2008.05 .

    Arrancar el instalador Slim Install e inicia la instalacin.

    Reiniciar.

    Iniciando el LiveCD

    Comenzamos el proceso de instalacin arrancando desde CD con elLiveCD de OpenSolaris 2008.05 , lo primero que veremos ser el gestorde arranque GRUB.

    8

  • 8/14/2019 Gua del Estudiante CE 1.0a "Comunidad OpenSolaris Hispano"

    9/193

    Comunidad OpenSolaris Hispano

    OpenSolaris 2008.05 comenzara a iniciarse y solicitar el idioma delteclado y del escritorio como podemos ver en las siguientes capturas:

    9

  • 8/14/2019 Gua del Estudiante CE 1.0a "Comunidad OpenSolaris Hispano"

    10/193

    Comunidad OpenSolaris Hispano

    Despus de seleccionar el idioma continua el arranque del sistemay procede a arrancar el escritorio GNOME donde nos muestra lalicencia.

    Una vez aceptada la licencia veremos el escritorio donde tenemosel sistema totalmente operativo en modo live, ahora tenemos queiniciar la instalacin. Para ello arrancamos el instaladoridentificado en el escritorio como Install OpenSolaris.

    10

  • 8/14/2019 Gua del Estudiante CE 1.0a "Comunidad OpenSolaris Hispano"

    11/193

    Comunidad OpenSolaris Hispano

    Ecritorio Live-CD OpenSolaris 2008.05

    Al arrancar nos mostrar el proceso de instalacin que consisteen un volcado a disco de todo el sistema. Los pasos del instaladorson:

    1. Pantalla de bienvenida.2. Seleccionar el disco o particin donde vamos a instalar.3. Seleccionar la zona horaria.

    4. Introducimos la contrasea, creamos un usuario y damos nombre alsistema.5. Inicia la instalacin.6. Finaliza y reinicio.

    Veamos una captura de cada uno de los pasos:

    11

  • 8/14/2019 Gua del Estudiante CE 1.0a "Comunidad OpenSolaris Hispano"

    12/193

    Comunidad OpenSolaris Hispano

    Pantalla de bienvenida, seleccionamos instalar o realizar un Upgrade.

    Elegimos en que disco queremos instalar o usar una particin yaexistente.

    12

  • 8/14/2019 Gua del Estudiante CE 1.0a "Comunidad OpenSolaris Hispano"

    13/193

    Comunidad OpenSolaris Hispano

    Seleccionamos nuestra zona horaria, fecha y hora.

    Seleccionamos el entorno regional.

    13

  • 8/14/2019 Gua del Estudiante CE 1.0a "Comunidad OpenSolaris Hispano"

    14/193

    Comunidad OpenSolaris Hispano

    Creamos un usuario de sistema, damos contrasea al root y establecemosel nombre de la mquina.

    Pantalla que muestra informacin de las opciones elegidas.

    14

  • 8/14/2019 Gua del Estudiante CE 1.0a "Comunidad OpenSolaris Hispano"

    15/193

  • 8/14/2019 Gua del Estudiante CE 1.0a "Comunidad OpenSolaris Hispano"

    16/193

    Comunidad OpenSolaris Hispano

    Inicia la primera carga de los servicios SMF (nuevo sistema dearranque por dependencias).

    Lo siguiente que veremos ser la pantalla de bienvenida dondehacemos login con el usuario que hemos creado durante el proceso deinstalacin. Despus de introducir el usuario y contrasea tenemosdisponible el sistema con el escritorio GNOME.

    Con la instalacin base dispones de tecnologas como Zonas,BrandZ, SMF, ZFS y DTrace y xVM Hypervisor (basado en XEN).

    16

  • 8/14/2019 Gua del Estudiante CE 1.0a "Comunidad OpenSolaris Hispano"

    17/193

    Comunidad OpenSolaris Hispano

    Arranque y ParadaIntroduccin

    En este capitulo veremos el proceso arranque y parada deOpenSolaris 2008.05 , los comandos necesarios para reiniciar y pararel sistema

    Parada y reinicio del sistema

    Cuando finaliza el arranque de la mquina se encuentra en elnivel de ejecucin multi-user-server o run level 3. En ocasiones hay

    que reiniciar el sistema para realizar tareas de mantenimiento comoaadir hardware. A continuacin veremos las diferentes formas dereiniciar y parar el sistema.

    Reinicio de la mquina:

    Si deseamos realizar un reinicio del sistema y queremos emitirun mensaje personalizado avisando a los usuarios usaremos el comandoshutdown que permite los siguientes parmetros:

    shotdown i niveldeejecucin g segundosdeespera mensaje de aviso

    Ejemplo del uso de shotdown para reiniciar:

    17

  • 8/14/2019 Gua del Estudiante CE 1.0a "Comunidad OpenSolaris Hispano"

    18/193

    Comunidad OpenSolaris Hispano

    #/usr/sbin/shutdown -i 6 g 360 Aviso a los usuarios. El sistema se reiniciar en60

    segundos. Cierre sus aplicaciones.

    Con i indicamos el nivel de ejecucin, con gdamos 360 segundosa los usuarios para cerrar sus aplicaciones y ficheros. Cuandofinalicen los 360 segundos el sistema solicita la confirmacin delreinicio al administrador:

    # Do you want to continue? (y or n):

    Para reiniciar el sistema tambin podemos ejecutar la ordenreboot:

    # /usr/sbin/reboot

    El comando reboot ejecuta una parada inmediata e inicia elsistema en el nivel 3 de ejecucin ahora llamado multi-user-server.

    Parada de la mquina:

    Para parar el sistema de forma ordenada y despus realizar unapagado elctrico de la mquina ejecutamos:

    #/usr/sbin/shutdown -i 0 g 360 Aviso a los usuarios. El sistema se reiniciar en60

    segundos. Cierre sus aplicaciones.

    Si la ejecutamos el comando en una mquina SPARC se quedara en laOpenBoot momento en el que podemos realizar el apagado elctricoejecutando desde la OpenBoot el comando:

    ok power-off

    Si es una mquina x86 mostrara el siguiente mensaje:

    Svcd.startd: The system is down.Syncing file systemsdonePres any key to reboot.

    Podemos pulsar cualquier tecla y reiniciar o realizardirectamente el apagado elctrico de la mquina.

    Si necesitramos parar la mquina de forma urgente podemosutilizar el comando halt que realizara una parada inmediata noordenada:

    # /usr/sbin/halt

    Para una parada urgente no ordenada pero con parada elctrica:

    # /usr/sbin/poweroff

    18

  • 8/14/2019 Gua del Estudiante CE 1.0a "Comunidad OpenSolaris Hispano"

    19/193

    Comunidad OpenSolaris Hispano

    Para reiniciar el sistema podemos ejecutar la orden reboot queantes proceder al reinicio actualiza el superbloque:

    # /usr/sbin/reboot

    Gestor de arranque GRUB (Grand Unified Bootloader)

    Introduccin a GRUB

    GRUB es el nuevo gestor de arranque para arquitecturas x86 queaade nuevas posibilidades de arranque a OpenSolaris 2008.05 . GRUB seinicia en el MBR ocupando tan solo 512 bytes y este pequeo cdigocomienza la carga del resto de GRUB ubicado en el disco.

    No podemos comparar GRUB con la OpenBoot para arquitecturas SPARC

    ya que la OBP se basa en hardware y software, pero sin duda viene amejorar las posibilidades de Solaris y su integracin con otrossistemas operativos como Linux. GRUB es un gran conocido dentro de lacomunidad Linux por lo que facilita aun mas el acercamiento deadministradores Linux a Solaris. GRUB nos ofrece tres interfacesdiferentes para el uso y configuracin de GRUB:

    Interfaz de men: es la primera que vemos cuando arrancaGRUB y muestra una lista con todas las opciones disponiblespara elegir con que sistema queremos arrancar. (ver figura4.4)

    Interfaz de edicin: Permite la edicin de las opciones dearranque establecidas para cada sistema operativoconfigurado. Un ejemplo es cambiar de forma temporal elkernel para realizar pruebas. (ver figura 4.3)

    Interfaz de lnea de comandos: es una pequea shell quepermite configurar GRUB, realizare pruebas de dispositivos,red etc..

    eprom: OpenSolaris se integra con GRUB con el comando epromal igual que lo hace con la OpenBoot en SPARC.

    Opciones de arranque

    Cuando arrancamos la mquina lo primero que nos muestra GRUB esla Interfaz de men donde podemos elegir el sistema operativo. Estainterfaz se basa en un fichero de configuracin que permite aadirnuevos sistemas o modificar los ya existentes. El fichero deconfiguracin se encuentra en /boot/grub/menu.lst .

    Cuando finalizamos la instalacin de Solaris el archivo queda dela siguiente forma:

    #---------- ADDED BY BOOTADM - DO NOT EDIT ----------

    title Solaris 11 11/06 s10x_u3wos_10 X86root (hd0,0,a)kernel /platform/i86pc/multibootmodule /platform/i86pc/boot_archive

    19

  • 8/14/2019 Gua del Estudiante CE 1.0a "Comunidad OpenSolaris Hispano"

    20/193

    Comunidad OpenSolaris Hispano

    #---------------------END BOOTADM--------------------#---------- ADDED BY BOOTADM - DO NOT EDIT ----------title Solaris failsaferoot (hd0,0,a)kernel /boot/multiboot kernel/unix -smodule /boot/x86.miniroot-safe

    #---------------------END BOOTADM--------------------

    Podemos establecer el fichero /boot/grub/menu.lst los siguientesparmetros:

    default: contiene un valor numrico que se corresponde conla posicin en la lista que muestra GRUB para seleccionaruna opcin de arranque. Comienza con el valor 0, paraarrancar por defecto con la opcin failsafe estableceramosel valor a 1.

    timeout: son los segundos que esperara para que el usuarioelega una opcin de arranque, si no interviene el usuario

    arrancara el sistema establecido por defecto con el valordefault . Con valor -1 espera indefinidamente.

    Para cambiar estos valores editamos el fichero menu.lst concualquier editor de texto y cambiamos el valor en la lnea dondeaparece default o timeout:

    ## default menu entry to bootdefault 0## menu timeout in second before default OS is booted# set to -1 to wait for user input

    timeout 10

    20

  • 8/14/2019 Gua del Estudiante CE 1.0a "Comunidad OpenSolaris Hispano"

    21/193

    Comunidad OpenSolaris Hispano

    Service Management

    Facility (SMF)Introduccin a SMF

    OpenSolaris 2008.05 incorpora un nuevo sistema de gestin delarranque que ofrece nuevas posibilidades y optimiza el arranque delsistema, este nuevo componente se llama SMF (Service ManagementFacility) y forma parte de una nueva infraestructura que viene asustituir al clsico inicio secuencial de Unix System V. Esta nuevainfraestructura permite arrancar los servicios de forma paralelaacorde a sus relaciones de dependencia. Una vez arrancado el sistemael administrador puede observar, deshabilitar, arrancar y pararservicios de una manera sencilla y eficiente.

    Caractersticas de SMF:

    Ofrece los mecanismos para establecer relaciones dedependencia entre servicios. Un servicio no arranca hastaque estn correctamente arrancadas sus dependencias.

    Repositorio que contiene toda la informacin referente a la

    configuracin del servicio, modos de arranque, parada,reinicio y el estado en el que se encuentra. Log con informacin de eventos de cada servicio.

    21

  • 8/14/2019 Gua del Estudiante CE 1.0a "Comunidad OpenSolaris Hispano"

    22/193

    Comunidad OpenSolaris Hispano

    Cambios de niveles de ejecucin a mono usuario, red,mantenimiento etc..

    Beneficios de SMF:

    Los servicios al ser objetos pueden ser vistos ygestionados con sencillos comandos de administracin.

    Se puede definir que SMF monitorice un proceso delservicio y tomar acciones si detecta que el proceso amuerto o hay un fallo hardware.

    Delegar en otros usuarios el poder arrancar o pararservicios de esta forma no necesitamos utilidades comosudo o la cuenta de root.

    Un servicio definido en SMF no tiene por que estarnecesariamente asociado a un proceso que se este ejecutando en elsistema, un servicio puede ser el estado de un dispositivo, de unatarjeta de red o de un sistema de ficheros.

    Repositorio (Repository SMF)

    Es la pieza principal y en el se almacena la configuracin decada servicio tanto en local como en memoria. Tambin contiene elprocedimiento para parar, arrancar y verificar un servicio. Cuando unservicio se ha iniciado correctamente en el arranque del sistema esguardada una foto de la configuracin de dicho servicio con elobjetivo de saber cual es la configuracin correcta en caso de tenerque restaurar el servicio.

    SMF Restarters: svc.startd

    Es el proceso que permite reiniciar un servicio en caso de fallo,para ello consulta el repositorio para identificar el mtodo definidopara reiniciar el servicio y hacerlo respetando las dependenciasestablecidas. Si hemos definido dependencias para un servicio y una deestas falla SMF Restarters solucionar el problema con la dependenciapara restaurar el servicio.

    SMF Service Instances

    Un servicio puede estar compuesto a su vez por otra serie deservicios a los que se denominan instancias. Un ejemplo seria unservidor web Apache con el servicio web escuchando por el puerto 80,otro seguro por el 443 y un tercero por el 8080. Para gestionar elservicio deberamos crear el servicio web con tres instancias.

    Componentes de un servicio SMF

    22

  • 8/14/2019 Gua del Estudiante CE 1.0a "Comunidad OpenSolaris Hispano"

    23/193

    Comunidad OpenSolaris Hispano

    Un servicio en SMF esta formado por un conjunto de componentesque interactan entre si. Veamos cada uno de estos componentes:

    SMF manifiest: es un fichero XML en el que se definen lascaractersticas de un servicio o una instancia del servicio. Los

    ficheros XML con las propiedades de los servicios se almacenan en/var/svc/manifest. Estos ficheros son cargados en el repositorio SMF.Methods: los mtodos son usados por el restarter para interactuarcon el servicio y puede ser un fichero ejecutable: un script o unapalabra clave. Se utilizan para definir los mtodos de arranque,parada o reinicio de un servicio. Los mtodos son almacenados en/lib/svc/method.Service Log Files: es un servicio que escribe un log con todo losdatos sucesos sobre un servicio, los logs se encuentran en/var/svc/log.Service Identifiers : cada servicio y cada instancia de servicio

    tienen un nombre con el que identificarse con Fault ManagementResource Identifier (FMRI) en el que se especifica como actuar encaso de fallo en el sistema.

    Estados de un servicio SMF

    Los servicios pueden tener varios estados en los que podemos versi el servicio esta parado, arrancado, degradado o en mantenimiento.Anteriormente se utilizaba el comando ps efpara ver si un servicio

    estaba arrancado, ahora podemos utilizar los comandos de SMF para verel estado del servicio adems de poder continuar hacindolo con elcomando ps efpara buscar el proceso.Estados en los se puede encontrar un servicio SMF:

    online: la instancia del servicio esta disponible y se estaejecutando correctamente.

    offline: la instancia del servicio esta disponible pero no estaejecutandose.

    disabled: la instancia del servicio no esta disponible y no estaejecutndose.

    maintenance: la instancia del servicio tiene un error y estasiendo resuelto por el administrador.

    degraded: la instancia del servicio esta disponible pero estafuncionando al lmite de su capacidad.

    uninitialized: este es el estado inicial de todos los serviciosantes de iniciar su ejecucin.

    legacy_run:este estado solo se utiliza para guardar lacompatibilidad con los viejos niveles de arranque y nos ndicaque el estado en el que se encuentran. Los niveles de arranquesolo pueden ser observados con SMF son se pueden editar.

    DependenciasCuando definimos un servicio podemos definir dependencias,estableciendo que no arranque el servidor Apache hasta que no estearrancado el sistema en multiusuario (run level 3) y la bbdd MYSQL

    23

  • 8/14/2019 Gua del Estudiante CE 1.0a "Comunidad OpenSolaris Hispano"

    24/193

    Comunidad OpenSolaris Hispano

    iniciada. Para cada servicio podemos establecer desde ninguna avarias dependencias.

    Veamos las propiedades que podemos definir para las dependencias: require_all: todos los servicios de la dependencia deben estar

    online (arrancados) antes de iniciar el servicio. require_any: es suficiente con que uno de los servicios de la

    dependencia se ejecute para que el servicio se inicie. optional_all: si los servicios de la dependencia estn

    disponibles y pueden ejecutarse deben estar online o degradedantes de la ejecucin del servicio. Si estn en mantenimiento elservicio no arrancara.

    exclude_all: significa que no todos los servicios de ladependencia deben estar corriendo para hincar el servicio.

    Proceso de arranque con SMF

    En arranque de Solaris se realiza como en versiones anteriores yel proceso init continua siendo el primer proceso del sistema leyendofichero /etc/initab.initab contiene la siguiente entrada:

    smf::sysinit:/lib/svc/bin/svc.startd >/dev/msglog 2/dev/msglog

  • 8/14/2019 Gua del Estudiante CE 1.0a "Comunidad OpenSolaris Hispano"

    25/193

    Comunidad OpenSolaris Hispano

    Figura 3.1

    Milestone Services

    Con la llegada de SMF tambin se ha redefinido la forma de ponerla mquina en diferentes niveles de ejecucin. Los niveles deejecucin mas conocidos son sigle user y multi user. Ahora se lesdenomina milestone. Milestone no es ms que un servicio especial deSMF que agrupa las dependencias necesarias para establecer un nivelde ejecucin.

    Se han aadido dos nuevos niveles de ejecucin: none que noejecuta ningn servicio y all en el que se ejecutan todos losservicios disponibles.

    Las equivalencias al sistema tradicional son las reflejadas en lasiguiente tabla:

    SMF Milestone Run Level Run Level

    milestone single-user Smilestone multi-user 2milestone multi-user-server 3milestone all 3milestone none No

    existe

    Para pasar de un nivel de ejecucin a otro podemos realizarlo sinproblemas de la manera tradicional con el comando init y el nmero

    25

    boot

    Init (pid 1)

    init lee

    /etc/initta

    svc.startd svc.confif.d

    bbdd

    configuracin SMF

    svc:/platform

    svc:/site

    svc:/milestone

    svc:/s stem

  • 8/14/2019 Gua del Estudiante CE 1.0a "Comunidad OpenSolaris Hispano"

    26/193

    Comunidad OpenSolaris Hispano

    del nivel de ejecucin al que queremos pasar o con el comando svcadmde la siguiente forma:

    Pasar a single-user:# svcadm milestone single-user

    A multi-user

    # svcadm milestone multi-userA multi-user-server# svcadm milestone multi-user-server

    Para averiguar en que Runlevel esta ejecutndose el sistemalanzamos el siguiente comando:

    # svcprop svc:/system/svc/restarter:default | grep -i milestoneoptions_ovr/milestone astring svc:/milestone/multi-user-server:default

    Podemos ver que el sistema se encuentra en el nivel de ejecucin

    multi-user-server. Si la ejecucin del comando no muestra nada enpantalla significa que estemos en el nivel de ejecucin all.Un milestone es un servicio tiene definidas dependencias de otros

    servicios, por ejemplo el servicio multi-userdepende de los serviciosde red. Obervando las dependencias de cada nivel de ejecucin podemosaveriguar que servicios ejecuta el milestone multi-user.

    Para ello ejecutamos el comando svcs d servicio para ver susdependencias:Para ver las dependencias del milestone multi-user ejecutamos:

    bash-3.00# svcs -d milestone/multi-user

    STATE STIME FMRIdisabled 12:52:37 svc:/system/auditd:defaultdisabled 12:52:37 svc:/application/print/server:defaultdisabled 12:52:37 svc:/network/ntp:defaultdisabled 12:52:39 svc:/system/mdmonitor:defaultdisabled 12:52:39 svc:/system/rcap:defaultonline 12:52:42 svc:/milestone/name-services:defaultonline 12:52:54 svc:/system/rmtmpfiles:defaultonline 12:52:55 svc:/system/power:defaultonline 12:52:55 svc:/system/name-service-cache:defaultonline 12:53:01 svc:/milestone/single-user:defaultonline 12:53:04 svc:/system/filesystem/local:default

    online 12:53:04 svc:/system/cron:defaultonline 12:53:06 svc:/network/rpc/bind:defaultonline 12:53:09 svc:/platform/i86pc/kdmconfig:defaultonline 12:53:09 svc:/milestone/sysconfig:defaultonline 12:53:10 svc:/network/inetd:defaultonline 12:53:11 svc:/system/utmp:defaultonline 12:53:24 svc:/network/nfs/client:defaultonline 12:53:25 svc:/system/filesystem/autofs:defaultonline 12:53:26 svc:/system/system-log:defaultonline 12:53:26 svc:/system/system-log:defaultonline 12:53:26 svc:/network/smtp:sendmail

    Como se puede ver el nmero de servicios que ejecuta multi-server

    es muy superior al single-userque no requiere de tantos servicioscomo podemos ver en el ejemplo:

    bash-3.00# svcs -d milestone/single-user

    26

  • 8/14/2019 Gua del Estudiante CE 1.0a "Comunidad OpenSolaris Hispano"

    27/193

    Comunidad OpenSolaris Hispano

    STATE STIME FMRIdisabled 12:52:32 svc:/system/metainit:defaultonline 12:52:39 svc:/network/loopback:defaultonline 12:52:48 svc:/milestone/network:defaultonline 12:52:49 svc:/system/identity:node

    online 12:52:51 svc:/system/keymap:defaultonline 12:52:52 svc:/system/filesystem/minimal:defaultonline 12:52:54 svc:/system/cryptosvc:defaultonline 12:52:55 svc:/system/sysevent:defaultonline 12:52:56 svc:/milestone/devices:defaultonline 12:53:00 svc:/system/manifest-import:default

    Gestin de los servicios con SMF

    A continuacin vamos a ver los comandos que tiene SMF para lamonitorizar el estado de los servicios, obtener informacin de un

    servicio y como parar o arrancar servicios. El conjunto de comandosque nos permite la administracin de SMF son:

    svcs: Proporciona informacin sobre el estado de un servicio ysus dependencias:

    svcadm: Permite realizar acciones administrativas como cambiar elestado de un servicio.

    svccfg: Tiene la funcin de crear nuevos servicios a partir de unfichero xml y modificar las propiedades de un servicio.

    svcprop: Obtenemos y cambiamos valores de la bbdd sobre un

    servicio.

    Obtener informacin de los servicios (svcs)

    Los servicios SMF estn organizados en grupos con los siguientesnombres:

    Application: Contiene los servicios asociados con aplicaciones.Device: Usado para las dependenciasMilestone: Equivalente a los niveles de ejecucin SVR4

    Network: Todos los servicios del antiguo inetd.confPlatform: Servicios especficos de la plataforma.System: Servicios independientes de la plataformaSite: Sin uso, reservado para uso futuro.

    El siguiente ejemplo muestra el grupo al que pertenece elservicio de telnet:

    # svcs a | grep telnetdisabled Dec_28 svc:/network/telnet:default

    Como se puede observar pertenece a /network

    27

  • 8/14/2019 Gua del Estudiante CE 1.0a "Comunidad OpenSolaris Hispano"

    28/193

    Comunidad OpenSolaris Hispano

    Ver el estado de un servicio

    Para ver el estado todos los servicios recurrimos al comando svcsque en ejemplo lo ejecutamos con la opcin a para que muestre todoslos servicios independientemente de su estado.

    # svcs a

    STATE STIME FMRIlegacy_run 10:10:30 lrc:/etc/rcS_d/S50sk98sollegacy_run 10:10:31 lrc:/etc/rcS_d/S51installupdateslegacy_run 10:10:55 lrc:/etc/rc2_d/S10lulegacy_run 10:10:56 lrc:/etc/rc2_d/S20sysetuplegacy_run 10:10:56 lrc:/etc/rc2_d/S40llc2legacy_run 10:10:56 lrc:/etc/rc2_d/S42ncakmodlegacy_run 10:10:56 lrc:/etc/rc2_d/S47pppdlegacy_run 10:10:56 lrc:/etc/rc2_d/S70uucplegacy_run 10:10:56 lrc:/etc/rc2_d/S72autoinstall

    legacy_run 10:10:59 lrc:/etc/rc2_d/S73cachefs_daemonlegacy_run 10:10:59 lrc:/etc/rc2_d/S81dodatadm_udaplt..online 10:10:49 svc:/network/ftp:defaultonline 10:10:49 svc:/network/finger:defaultonline 10:10:50 svc:/network/ssh:defaultonline 10:10:50 svc:/system/dumpadm:defaultonline 10:10:51 svc:/system/system-log:defaultonline 10:10:51 svc:/network/login:rloginonline 10:10:51 svc:/network/shell:defaultonline 10:10:52 svc:/network/rpc-100235_1/rpc_ticotsord:defaultonline 10:10:53 svc:/network/smtp:sendmail

    En el ejemplo podemos observar el servicio legacy_run utilizadopara guardar la compatibilidad con las practicas administrativas deversiones anteriores de Solaris. Del servicio legacy_run solo sepuede consultar su estado y no podemos realizar cambios sobre el.

    Si aadimos un servicio de la forma tradicional con un script enel directorio ined.d y el enlace en el rc* correspondiente funcionaracon normalidad vindolo en el SMF como un servicio legacy_run .

    En OpenSolaris 2008.05 no es recomendable seguir utilizando elviejo sistema para aadir servicios al arranque debiendo utilizar SMF.

    Tambin podemos observar que los servicios tradicionales como ftpy ssh estn en estado online.

    Ver las dependencias de un servicio

    Para ver las dependencias de un servicio, es decir que serviciostienen que estar arrancados para que pueda ejecutarse utilizamos elcomando svcs con la opcin d.Veamos el ejemplo:

    # svcs -d svc:/network/http:apache2STATE STIME FMRIonline 10:10:12 svc:/milestone/network:defaultonline 10:10:33 svc:/system/filesystem/local:defaultonline 10:10:48 svc:/system/filesystem/autofs:default

    Figura 3.2

    28

  • 8/14/2019 Gua del Estudiante CE 1.0a "Comunidad OpenSolaris Hispano"

    29/193

    Comunidad OpenSolaris Hispano

    En el ejemplo de la figura 3.2 vemos que para que puedaejecutarse el servicio web Apache 2 necesitamos que estn levantadoslos servicios network, y filesystem.

    Procesos asociados a un servicio:

    Para averiguar que procesos estn asociados a un servicioejecutamos el comando svcs con la opcin p . El resultado de laejecuin produce la siguiente salida:# svcs -p svc:/network/smtp:sendmailSTATE STIME FMRIonline 10:10:53 svc:/network/smtp:sendmail

    10:10:54 334 sendmail10:10:54 341 sendmail

    Figura 3.3

    En el ejemplo de la figura 3.3 podemos ver los pid asociados alservicio sendmail aunque podemos averiguarlo tambien de la formatradicional con la ordenps -ef | grep sendmail.

    Obtener informacin detallada de un servicio

    SMF puede aportar informacin detallada de un servicio como sunombre, si esta habilitado, su propio estado y las dependencias.Ejecutamos svcs con el parmetro l :

    # svcs -l svc:/network/http:apache2fmri svc:/network/http:apache2nombre Apache 2 HTTP serverhabilitada Falsoestado disablednext_state nonestate_time Thu Dec 28 10:10:08 2006reiniciador svc:/system/svc/restarter:defaultdependency require_all/error svc:/milestone/network:default (online)dependency require_all/none svc:/system/filesystem/local:default (online)dependency optional_all/error svc:/system/filesystem/autofs:default (online)

    Diagnostico de fallos

    SMF con el comando svcs puede aportarnos informacin sobre lacausa de porque un servicio no puede arrancar, para ellos utilizamosel comando svcs con el parmetro x. Para este ejemplo hemosdeshabilitado manualmente el servicio de apache.Veamos el resultado del diagnostico:

    # svcs -x svc:/network/http:apache2svc:/network/http:apache2 (Apache 2 HTTP server)Estado: disabled desde Thu Dec 28 10:10:08 2006

    Motivo: Un administrador lo ha inhabilitado.Consulte: http://sun.com/msg/SMF-8000-05Consulte: httpd(8)

    Impacto: Este servicio no est funcionando.

    29

  • 8/14/2019 Gua del Estudiante CE 1.0a "Comunidad OpenSolaris Hispano"

    30/193

    Comunidad OpenSolaris Hispano

    La salida del comando nos indica que el servicio fue parado porun administrador, en que momento lo hizo y el impacto sobre elservicio.

    Tambin nos remite a una url de Sun donde se nos amplia

    informacin sobre la causa por la que no esta arrancado el servicio.Sea cual sea el error siempre nos dar una url para obtenerinformacin que nos ayude a diagnosticar y solucionar el problema.

    Cambios de estado de un servicio (svcadm).

    Parada de un servicio

    Para parar un servicio utilizamos el comando svcadm con losparmetros disable y t seguido del nombre de servicio:

    svcadm disable -t svc:/network/http:apache2

    Verificamos que ha parado con el comando svcs p el cual nosindicara que el proceso esta en disable y que no hay procesos deapache2 ejecutndose.El resultado es el siguiente:# svcs -p svc:/network/http:apache2

    STATE STIME FMRIdisabled 12:20:21 svc:/network/http:apache2

    ps -ef | grep -i apache2root 1549 1444 0 12:22:51 pts/4 0:00 grep -i apache2

    La opcin t estipula que es una para temporal si olvidamosponer el parmetro t en el prximo arranque de la mquina elservicio no arrancara quedando en disable.

    Arrancar un servicio

    Para arrancar un servicio utilizamos el comando svcadm con los

    parmetros enable y t seguido del nombre de servicio:# svcadm enable -t svc:/network/http:apache2

    Y verificamos que ha arrancado correctamente:

    ## svcs -p svc:/network/http:apache2STATE STIME FMRIonline 12:31:23 svc:/network/http:apache2

    12:31:23 1559 httpd12:31:24 1560 httpd12:31:24 1561 httpd

    12:31:24 1562 httpd12:31:24 1563 httpd12:31:24 1564 httpd

    Figura 3.3

    30

  • 8/14/2019 Gua del Estudiante CE 1.0a "Comunidad OpenSolaris Hispano"

    31/193

    Comunidad OpenSolaris Hispano

    Tal como podemos ver en la figura 3.3 el servicio ha arrancadocorrectamente y podemos ver todos los pid de los procesos enejecucin.

    Reiniciar un servicio

    Hasta el momento si queramos reiniciar un servicio como porejemplo ssh acudamos a ejecutar:

    /etc/init.d/sshd stop; /etc/init.d/sshd start

    Ahora ejecutamos el comando svcs con la opcin restart :# svcadm restart svc:/network/http:apache2

    Y verificamos que los procesos han cambiado de pid:

    # svcs -p svc:/network/http:apache2STATE STIME FMRIonline 12:37:27 svc:/network/http:apache2

    12:37:27 1577 httpd12:37:28 1578 httpd12:37:28 1579 httpd12:37:28 1580 httpd12:37:28 1581 httpd12:37:28 1582 httpd

    Ver la configuracin de un servicio

    Si deseamos saber los valores de las propiedades de un serviciodisponemos del comando svcprop que extrae dicha informacin delrepositorio. Como ejemplo vamos a averiguar que mtodo esta definidopara arrancar el servicio apache2.

    Ejecutamos primeramente el comando svcprop y el nombre delservicio para obtener una lista de las propiedades definidas:

    # svcprop svc:/network/http:apache2httpd/ssl boolean falsehttpd/stability astring Evolvingnetwork/entities fmri svc:/milestone/network:defaultnetwork/grouping astring require_all...general/entity_stability astring Evolvingstart/exec astring /lib/svc/method/http-apache2\ startstart/timeout_seconds count 60start/type astring methodstop/exec astring /lib/svc/method/http-apache2\ stopstop/timeout_seconds count 60stop/type astring methodrefresh/exec astring /lib/svc/method/http-apache2\ refreshrefresh/timeout_seconds count 60refresh/type

    31

  • 8/14/2019 Gua del Estudiante CE 1.0a "Comunidad OpenSolaris Hispano"

    32/193

    Comunidad OpenSolaris Hispano

    ..restarter/state_timestamp time 1167305847.133954000general_ovr/enabled boolean truerestarter_actions/restart integer

    Figura 3.4

    En el ejemplo de la figura 3.4 podemos ver una lista con todaslas propiedades del servicio, para nuestro ejemplo nos centramos en lalnea que pone:

    start/exec astring /lib/svc/method/http-apache2\ start

    Esta lnea muestra el fichero que ejecuta el arranque del apache2 que es /lib/svc/method/http-apache2 pasndole el parmetro start.Podemos ver el contenido del scritp realizando un more sobre/lib/svc/method/http-apache2.

    Si queremos obtener datos formateados sobre una de laspropiedades ejecutamos:

    svcprop p nombredelapropiedad nombredelservicio

    En la figura 3.5 muestra la informacin sobre los valores de lapropiedad start/exec y start/timeout_seconds .

    # svcprop -p start/exec svc:/network/http:apache2/lib/svc/method/http-apache2\ start

    # svcprop -p start/timeout_seconds svc:/network/http:apache260#

    Figura 3.5

    inetd como servicio SMF

    El proceso inetd ha sido migrado completamente como un servicioSMF, ya no es necesario editar el fichero /etc/inet/inetd.confparaestablecer valores o habilitar y deshabilitar servicio como telnet,

    ftp, tftp etc..Si deshabilitamos un servicio como telnet ya no es necesarioreiniciar con el comando kill el proceso inet.d.

    Ver servicios de inetd

    Para ver todos los servicios del proceso inetd y el estado en elque se encuentran ejecutamos el comando inetadm y pulsamos intro:

    # inetadm

    ENABLED STATE FMRIenabled online svc:/application/x11/xfs:defaultenabled online svc:/application/font/stfsloader:defaultenabled offline svc:/application/print/rfc1179:defaultenabled online svc:/network/rpc/mdcomm:default

    32

  • 8/14/2019 Gua del Estudiante CE 1.0a "Comunidad OpenSolaris Hispano"

    33/193

    Comunidad OpenSolaris Hispano

    enabled online svc:/network/rpc/meta:defaultenabled online svc:/network/rpc/metamed:defaultenabled online svc:/network/rpc/metamh:defaultenabled online svc:/network/rpc/gss:default..

    enabled online svc:/network/ftp:defaultdisabled disabled svc:/network/comsat:defaultenabled online svc:/network/finger:defaultdisabled disabled svc:/network/login:eklogindisabled disabled svc:/network/login:kloginenabled online svc:/network/login:rlogindisabled disabled svc:/network/shell:kshelldisabled disabled svc:/network/talk:default

    Deshabilitar un servicio inetd

    Al ser un servicio mas de SMF recurrimos al comando svcadm y elparmetro disable. Ejemplo para no permitir conexiones telnet:

    Con la opcin t se volver a habilitar el servicio al reiniciar lamquina:# svcadm disable t svc:/network/telnet:default

    Sin la opcin t el cambio es permanente:# svcadm disable svc:/network/telnet:default

    Ver el valor de un servicio inetd

    En versiones anteriores si queramos cambiar un valor al servicioftp editbamos la lnea y cambiamos los valores en el propio fichero.Con SMF es mas sencillo ya las propiedades estn almacenadas en elrepositorio. Antes de utilizar SMF editbamos la siguiente lnea deinetd.conf:

    ftp stream tcp6 nowait root /usr/sbin/in.ftpd in.ftpd -a

    Para conocer el valor que tiene un servicio ejecutamos el

    comando:inetadm l nombredelservicio

    Ejemplo de la ejecucin para ver los valores del servicio ftp:

    #inetadm -l ftp

    SCOPE NAME=VALUEname="ftp"endpoint_type="stream"proto="tcp6"isrpc=FALSE

    wait=FALSEexec="/usr/sbin/in.ftpd -a"user="root"

    default bind_addr=""

    33

  • 8/14/2019 Gua del Estudiante CE 1.0a "Comunidad OpenSolaris Hispano"

    34/193

    Comunidad OpenSolaris Hispano

    default bind_fail_max=-1default bind_fail_interval=-1default max_con_rate=-1default max_copies=-1default con_rate_offline=-1default failrate_cnt=40

    default failrate_interval=60default inherit_env=TRUEdefault tcp_trace=FALSEdefault tcp_wrappers=FALSE

    Cambiar un valor de un servicio inet.d

    Para cambiar un valor de los servicios inet.d utilizamos elcomando inetadm de la siguiente forma:

    inetadm m nombreservicio parametroacambiar=nuevovalor

    La ejecucin del comando para cambiar el valor wait=FALSEdelservicio ftp a valor wait=TRUEseria:

    inetadm -m ftp wait=TRUE

    y lo verificamos con:

    # inetadm -l ftpSCOPE NAME=VALUE

    name="ftp"endpoint_type="stream"proto="tcp6"isrpc=FALSEwait=TRUEexec="/usr/sbin/in.ftpd -a"user="root"

    default bind_addr=""default bind_fail_max=-1default bind_fail_interval=-1default max_con_rate=-1default max_copies=-1default con_rate_offline=-1

    default failrate_cnt=40default failrate_interval=60default inherit_env=TRUEdefault tcp_trace=FALSEdefault tcp_wrappers=FALSE

    Cambios en inetd.conf

    El fichero /etc/inet/inetd.conf no puede sufrir cambios ya quetoda la gestin recae sobre SMF pero en caso de producirse un cambiovoluntario o por una aplicacin el sistema nos alertaraen /adm/messages que el fichero ha sido modificado para que eladministrador determine su naturaleza.

    34

  • 8/14/2019 Gua del Estudiante CE 1.0a "Comunidad OpenSolaris Hispano"

    35/193

    Comunidad OpenSolaris Hispano

    Dec 28 17:11:11 aulaunix inetd[1737]: [ID 702911 daemon.warning] Configuration file/etc/inet/inetd.conf has been modified since inetconv was last run. "inetconv -i/etc/inet/inetd.conf" must be run to apply any changes to the SMF

    Convertir un servicio de inetd.conf a SMF

    En OpenSolaris 2008.05 se han migrado todos los demonios delfichero /etc/inet/inetd.conf, pero si necesitamos aadirposteriormente un servicio contamos con la utilidad inetconv.El procedimiento es el siguiente:

    1. Creamos los directorio temporales:a. /tmp/nuevoserviciob. /tmp/destinoXML

    2. Creamos en el directorio /tmp/nuevoservicio un fichero llamadomigracion.conf que contenga el nuevo demonio del servicio usandola sintaxis del fichero /etc/inetd.conf. Para nuestro ejemplo hemoscreado el fichero con la siguiente lnea:

    tftp dgram udp6 wait root /usr/sbin/in.tftpd in.tftpd-s /tftpboot

    3. Ejecutamos el comando:

    # inetconv -i /tmp/nuevoservicio/migracion.conf -n -o /tmp/destinoXML

    4. En el directorio /tmp/destinoXML encontraremos un nuevo fichero conextensin .XML al que le ha dado el nombre de tftp-udp6.xml para sercargado en el repositorio.

    5. Cargamos la nueva configuracin en el repositorio con el comandosvcconfig.

    Ejecutamos el comando:# svccfg import /tmp/destinoXML/tftp-udp6.xml

    Verificamos que ha sido cargado con:# svcs -a | grep -i tftponline 12:39:09 svc:/network/tftp/udp6:default

    Ya podemos gestionar el servicio svc:/network/tftp como unservicio mas de SMF.

    Crear un nuevo servicio SMF

    Para crear un nuevo servicio SMF debemos definir un nuevo SMFmanifiest que es fichero XML que contiene los mtodos para arrancar,parar, reiniciar, definicin de dependencias, documentacin etc..

    Recordemos que los servicios SMF estn organizados en grupos con

    los siguientes nombres:Application: Contiene los servicios asociados con aplicaciones.Device: Usado para dispositivos.

    35

  • 8/14/2019 Gua del Estudiante CE 1.0a "Comunidad OpenSolaris Hispano"

    36/193

    Comunidad OpenSolaris Hispano

    Milestone: Equivalente a los niveles de ejecucin SVR4Network: Todos los servicios del antiguo inetd.confPlatform: Servicios especficos de la plataforma.System: Servicios independientes de la plataformaSite: Sin uso, reservado para uso futuro.

    Para crear un servicio SMF debemos de seguir los siguientespasos:

    1. Establecer el grupo y el nombre para el servicio2. Definir las dependencias3. Definir instancias y los mtodos de arranque, parada y

    reinicio.4. Ubicacin de la documentacin5. Crear el fichero XML6. Cargar el fichero XML en el repositorio

    Vamos a proceder a crear un nuevo servicio SMF de un servidorweb de Sun Microsystems: Sun ONE Web Server 6 para ello recopilamosla siguiente informacin:

    Vamos a crear el servicio dentro del grupo Application y asu vez dentro de un nuevo subgrupo definido por nosotrosllamado servidoresweb y finalmente el identificador delservicio AulaUnixque se corresponde con el servidor webSun One. Quedando se la siguiente forma:/application/servidoresweb/AulaUnix.

    Definimos como dependencia el nivel de ejecucin 3 o multi-

    user-server. Los scripts de arranque, parada y reinicio son:

    o /software/binarios/webserversunone/https-aulaunix.aulaunix.org/start

    o /software/binarios/webserversunone/https-aulaunix.aulaunix.org/stop

    o /software/binarios/webserversunone/https-aulaunix.aulaunix.org/restart

    La documentacin la ubicamos en /software/documentacion

    Creacin del XML

    En el ejemplo de la figura 3.6 podemos ver un XML completo en elque se define el servicio /application/servidoresweb/AulaUnix.

    Veamos las partes mas importantes:

    En la primera parte del XML vemos que se han creado loscomentarios sobre el servicio y se ha definido un identificador:

    Este identificador debe ser nico y podemos personalizar el textoacorde al servicio que vamos a dar de alta.

    36

  • 8/14/2019 Gua del Estudiante CE 1.0a "Comunidad OpenSolaris Hispano"

    37/193

    Comunidad OpenSolaris Hispano

    En el siguiente se establece a que grupo pertenece y se defineun subgrupo para albergar los servidores web:

    El nombre definido con name=ser el que nos muestre el comandosvcs cuando verifiquemos el estado del servicio. Debe ser un nombresencillo y que permita identificar los servicios de forma practica. Eneste caso hemos optado por organizar todos los servidores web pordebajo de servidoresweb.

    La propiedad de la figura 3.6 create_default_instance nospermite dos valores false y true con los que indicamos que el serviciose inicie o se detenga con las paradas y arranques del sistema.Anteriormente esto lo hacamos con los scripts dentro del run revelcorrespondient pondiendo la S deltante del nombre para arrancar o la Kpara parar el servicio.

    Figura 3.6Con estamos definiendo una sola instancia, un

    servicio puede estar compuesto a su vez por otra serie de servicios alos que se denominan instancias. Un ejemplo seria un servidor webApache con el servicio web escuchando por el puerto 80, otro seguropor el 443 y un tercero por el 8080. Para gestionar el serviciodeberamos crear el servicio web con tres instancias. Para nuestroejemplo solo vamos el servicio con una sola instancia.

    Tenemos que crear las dependencias para que solo arranque elservicio si estn funcionando correctamente todos los servicios delnivel de ejecucin 3. Podemos crear tantas dependencias como seannecesarias haciendo referencia al nombre del servicio:

    Ya hemos definido las dependencias y ahora vamos a crear losmtodos para arrancar, reiniciar y parar. Como vemos en el ejemplo dela figura 3.6 con la opcin name=establecemos el valor start paraarrancar, stop para parar y restart para reiniciar.

    Los mtodos definidos se ejecutaran cuando llamemos al comandosvcadm de la siguiente forma:

    svcs Mtodo

    svcadmenablenombredelservicio

    start

    svcadmdisablenombredelservicio

    stop

    svcadmrestartnombredelservicio

    restart

    37

  • 8/14/2019 Gua del Estudiante CE 1.0a "Comunidad OpenSolaris Hispano"

    38/193

    Comunidad OpenSolaris Hispano

    El valor de exec=contiene la ruta absoluta al script o binarioque se ejecutara y con time timeout_seconds definimos los segundos queesperara SMF como limite para el arranque:

    Ya tenemos creados los mtodos y nos queda definir la informacinsobre la documentacin del servicio en la etiqueta donde establecemos el valor para manpage title con el titulo de ladocumentacin y del valor manpath con el path absoluto del lugardonde se encuentra la mquina.

    Importando el servicio en XML a SMF

    Ya tenemos creado el fichero XML y nos queda cargarlo en elrepositorio para poder ser gestionado. La carga en el repositorio la

    realizamos con el comando svccfgejecutando la siguiente sentencia:svccfg -v import fichero.xml

    # svccfg -v import aulaunix.xml

    svccfg: Tomando captura "previous" desvc:/application/servidoresweb/AulaUnix:default.svccfg: Actualizacin de propiedades de svc:/application/servidoresweb/AulaUnix deacuerdo con la instancia "default".svccfg: svc:/application/servidoresweb/AulaUnix: Actualizando propiedad"tm_man_Documentos_Web_Server/manpath".svccfg: Tomando captura "last-import" para

    svc:/application/servidoresweb/AulaUnix:default.svccfg: svc:/application/servidoresweb/AulaUnix:default actualizado.svccfg: Importacin finalizada con xito.

    Y verificamos que ha cargado correctamente ejecutando:

    # svcs -l svc:/application/servidoresweb/AulaUnix

    fmri svc:/application/servidoresweb/AulaUnix:defaultnombre Servicio SMF de ejemplo sobre SunONEhabilitada Falsoestado disabled

    next_state nonestate_time Tue Jan 02 17:56:41 2007reiniciador svc:/system/svc/restarter:defaultdependency require_all/none svc:/milestone/multi-user-server (online)

    38

  • 8/14/2019 Gua del Estudiante CE 1.0a "Comunidad OpenSolaris Hispano"

    39/193

  • 8/14/2019 Gua del Estudiante CE 1.0a "Comunidad OpenSolaris Hispano"

    40/193

    Comunidad OpenSolaris Hispano

    Servicio SMF de ejemplo sobre SunONE

    Figura 3.6

    Delegar la gestin de SMF a otros usuarios

    En algn momento puede surgir la necesidad de delegar la gestinde un servicio a otro usuario del sistema para poder arrancar, parar yreiniciar servicios.

    40

  • 8/14/2019 Gua del Estudiante CE 1.0a "Comunidad OpenSolaris Hispano"

    41/193

    Comunidad OpenSolaris Hispano

    En nuestro ejemplo vamos a dar permisos al usuario aulaunix paraque pueda gestionar el servidor web. El primer paso es aadir alservicio el atributo value_authorization utilizando el comandosvcprop:

    svccfg -s /application/servidoresweb/AulaUnix setprop general/value_authorization =astring: solaris.smf.manage

    Ahora aadimos al fichero /etc/user_attr la siguiente lnea ygrabamos los cambios:aulaunix::::type=normal;auths=solaris.smf.manage

    Con estos dos pasos el usuario aulaunix ya puede gestionar elservicio web:

    # su - aulaunixbash-3.00$ /usr/sbin/svcadm disable /application/servidoresweb/AulaUnixbash-3.00$ /usr/sbin/svcadm enable /application/servidoresweb/AulaUnix

    Si deseamos quitarle los permisos para que no pueda continuargestionando el servicio ejecutamos el comando svcprop para eliminar lapropiedad value_authorization:

    #svccfg -s /application/servidoresweb/AulaUnix delpropgeneral/action_authorization

    41

  • 8/14/2019 Gua del Estudiante CE 1.0a "Comunidad OpenSolaris Hispano"

    42/193

    Comunidad OpenSolaris Hispano

    Gestin de usuarios

    Las cuentas de usuario para el acceso alsistema no difieren en Solaris de otrossistemas unix, en el siguiente capitulo

    aprenderemos a: Identificar los ficheros de configuracin de usuarios

    Gestin de usuarios (alta, modificacin y borrado)

    Gestin de grupos (alta, modificacin y borrado)

    Gestionar usuarios en grupos (alta, modificacin y borrado)

    Ficheros de inicializacin

    Ficheros de configuracinLos ficheros de configuracin contienen la informacin sobre las

    cuentas de usuario, los grupos y contraseas. Los ficheros son:

    /etc/passwd

    Cada una de las lneas del fichero contiene la informacin de unusuarios. Cada lnea esta organizada en campos separados por elcarcter dos puntos que hace de separador de campo. Ejemplo de unalnea del ficheropasswd:

    aulaunix:x:65535:1:Nombre y apellidos:/export/home/aulaunix:/bin/bash

    El formato tiene la siguiente estructura:

    42

  • 8/14/2019 Gua del Estudiante CE 1.0a "Comunidad OpenSolaris Hispano"

    43/193

    Comunidad OpenSolaris Hispano

    IDlogin:x:UID:GID:comentario:home_directory:login_shell

    Estos campos son:

    IDlogin: es el identificador con el que hacemos login en elsistema debe de ser nico.

    Contrasea: la contrasea representada por xes almacenada en elfichero /etc/shadow

    UID: esta representado por un nmero superior a 0 ya que 0pertenece al usuario root. Los nmeros del 1 al 99 estnreservados para usuarios administradores del sistema. Para elresto de usuarios se utiliza el rango del 100 al 60000. Sereserva para el usuario nobody el 60001 y para el usuarionoaccess el 60002.

    GID: nmero mayor de 0 que representa el grupo primario al quepertenece el usuario.

    Comentario: Nombre completo del usuario.

    Directorio home (home_directory): ruta absoluta del directoriohome para el usuario.

    Shel (login_shell ): Define la shell para el usuario (sh, ksh,csh, etc..)

    /etc/shadow

    Contiene las contraseas de las cuentas de usuario, al ser unfichero que puede comprometer la seguridad del sistema solo el usuarioroot debe de tener permisos de lectura para el archivo. El contenidodel archivo es el siguiente:

    root:SbEPJrMu/wMTw:6445::::::

    daemon:NP:6445::::::bin:NP:6445::::::sys:NP:6445::::::adm:NP:6445::::::lp:NP:6445::::::uucp:NP:6445::::::nuucp:NP:6445::::::dladm:*LK*:::::::smmsp:NP:6445::::::listen:*LK*:::::::gdm:*LK*:::::::webservd:*LK*:::::::postgres:NP:::::::

    nobody:*LK*:6445::::::noaccess:*LK*:6445::::::nobody4:*LK*:6445::::::aulaunix:nMF64Wg9ff/HU:13570::::::

    43

  • 8/14/2019 Gua del Estudiante CE 1.0a "Comunidad OpenSolaris Hispano"

    44/193

  • 8/14/2019 Gua del Estudiante CE 1.0a "Comunidad OpenSolaris Hispano"

    45/193

    Comunidad OpenSolaris Hispano

    nobody::60001:noaccess::60002:nogroup::65534:

    El formato tiene la siguiente estructura:

    nonmbredelgrupo:group-password:GID:listausuarios

    Los datos que contiene cada lnea del fichero group son:

    nonmbredelgrupo: contiene el nombre del grupo.

    group-password: Utilizado en versiones mas antiguas deunix. Actualmente no es utilizado.

    GID: nmero que identifica al grupo y debe nico en elsistema.

    listausuarios: contiene la lista de usuarios separados porcoma que pertenecen al grupo.

    Gestin de usuarios

    Crear usuario

    El comando empleado para crear usuarios es useraddcon las siguientesintaxis:

    useradd [u uid] g [gid] G [gid1,gid2, ] [-d dir] m [s shell] [ccomment] [e expire] usuario

    Los parmetros admitidos son los siguientes:

    -u define un uid nico para el usuario. -gdefine el grupo primario al que va a pertenecer el usuario. -Gdefine los grupos secundarios a los que va a pertenecer el

    usuario. -ddefine el path absoluto para el home del usuario. -m fuerza la creacin del home del usuario si no existe. -s define la shell para el usuario, por defecto asigna /bin/sh -c establece el nombre completo del usuario o cualquier otro

    comentario. -o permite la duplicacin del uid del usuario. -e fecha de expiracin de la cuenta.

    -f tiempo mximo admitido de inactividad para la cuenta. Si elusuario no entra en el sistema en el tiempo establecido la cuentase bloquea.

    45

  • 8/14/2019 Gua del Estudiante CE 1.0a "Comunidad OpenSolaris Hispano"

    46/193

    Comunidad OpenSolaris Hispano

    -k permite la copia de archivos de inicializacin personalizadosal home del usuario al crearlo.

    Ejemplo de uso de useradd:

    Crear usuario:

    El siguiente ejemplo muestra como crear el usuario aula, definirsu UID manualmente e incluirlo en el grupo alumnos definiendo su homeen /export/home/aulaunix, definimimos la shell como ksh.

    Ejecucin del comando:

    # useradd -u 109 -g alumnos -d /export/home/aulaunix -m -s /bin/ksh -cusuario de pruebas aula

    Inmediatamente se aade la siguiente lnea al fichero /etc/passwd:

    aula:x:109:100:usuarios de pruebas:/export/home/aulaunix:/bin/ksh

    Modificar un usuario

    Si ya tenemos un usuario en el sistema y deseamos cambiar algunade sus propiedades utilizamos el comando usermod:

    Las opciones permitidas son:

    -o permite la duplicacin de un UID

    -m Mueve el home del usuario

    -l Cambio del nombre de inicio de sesin

    -fDefinimos el nmero de das puede estar inactiva. Si lacuenta no es usada en el nmero de das especificado se bloquea.

    -e Define la fecha de caducidad de la cuenta. Cuando llega

    ldicha fecha la cuenta es inutilizable.

    Ejemplo de uso del comando usermod:

    Cambiamos el home del usuario dgalan a /home/nuevopath

    #usermod m d /export/nuevohome dgalan

    Este ejemplo implica que el nuevo home para el usuario dgalan es

    /export/nuevohome y mueve todos los archivos del viejo directorio alnuevo.Vamos a ejecutar el ejemplo anterior pero adems vamos a cambiar

    el nombre de inicio de sesin:

    46

  • 8/14/2019 Gua del Estudiante CE 1.0a "Comunidad OpenSolaris Hispano"

    47/193

    Comunidad OpenSolaris Hispano

    #usermod m d /export/nuevohome l davidgalan

    Despus de ejecutar el comando tenemos un nuevo home y un nuevo nombre

    de inicio de sesin.Borrado de usuarios

    Borrar un usuario del sistema es muy sencillo utilizando el comandouserdel.userdel r [usuario a borrar]

    La opcin r elimina el home del usuario si este existe, pero noborra los archivos que el usuario pueda tener repartidos en otrosdirectorios de la mquina.

    Para eliminar todos los archivos del usuario deberamos derecurrir a una bsqueda recursiva utilizando el comando find.

    Buscaramos todos los archivos y directorios pertenecientes al usuarioeliminado.

    Ejemplo de borrado de usuario:

    userdel r dgalan

    Borramos el usuario dgalan y los contenidos de su directorio home.

    Cambiar la contrasea de usuario

    Para cambiar la contrasea de un usuario recurrimos al comando

    passwd:

    passwd [usuario]

    Ejemplo de cambio de contrasea:bash-3.00# passwd dgalanNueva contrasea:Vuelva a escribir la nueva contrasea:passwd: la contrasea se ha cambiado por dgalan satisfactoriamentebash-3.00#

    Gestin de grupos

    Hemos visto como crear, modificar y eliminar usuarios. Ahoravamos a realizar el mismo recorrido pero esta vez gestionando grupos,para ello utilizaremos los comandos:

    groupadd

    groupmod

    groupdel

    47

  • 8/14/2019 Gua del Estudiante CE 1.0a "Comunidad OpenSolaris Hispano"

    48/193

    Comunidad OpenSolaris Hispano

    Aadir un nuevo grupo al sistema

    Para aadir un nuevo grupo al sistema recurrimos al comandogroupadd. El GID y el nombre del grupo han de ser nicos.

    Ejemplo para aadir un grupo llamadooperadores:

    bash-3.00# groupadd -g 124 admins

    Lo verificamos:

    bash-3.00# grep admins /etc/groupadmins::124:bash-3.00#

    Hemos buscado el nuevo usuario en el fichero de grupos yefectivamente se aada la nueva entrada de grupo.

    Modificar un grupo

    Podemos ejecutar cambios en un grupo existente con el comandogroupmod que nos permite modificar el GID o renombrar un grupo.

    groupmod d [GID] n [nuevo nombre de grupo]

    Este primer ejemplo cambia el GID para el grupo opera:#groupmod g 125 opera

    Y este otro ejemplo cambia el nombre al grupo opera por monitor#groupmod n monitor opera

    Eliminar un grupo

    Eliminar un grupo existente es muy facil con el comando groupdel.groupdel [nombre del grupo]Ejemplo:

    bash-3.00# groupdel admins

    Cambio de grupos

    Siempre que entramos al sistema lo hacemos perteneciendo al grupoprincipal, pero un usuario que pertenece a varios grupos puedenecesitar operar en cada uno de ellos en diferentes momentos de susesin en el sistema.

    Para cambiar de grupo recurrimos al comando newgrp, veamos unejemplo practico:Hemos entrado al sistema con el usuario dgalan tal como se puede veren el siguiente ejemplo:

    48

  • 8/14/2019 Gua del Estudiante CE 1.0a "Comunidad OpenSolaris Hispano"

    49/193

    Comunidad OpenSolaris Hispano

    $ iduid=109(dgalan) gid=1(other)

    Para pasarnos al grupo admin ejecutamos:# newgrp admins

    Lo verificamos:$ iduid=109(dgalan) gid=1(other) gid=45(admins)

    A partir de este momento todos los ficheros y directorio creadospertenecern al grupo admins.

    Qu hacen los usuarios en el sistema?

    El comando who

    Solaris al igual que el resto de sistemas Unix nos facilita unaserie de comandos que nos permite averiguar que usuarios estnconectados al sistema y desde donde se han conectado.

    El primero de estos comandos es who que muestra una lista contodos los usuarios conectados al sistema mostrando datos como:

    usuario conexin fecha de entrada

    Ejemplo del comando who:

    $ whoroot console Sep 1 19:41aula pts/1 Sep 1 19:45 (192.168.1.33)$

    El comando w

    Otro comando a nuestro alcance es wque muestra la lista deusuarios en el sistema como el comando who pero aadiendo datos comolos procesos y carga de CPU.Ejemplo del comando w:$ w9:05pm en funcionamiento 1:26, 2 usuarios, promedio de carga: 0,01, 0,01, 0,21

    User tty login@ idle JCPU PCPU whatroot console 7:41pm 1:21 -shaula pts/1 7:45pm 1 w

    El comando finger

    Muestra informacin detallada de los usuarios conectados alsistema y detalles de usuarios de forma individual, es un comandobasado

    49

  • 8/14/2019 Gua del Estudiante CE 1.0a "Comunidad OpenSolaris Hispano"

    50/193

    Comunidad OpenSolaris Hispano

    Ejemplo de la salida del comando finger para todos los usuarios:

    finder: no encontrado$ fingerLogin Name TTY Idle When Where

    root Super-User console 1:30 Sat 19:41aula ??? pts/1 Sat 19:45 192.168.1.33$

    Ejemplo de la salida del comando finger para obtener detalles de unsolo usuario:Login name: root In real life: Super-UserDirectory: / Shell: /sbin/shOn since Sep 1 19:41:45 on console1 hour 31 minutes Idle TimeNo unread mailNo Plan.

    El segundo ejemplo nos aporta informacin como la shell y el homedel usuario as como el tiempo conectado.

    50

  • 8/14/2019 Gua del Estudiante CE 1.0a "Comunidad OpenSolaris Hispano"

    51/193

    Comunidad OpenSolaris Hispano

    Procesos y sealesIntroduccin

    En este capitulo veremos como gestiona Solaris los procesos queno difiere mucho del resto de unix existentes en el mercado.Igualmente si provienes de Linux te resultar fcil adaptarte a lassingularidades de Solaris.Cada programa que se ejecuta en el sistema se corresponde con uno ovarios procesos.Solaris como cualquier sistema multiusuario permite a cualquierusuario ejecutar ms de un proceso simultneamente, los procesos de

    un mismo usuario pueden comunicarse entre si pero no con los procesosde otro usuario. El usuario root es el nico que puede comunicarse contodos los procesos en ejecucin.

    Cada proceso est identificado por un PID nico y a su veztienen asociado un identificador de usuario (UID) y su grupo (GID).

    Ver los procesos en ejecucin

    Uno de los comandos mas habituales para un administrador desistemas es sin duda el comandops. El comandops permite ver losprocesos en ejecucin en el sistema y obtener informacin de cada uno

    de ellos.

    Veamos un ejemplo de la ejecucin del comandops ef:UID PID PPID C STIME TTY TIME CMD

    root 0 0 0 23:51:57 ? 30:42 schedroot 1 0 0 23:51:58 ? 0:00 /sbin/initroot 2 0 0 23:51:58 ? 0:00 pageoutroot 3 0 0 23:51:58 ? 0:01 fsflush

    daemon 223 1 0 23:52:18 ? 0:00 /usr/sbin/rpcbindroot 7 1 0 23:51:58 ? 0:10 /lib/svc/bin/svc.startdroot 45 1 0 23:52:02 ? 0:00 /sbin/dhcpagentroot 9 1 0 23:51:58 ? 0:19 /lib/svc/bin/svc.configdroot 230 1 0 23:52:18 ? 0:00 /usr/lib/dmi/dmispdroot 419 1 0 23:52:29 ? 0:00 /usr/lib/autofs/automountdroot 139 1 0 23:52:14 ? 0:00 /usr/lib/sysevent/syseventdroot 71 1 0 23:52:09 ? 0:00 /usr/sfw/sbin/snmpd

    51

  • 8/14/2019 Gua del Estudiante CE 1.0a "Comunidad OpenSolaris Hispano"

    52/193

    Comunidad OpenSolaris Hispano

    La informacin que nos aporta la salida del comando:

    UID: usuario propietario del proceso. PID: nmero de identificacin del proceso. PPID: nmero que identifica el proceso padre. STIME: fecha en la que se arranc el proceso. TTY: terminal del proceso. CMD: programa en ejecucin.

    La siguiente tabla contiene los parmetros ms tiles para utilizarcon el comando ps:

    Parmetro Funcin-a Muestra los procesos mas

    solicitados.

    -e Muestra todos los procesos enejecucin.-f Muestra informacin ampliada

    de los procesos.-p Muestra el ID de la CPU

    asociada al proceso.-u Muestra todos los procesos de

    un usuario especfico.-c Muestra los datos con formato

    planificacin y prioridad deprocesos.

    -G Muestra los procesosejecutados por un grupo.

    Los siguientes ejemplos muestran el uso del comandops:

    Ver los procesos pertenecientes al usuario aulaunix:bash-3.00$ps -u aulaunix

    PID TTY TIME CMD712 pts/1 0:00 bash733 pts/1 0:00 ps682 ? 0:01 sshd684 pts/1 0:00 sh

    Muestra los datos en formato planificacin:bash-3.00$ps -c

    PID CLS PRI TTY TIME CMD712 TS 49 pts/1 0:00 bash734 TS 49 pts/1 0:00 ps684 TS 59 pts/1 0:00 sh

    La opcin ejecutada en el ejemplo con c muestra informacininteresante como los valores CLS que indica el tipo de prioridad yPRI que muestra la prioridad del proceso.

    Muestra los procesos en ejecucin del grupo aulaunix:bash-3.00$ grep -i aulaunix /etc/groupaulaunix::100:

    52

  • 8/14/2019 Gua del Estudiante CE 1.0a "Comunidad OpenSolaris Hispano"

    53/193

    Comunidad OpenSolaris Hispano

    bash-3.00$ ps -G 100PID TTY TIME CMD712 pts/1 0:00 bash742 pts/1 0:00 ps682 ? 0:01 sshd684 pts/1 0:00 sh

    Observa que el grupo es indicado con su GID que hemos obtenidomirando su valor en el fichero /etc/group.

    El comando prstat

    El comandoprstat muestra informacin de los procesos enejecucin ordenados por el uso de CPU. Ejemplo de la ejecucin delcomandoprstat:

    bash-3.00$prstat

    PID USERNAME SIZE RSS STATE PRI NICE TIME CPU PROCESS/NLWP668 noaccess 159M 80M sleep 59 0 0:00:29 0,5% java/24744 aulaunix 4492K 2644K cpu0 39 0 0:00:00 0,4% prstat/1682 aulaunix 7952K 2100K sleep 59 0 0:00:00 0,0% sshd/1712 aulaunix 2484K 1612K sleep 49 0 0:00:00 0,0% bash/1131 root 3824K 2360K sleep 59 0 0:00:00 0,0% nscd/24535 root 4444K 1724K sleep 59 0 0:00:00 0,0% dtlogin/1670 root 7096K 2076K sleep 59 0 0:00:00 0,0% sendmail/11 root 2024K 1120K sleep 59 0 0:00:00 0,0% init/1

    269 root 4416K 3052K sleep 59 0 0:00:03 0,0% inetd/4278 root 2820K 1140K sleep 59 0 0:00:00 0,0% sh/1214 root 2272K 900K sleep 59 0 0:00:00 0,0% cron/1143 daemon 3932K 1968K sleep 59 0 0:00:00 0,0% kcfd/3

    111 root 2156K 1296K sleep 59 0 0:00:00 0,0% snmpdx/1258 root 1700K 896K sleep 59 0 0:00:00 0,0% sac/171 root 6556K 4572K sleep 59 0 0:00:00 0,0% snmpd/1

    Total: 43 processes, 180 lwps, load averages: 0,02, 0,03, 0,31

    En la siguiente lista puedes ver la informacin aportada por laejecucin del comando:

    PID: identificador del proceso. USERNAME: propietario del proceso.

    SIZE: memoria virtual utilizada por el proceso. STATE: estado del proceso, los estados del proceso pueden ser

    cpu, sleep, run, zombie y stop. PRI: prioridad del proceso. NICE: valor para el calculo de la prioridad del proceso. TIME: tiempo total que lleva el procesos ejecutandose. CPU: porcentaje de CPU utilizado por el proceso. PROCCESS: nombre del proceso.

    El comandoprstat proporciona diversos parmetros para obtener mas

    informacin, los parmetros mas tiles son:

    -t: muestra informacin agrupada por usuario.

    53

  • 8/14/2019 Gua del Estudiante CE 1.0a "Comunidad OpenSolaris Hispano"

    54/193

    Comunidad OpenSolaris Hispano

    -p [PID]: muestra solo la informacin para un solo procesoidentificado por su PID.

    -n: nmero mximo de procesos mostrados.

    Seales

    Los procesos en ejecucin puede ser necesario detenerlos por quesu funcionamiento no es el esperado, no responden o cualquier otracausa. El comando kill nos permite enviar una seal al proceso paraque se detenga.

    Las seales que podemos enviar son:Nombre Nmero de

    seal.Descripcin

    SIGHUP 1 Seal de corte de seal, interrumpir la

    seal de la conexin telefnica o un

    terminal.

    SIGINT 2 Seal de Control-C (procedente del

    teclado)

    SIGKILL 9 Seal de eliminacin ningn proceso

    puede ignorar esta seal.

    SIGTERM 15 Finalizar proceso de forma ordenada.

    Ejemplo para una BDDD, LDAP etc..

    para que cierre las conexiones, ficheros

    etc..

    Formato de kill:kill seal pidproceso

    Ejempo de kill

    Matar una sesin ssh:# adtasweb01 /var/opt/aat/d#ps -ef | grep ssh

    root 449 1 0 Aug 20 ? 1:01 /usr/local/sbin/sshdroot 25618 449 0 17:51:52 ? 0:00 /usr/local/sbin/sshd -Rora9 18084 18082 0 20:25:28 ? 0:00 /usr/local/sbin/sshd -R

    ora9 8645 8476 0 20:22:26 ? 0:00 /usr/local/sbin/sshd R# kill -9 25618#

    La seal SIGHUP comnmente conocida como interrumpir una conexintelefnica o de Terminal, esta seal puede provocar en servicios comoinetdque relean el fichero de configuracin.

    Seal en curso

    En algn momento puede interesarnos ver todas las sealesenviadas a un proceso en ejecucin para ello recurrimos al comando

    psig.

    Formato:psig pidEjemplo depsig:#psig 13936

    54

  • 8/14/2019 Gua del Estudiante CE 1.0a "Comunidad OpenSolaris Hispano"

    55/193

    Comunidad OpenSolaris Hispano

    13936: /usr/lib/ssh/sshdHUP defaultINT defaultQUIT defaultILL defaultTRAP default

    ABRT defaultEMT defaultFPE defaultKILL defaultBUS defaultSEGV defaultSYS defaultPIPE ignoredALRM caught 0x2d7fc RESETHAND,NODEFERTERM defaultUSR1 defaultUSR2 defaultCLD caught 0x40f14 0PWR defaultWINCH defaultURG default

    Seales de proceso:

    Nombre Nmero deseal.

    Descripcin

    SIGHUP 1 Seal de corte de seal, interrumpir la

    seal de la conexin telefnica o un

    terminal.

    SIGINT 2 Seal de Control-C (procedente del

    teclado)

    SIGKILL 9 Seal de eliminacin ningn proceso

    puede ignorar esta seal.

    SIGTERM 15 Finalizar proceso de forma ordenada.

    Ejemplo para una BDDD, LDAP etc..

    para que cierre las conexiones, ficheros

    etc..

    SIGINT 3 Salir

    SIGILL 4 Instruccin ilegal.

    SIGTRAP 5 Punto de ruptura

    SIGABRT 6 Abortar

    SIGEMT 7 Trap de emulacin

    SIGFPE 8 Excepcin aritmtica

    SIGBUS 10 Error en bus

    SIGSEGV 11 Fallo de segmentacin

    SIGSYS 12 Llamada al sistema errnea

    SIGPIPE 13 Pipe rota

    55

  • 8/14/2019 Gua del Estudiante CE 1.0a "Comunidad OpenSolaris Hispano"

    56/193

    Comunidad OpenSolaris Hispano

    SIGALRM 14 Finalizada

    rbol de procesos

    Disponemos de un comando llamadoptree que nos permite ver losprocesos de forma jerrquica es decir podemos ver los procesos hijosdesplegados de forma arbrea. El comandoptree se lanza sin opciones,veamos el ejemplo de su ejecucin:adtasbac01 /opt/na#ptree51 /usr/lib/sysevent/syseventd60 /usr/lib/picl/picld137 /usr/lib/sparcv9/cpudiagd -i174 /usr/sbin/rpcbind197 /usr/sbin/inetd -s326 rpc.metad5089 in.telnetd

    5094 -ksh16041 bash28382 bash15728 ptree

    22123 in.telnetd22125 -ksh23114 bash

    218 /usr/lib/nfs/statd219 /usr/lib/nfs/lockd221 /usr/lib/autofs/automountd224 /usr/lib/autofs/automountd

    235 /usr/sbin/syslogd242 /usr/sbin/cron

    263 /usr/sbin/nscd266 /usr/lib/power/powerd

    Informacin sobre procesos:

    A continuacin vamos a ver una serie de comandos que nosaportaran informacin sobre los procesos en ejecucin.

    Ver las libreras en uso por un proceso.

    Para averiguar las libreras en uso por un proceso recurrimos alcomandopldd:

    pldd [PID del proceso]

    El siguiente ejemplo muestra las libreras utilizadas por elproceso 6171 perteneciente a un servicio web de Sun Java:

    # pldd 67176717: ../../bin/https/bin/Cgistub -f /tmp/https-admserv-98ccc083/.cgistub_88

    /usr/lib/libsocket.so.1/usr/lib/libnsl.so.1/usr/lib/libC.so.5/usr/lib/libm.so.1/usr/lib/libw.so.1

    56

  • 8/14/2019 Gua del Estudiante CE 1.0a "Comunidad OpenSolaris Hispano"

    57/193

    Comunidad OpenSolaris Hispano

    /usr/lib/libc.so.1/usr/lib/libdl.so.1/usr/lib/libmp.so.2/usr/platform/sun4u-us3/lib/libc_psr.so.1

    Descriptores de ficheros abiertos

    El comandopfiles lista todos los descriptores de ficherosabiertos por un proceso:

    pfiles [PID del proceso]

    El resultado de la ejecucin del comandopfiles para un servicioweb es la siguiente:

    # pfiles 6717

    6717: ../../bin/https/bin/Cgistub -f /tmp/https-admserv-98ccc083/.cgistub_88Current rlimit: 1024 file descriptors1: S_IFCHR mode:0666 dev:85,1 ino:72269 uid:0 gid:3 rdev:13,2

    O_RDWR2: S_IFCHR mode:0666 dev:85,1 ino:72269 uid:0 gid:3 rdev:13,2

    O_RDWR

    Mapa de espacio de direcciones

    El comandopmap mustrela el uso que hace de la memoria unproceso mostrando una mapa del espacio de direcciones:

    pmap [PID del proceso]

    El siguiente ejemplo muestra la salida del comandopmap:#pmap 67176717: ../../bin/https/bin/Cgistub -f /tmp/https-admserv-98ccc083/.cgistub_8800010000 24K read/exec/opt/app/SunWeb/ /bin/https/bin/Cgistub00024000 8K read/write/exec/opt/app/SunWeb/

    0/bin/https/bin/Cgistub00026000 8K read/write/exec [ heap ]FF080000 688K read/exec /usr/lib/libc.so.1FF13C000 32K read/write/exec /usr/lib/libc.so.1FF1B0000 224K read/exec /usr/lib/libm.so.1FF1F6000 8K read/write/exec /usr/lib/libm.so.1FF200000 312K read/exec /usr/lib/libC.so.5FF25C000 32K read/write/exec /usr/lib/libC.so.5FF264000 64K read/write/exec /usr/lib/libC.so.5FF280000 576K read/exec /usr/lib/libnsl.so.1FF310000 40K read/write/exec /usr/lib/libnsl.so.1FF31A000 24K read/write/exec /usr/lib/libnsl.so.1FF330000 16K read/exec /usr/lib/libmp.so.2

    FF344000 8K read/write/exec /usr/lib/libmp.so.2FF350000 8K read/write/exec /usr/lib/libdl.so.1FF360000 8K read/exec /usr/platform/sun4u-us3/lib/libc_psr.so.1FF370000 8K read/write/exec [ anon ]FF380000 40K read/exec /usr/lib/libsocket.so.1

    57

  • 8/14/2019 Gua del Estudiante CE 1.0a "Comunidad OpenSolaris Hispano"

    58/193

    Comunidad OpenSolaris Hispano

    FF39A000 8K read/write/exec /usr/lib/libsocket.so.1FF3A0000 8K read/exec /usr/lib/libw.so.1FF3B0000 192K read/exec /usr/lib/ld.so.1FF3E0000 8K read/write/exec /usr/lib/ld.so.1FF3E2000 8K read/write/exec /usr/lib/ld.so.1FFBEA000 24K read/write/exec [ stack ]

    total 2376K

    Informacin sobre las CPU

    A continuacin veremos una serie de comandos que nos permitenobservar los procesos y la carga de trabajo de las CPU del sistema.El comando ps pero en versin BSD alojado en /usr/ucb nos permite verel consumo de CPU y memoria de los procesos:/usr/ucb/ps -aux

    El siguiente ejemplo muestra los diez primeros procesos que mas

    consumen recursos, se ha aade el comando headpara que solo muestralos diez primeros resultados:

    /#usr/ucb/ps -aux |head

    USER PID %CPU %MEM SZ RSS TT S START TIME COMMANDroot 792 0.5 0.271760 3528 ? S Aug 24 588:50 /usr/lib/mixer_approot 3 0.4 0.0 0 0 ? S Aug 24 842:00 fsflushj.vazque 20211 0.4 0.1 3040 1632 ? S 12:39:01 0:00 /usr/local/bin/cvsroot 790 0.2 1.713910434080 ? S Aug 24 230:50 /usr/bin/java -jarroot 438 0.2 1.04366418752 ? S Aug 24 189:06 /usr/openwin/bin/Xroot 607 0.2 0.314600 5968 pts/2 S Aug 24 197:45 /usr/lib/gconfd-2root 937 0.1 0.164576 1576 ? S Aug 24 144:52 /usr/lib/at-spi-re

    root 677 0.1 0.176912 1800 ? S Aug 24 147:34 gnome-panel --sm-croot 20213 0.1 0.1 1384 952 pts/6 O 12:39:33 0:00 usr/ucb/ps aux

    Los comandospsinfo y mpstat nos muestran estadsticas sobre elestado de las CPU del sistema:mpstat muestra la actividad de las CPU de forma individual, veamos laejecucin del comando mpstat:

    CPUminfmjfxcal intr ithr csw icsw migr smtx srw syscl usr sys wt idl1 7 1 120 412 309 168 4 21 3 0 638 1 4 0 953 7 1 13 115 107 179 7 21 3 0 633 1 3 0 96

    La informacin ms importante que vemos en el resultado de laejecucin del comando es:

    mjfque corresponde con fallos importantes. minfque corresponde con fallos de menor importancia. xcal aporta informacin sobre la llamada entre las CPU. intrindica el nmero de interrupciones. wt indica en % el tiempo consumido por los procesos de usuario. sys tiempo de CPU consumido por los procesos del sistema.

    El comandopsrinfo mostrar el estado de las CPU y cuando seiniciaron. Ejemplo de la salida del comandopsrinfo:

    #psrinfo

    58

  • 8/14/2019 Gua del Estudiante CE 1.0a "Comunidad OpenSolaris Hispano"

    59/193

    Comunidad OpenSolaris Hispano

    0 on-line since 10/04/07 09:03:131 on-line since 10/04/07 09:03:132 on-line since 10/04/07 09:03:133 on-line since 10/04/07 09:03:134 on-line since 10/04/07 09:03:135 on-line since 10/04/07 09:03:13

    6 on-line since 10/04/07 09:03:137 on-line since 10/04/07 09:03:0116 on-line since 10/04/07 09:03:1317 on-line since 10/04/07 09:03:1318 on-line since 10/04/07 09:03:1319 on-line since 10/04/07 09:03:1320 on-line since 10/04/07 09:03:1321 on-line since 10/04/07 09:03:1322 on-line since 10/04/07 09:03:1323 on-line since 10/04/07 09:03:1

    Trabajos planificados

    El comando at

    El comando at permite la ejecucin de un trabajo una sola vez enuna fecha y hora determinada.

    Sintaxis:

    at [-m] [-r id_trabajo] [-q nombre_cola][-t hora] [fecha]

    Parmetro Funcin-m Cuando termina el trabajo enva un

    correo al usuario.-r Elimina un trabajo programado.-q Establece nombre de cola.-l Muestra los procesos en cola.

    hora Establece la hora de ejecucin.fecha Establece la fecha de ejeucin.

    Ejemplos de utilizacin del comando at:

    Programar un trabajo.

    El siguiente ejemplo planifica la parada de un servidor web paralas 15:30:# at 03:00 pmat> /opt/servidorweb/stop.shat> at> commands will be executed using /sbin/shjob 1195653600.a at Wed Nov 21 15:00:00 2007

    #

    El ejemplo primero establece la hora con at 03:00 pmseguidamente introducimos el comando que se va a

    59

  • 8/14/2019 Gua del Estudiante CE 1.0a "Comunidad OpenSolaris Hispano"

    60/193

    Comunidad OpenSolaris Hispano

    ejecutar /opt/servidorweb/stop.sh y salimos pulsando Control-d.Observa que el comando nos devuelve el nombre del trabajo job1195653600.a.

    Ver los trabajos en espera de ejecucin.

    El comando at l muestra los trabajos pendientes y su hora deejecucin:

    # at -luser = root 1195653600.a Wed Nov 21 15:00:00 2007#

    El ejemplo muestra el trabajo 1195653600.a que se ejecutar elMircoles 21 de Noviembre a las 15:00.

    Eliminar un trabajo programado.

    Para eliminar la ejecucin de un trabajo programado utilizamos elcomando at r nombredeltrabajo :

    El siguiente ejemplo muestra como eliminar un trabajo:# at -r 1195653600.a

    Permitir la ejecucin del comando at

    No todos los usuarios del sistema pueden ejecutar el comando at,para autorizar o denegar el uso del comando at hay que editar losficheros /etc/cron.dat.deny o /etc/cron.d/at.allowambos ficheros deroot.

    El fichero at.denycontiene los usuarios a los que se deniega el usodel comando at:Contenido del fichero at.deny:

    # cat /etc/cron.d/at.denydaemonbinsmtpnuucplistennobodynoaccess

    El fichero at.allowcontiene los usuarios que pueden ejecutar elcomando at, en ocasiones el fichero puede no existir por lo que hayque crearlo.

    Contenido del fichero at.allow:

    60

  • 8/14/2019 Gua del Estudiante CE 1.0a "Comunidad OpenSolaris Hispano"

    61/193

    Comunidad OpenSolaris Hispano

    # cat /etc/cron.d/at.allowwebldapdgalan

    Logs de at

    Toda la actividad realizada con el comando at queda registrada enel log ubicado en /var/cron/log.

    Crontab

    El comando crontab permite la ejecucin de tareas programadas y

    forma repetitiva.A modo de ejemplo prctico permite tareas como:

    Programar un backup que se ejecute solamente por la noche losmartes y jueves de cada semana.

    Un proceso que se ejecute cada cinco minutos los lunes, mircolesy viernes.

    Un parada de un servicio todos los domingos a las 12:00.

    Cuando programamos una tarea con el comando crontab estas sealmacenan en /var/spool/cron/crontabs.

    El comando crontab almacena la informacin en diferentes lneascon el siguiente formato:

    1 2 3 4 5 /usr/local/bin/iniciobackup.sh

    Comienza con cinco campos separados por espacios seguido de latarea a ejecutar. Los cinco campos representan:

    Campo Descripcin1 El primer campo contiene los minutos.

    Valores entre 0 y 59.

    2 El segundo campo tiene la hora. Valoresentre 0 y 23.3 Da del mes, valore entre 1 y 31.4 El mes del ao, valores entre 1 y 12.5 Da de la semana, valores entre 0 y 6.

    Usando crontab

    El comando crontab permite ver, crear, modificar o eliminar untrabajo planificado.

    Ver tareas planificadas

    61

  • 8/14/2019 Gua del Estudiante CE 1.0a "Comunidad OpenSolaris Hispano"

    62/193

    Comunidad OpenSolaris Hispano

    Para ver las tareas planificadas ejecutamos el comando crontab lobteniendo la lista de tareas programas:

    # crontab -l#ident "@(#)root 1.20 01/11/06 SMI"#

    # The root crontab should be used to perform accounting data collection.## The rtc command is run to adjust the real time clock if and when# daylight savings time changes.#10 3 * * * /usr/sbin/logadm15 3 * * 0 /usr/lib/fs/nfs/nfsfind1 2 * * * [ -x /usr/sbin/rtc ] && /usr/sbin/rtc -c > /dev/null 2>&130 3 * * * [ -x /usr/lib/gss/gsscred_clean ] && /usr/lib/gss/gsscred_clean#10 3 * * * /usr/lib/krb5/kprop_script ___slave_kdcs___

    Cada usuario solo puede ver sus propias planificaciones siendo

    una excepcin el usuario root que puede ver la planificacin decualquier usuario del sistema utilizando el comando crontab de lasiguiente forma:

    crontab l nombre_de_usuario

    Editor o crear entradas en el crontab

    En los siguientes ejemplos vamos a mostrar c