sábado, 22 de diciembre de 2007

Ext2 y NTFS en OpenSolaris



En este breve artículo vamos a comentar como ser capaz de acceder a los datos de una determinada partición Ext2 o NTFS desde nuestro sistema OpenSolaris.

Lo primero que tenemos que hacer es descargarnos estos dos paquetes: FSWpart y FSWfsmisc de la distribucion Belenix.

Posteriormente los instalamos:

# gunzip -c FSWpart.tar.gz | tar xvf -

# pkgadd -d . FSWpart

# gunzip -c FSWfsmisc.tar.gz | tar xvf -

# pkgadd -d . FSWfsmisc

Y ya podemos montar de manual las particiones de estos dos sistemas de ficheros:

# mount -F ext2fs /dev/dsk/c0d0s4 /mnt

# mount -F ntfs /dev/dsk/c0d0s5 /mnt

O si necesitamos que se monten automatiamente en el arranque del sistema, indicarlo con una entrada para cada una de ellas en la tabla /etc/vfstab.

Como ayuda para identificar las particiones de un disco recnocido, no es necesario utilizar el comando format e ir navegando por sus distintas opciones... es más sencilla esta otra opción:

# /usr/bin/prtpart /dev/rdsk/c0d0 -ldevs

domingo, 16 de diciembre de 2007

Congreso Hispalinux 2007



Como miembro activo de la Comunidad Hispana OpenSolaris, aprovecho este post para anunciar la presentación que realizé el pasado sabado 15/12/2007 en la décima edición del Congreso Hispalinux 2007, el cual tuvo lugar en Caceres (Extremadura).

La presentación ya esta disponible tanto en este blog como la sección de Orange Books del portal de la Comunidad Hispana.

OpenSolaris - Almacenamiento con ZFS

lunes, 10 de diciembre de 2007

filtros TCP_WRAPPER



Una de las nuevas funcionalidades de seguridad que incorpra Solaris 10 / OpenSolaris reside que la mayoria de servicios de red o de acceso al sistema ya estan integrados con TCP_WRAPPER.

En este articulo vamos a ver como permitir/denegar el acceso al puerto TCP 1111, el cual es habilitado por el proceso rpcbind (utilizado para clientes NFS, NIS...). Es decir podemos limitar los hosts que envian peticiones de tipo RPC a nuestro sistema.

Dentro de SMF, entramos en este servicio de red, asi:

# svccfg
svc:> select network/rpc/bind
svc:/network/rpc/bind> listprop
config application
config/allow_indirect boolean true
config/verbose_logging boolean true
config/enable_tcpwrappers boolean true
fs dependency
fs/entities fmri svc:/system/filesystem/minimal
fs/grouping astring require_all
fs/restart_on astring none
fs/type astring service
identity dependency
identity/entities fmri svc:/system/identity:node
identity/grouping astring require_all
identity/restart_on astring refresh
identity/type astring service
sysidtool dependency
sysidtool/entities fmri svc:/system/sysidtool:net
sysidtool/grouping astring require_all
sysidtool/restart_on astring none
sysidtool/type astring service
routing dependency
routing/entities fmri svc:/network/initial:default
routing/grouping astring optional_all
routing/restart_on astring none
routing/type astring service
general framework
general/entity_stability astring Unstable
general/single_instance boolean true
start method
start/exec astring "/lib/svc/method/rpc-bind %m"
start/group astring root
start/limit_privileges astring :default
start/privileges astring basic,file_chown,file_chown_self,file_owner,net_privaddr,proc_setid,sys_nfs
start/project astring :default
start/resource_pool astring :default
start/supp_groups astring :default
start/timeout_seconds count 60
start/type astring method
start/use_profile boolean false
start/user astring root
start/working_directory astring :default
stop method
stop/exec astring "/lib/svc/method/rpc-bind %m %{restarter/contract}"
stop/group astring root
stop/limit_privileges astring :default
stop/privileges astring basic,proc_owner
stop/project astring :default
stop/resource_pool astring :default
stop/supp_groups astring :default
stop/timeout_seconds count 60
stop/type astring method
stop/use_profile boolean false
stop/user astring root
stop/working_directory astring :default
tm_common_name template
tm_common_name/C ustring "RPC bindings"
tm_man_rpcbind template
tm_man_rpcbind/manpath astring /usr/share/man
tm_man_rpcbind/section astring 1M
tm_man_rpcbind/title astring rpcbind

Habilitamos el filtrado:

svc:/network/rpc/bind> setprop config/enable_tcpwrappers=true

Finalizamos la edicion de este servicio y lo reiniciamos:

svc:/network/rpc/bind> end

# svcadm restart rpc/bind

Justo en este momento, ya estamos en condiciones de configurar el acceso. Denegamos todo y unicamente permitimos el acceso a través de la interface de loopback.

# cat /etc/hosts.deny
ALL: ALL

# cat /etc/hosts.allow
rpcbind: 127.0.0.1

Y comprobamos que dicho filtrado es correcto:

# uname -a
SunOS opensolaris 5.10 Generic_120012-14 i86pc i386 i86pc

# telnet opensolaris 1111
Trying 10.73.130.251…
telnet: connect to address 192.168.1.3: Connection refused

Fácil, no?

lunes, 3 de diciembre de 2007

SVM fácil y rápido


En este artículo vamos a ver de forma sencilla y cómoda como actualizar nuestro Solaris 10 / OpenSolaris corriendo el mínimo riesgo posible.

Partimos de una situación inicial en la cual tenemos una configuración básica de Solaris Volume Manager para el filesystem / y el área de swap.

# uname -a
SunOS opensolaris 5.10 Generic_120012-14 i86pc i386 i86pc

# df -h| grep dsk
/dev/md/dsk/d0 5,4G 4,2G 1,2G 79% /

# swap -l
swapfile dev swaplo bloques libre
/dev/md/dsk/d10 85,10 8 1048568 1048568

La configuración del RAID 1 (mirror) en cada uno de los filesystem implicados es esta:

# metastat -p
d10 -m d11 d12 1
d11 1 1 c0d0s1
d12 1 1 c0d1s1
d0 -m d1 d2 1
d1 1 1 c0d0s0
d2 1 1 c0d1s0

Luego en ese momento ejecutamos el script unmirror.sh, asi:

# ./unmirror.sh
bash-3.00# ./unmirror.sh
d10: subduplicación d12 quitada
d0: subduplicación d2 quitada
Press any key to reboot system. After rebooting, check //log/unmirror_cont.log for result.
y

El sistema se reiniciará y arrancará sin ningun tipo de RAID 1, luego unicamente los cambios en la actualización del mismo o su parcheado se registraran en los subdiscos activos en ese momento.

# metastat -p
d10 -m d11 1
d11 1 1 c0d0s1
d0 -m d1 1
d1 1 1 c0d0s0
d12 1 1 c0d1s1
d2 1 1 c0d1s0

Por lo tanto, siempre podremos arrancar nuestro sistema con los subdiscos que no estan activos y que no se ven afectados por este proceso de actualización.

* * * ACTUALIZAMOS * * *

Una vez que el sistema ya actualizado arranca perfectamente, simplemente con el siguiente script (generado por el anterior "unmirror.sh"), volvemos a crear la tolerancia a fallos a nivel del mirror activa en el próximo arranque, asi:

# ./remirror

metainit: opensolaris: d10: unidad ya configurada

metainit: opensolaris: d0: unidad ya configurada

The output of metastat -p is:
d10 -m d11 d12 1
d11 1 1 c0d0s1
d12 1 1 c0d1s1
d0 -m d1 d2 1
d1 1 1 c0d0s0
d2 1 1 c0d1s0
Press any key to reboot system to finish mirroring.