martes, 26 de octubre de 2010

SL en el Estado Nacional y en la Pcia.

El Estado impulsa el uso de software libre en la administración pública

El jefe de gabinete, Aníbal Fernández, firmó con Red Hat un convenio para impulsar el crecimiento de las herramientas de software libre en la administración pública estatal. Más de la mitad del software utilizado por la administración del estado es libre, según explicó Fernández.

“El 60% de los programas operativos del Estado son software de uso público, con lo cual no estamos pagando royalties por ello. Queremos reivindicar esa situación. Este software no necesita compra, no necesita licitación, porque se comienza y se desarrolla desde lo público para lo público”, sostuvo el jefe de gabinete argentino.

“El modelo de desarrollo comunitario ha demostrado ser el más productivo a la hora de medir la velocidad de avance tecnológico, pues aporta y asegura la adhesión a estándares de la industria y la libertad de contar con el código fuente”, señaló Aníbal Fernández, explicando que la participación de Red Hat “ofrece estabilidad, certificaciones, control de calidad y soporte técnico de primer nivel y ofrece, en definitiva, lo mejor de los dos mundos: el beneficio y la independencia del modelo de desarrollo comunitario y el nivel de servicios que necesitan instituciones del Gobierno Nacional”.



Se usará software libre en la administración pública de Santa Fe

La media sanción de Diputados convirtió en Ley este jueves el proyecto elaborado por los diputados Gerardo Rico (FPV) y Pablo Javkin (ARI-CC) que establece la implementación de políticas de incorporación y desarrollo de Software Libre en la administración pública santafesina. La iniciativa colaborará en la transparencia de la gestión, la seguridad en el manejo de datos públicos y el fomento de la industria tecnológica local.


Utilizar Software Libre implica adquirir la licencia de los programas de uso administrativo, para luego poder reproducirlos, modificarlos, en tanto sea necesario para los usuarios, y hacerlos compatibles con otros programas de uso común. Rico y Javkin coincidieron en que el avance es fundamental, ya que “significará para la provincia salir de la dependencia tecnológica con los proveedores privados, cuyos programas no se pueden modificar en función de las necesidades variables de la administración, a lo que se suma, el costo económico que supone la renovación de las licencias”.

Por otra parte, subrayaron que al hacerse cargo la misma provincia de la adaptación de los programas informáticos, se elimina el riesgo que implica que la información pública pase por manos de terceros, volviendo más seguro su tratamiento. Otro beneficio es que las licencias libres le otorgan al Gobierno Provincial el derecho a contratar profesionales locales para generar, modificar y adaptar sus sistemas, con lo que se fomentará la industria tecnológica provincial, la economía y el empleo en nuestra región.

El proyecto había obtenido media sanción en Diputados en octubre de 2009 y luego de que se le introdujeran modificaciones en la Cámara Alta, fue aprobado por la Legislatura. Entre los antecedentes de la propuesta, existen proyectos presentados con el mismo espíritu en varios municipios de nuestro país.


FUENTE: www.puntobiz.com.ar

miércoles, 13 de octubre de 2010

Enlaces en Linux

Los enlaces son una especie de puente a un archivo o a un directorio perteneciente al sistema, como una referencia que podemos poner en cualquier sitio que nos interese y que actúa como un acceso directo a cualquier otro.
Este mecanismo nos permite acceder a distintos directorios y archivos de forma más rápida, sin tener que desplazarnos por la jerarquía de directorios. Por ejemplo, si habitualmente necesitamos acceder al directorio: /usr/local/share/ podríamos crearnos en nuestro directorio home un enlace a ese directorio con:
$ ln -s /usr/local/share caminocorto
Con esto crearemos un enlace simbólico llamado caminocorto que apunta /usr/local/share/. Podemos ver si lo hemos creado bien haciendo un listado detallado:
$ ls -l caminocorto lrwxrwxrwx 1 pepe pepe 17 jul 2010 15:52 caminocorto -> /usr/local/share/
Aquí podemos comprobar que el enlace apunta realmente donde nosotros queremos. Podemos observar también como el primer carácter en el bloque de permisos es una l, lo que nos indica que el archivo es un enlace (link)

Es importante remarcar que si accedemos al directorio por el caminocorto y luego hacemos un cd .. volveremos al directorio donde está el caminocorto y no al directorio superior.

Podemos eliminar el enlace simbólico que acabamos de crear con:
$ unlink caminocorto

Enlaces simbólicos y enlaces fuertes

En el ejemplo, hemos mencionado el término enlace simbólico. Los enlaces simbólicos significan que tan sólo estamos creando un apuntador o puente hacia el archivo o directorio, de forma que si eliminásemos el fichero destino el enlace no apuntaría a ninguna parte. Los enlaces simbólicos los creamos añadiendo el parámetro -s al comando ln.

Si omitimos este parámetro se crearía lo que se llama un enlace fuerte (o hard link) que, a diferencia de los enlaces simbólicos hace un duplicado del fichero. Internamente no es exactamente un duplicado del fichero, sino dos i-nodos que apuntan a los mismos datos, pero puede verse de forma abstracta como una copia del archivo. La ventaja de este tipo de enlaces es que si se borra una de las copias la otra aún se conserva. A pesar de esto, este tipo de enlace no se utiliza demasiado ya que complica la gestión y manipulación de los ficheros (siempre es mejor tener una sola copia de cada archivo). Además, si hacemos un enlace fuerte de un directorio, todos los ficheros y subdirectorios que contuviera también se deberían referenciar. Es por este motivo que sólo root puede hacer enlaces fuertes de directorios. Otra diferencia es que con un enlace simbólico podemos ver a qué archivo estamos apuntando, mientras que con un enlace fuerte no, debido a su implementación interna.

miércoles, 29 de septiembre de 2010

Gestión de permisos en GNU/Linux


El sub-sistema de archivos de Linux es muy estable, eficiente y poderoso. Combina tres componentes para implementarlo: 1) que permisos otorgar o quitar, 2) a cuáles usuarios, y 3) sobre cuáles archivos.
Esta gestión se puede llevar a cabo, ya sea con una GUI (Graphical User Interface), si es que contamos con una instalación que tenga algún tipo de escritorio como ser gnome, kde, lxde, etc; o bien en el ambiente de servidores desde la CLI (Command Line Interface).
Esta última forma lleva una etapa de aprendizaje, pero termina siendo mas provechosa para el administrador del sistema.
La siguiente es una explicación detallada del comando 'chmod':

CHMOD

En este documento nos referimos a la asignación de permisos en servidores unix (unix, linux, freebsd, todos ellos pertenecientes a la familia unix, y con diferencia los mas difundidos en la red). La asignación de permisos se hace mediante el comando CHMOD. Por eso, cuando al leer las instrucciones de instalación de cualquier aplicación web te encuentres con la misteriosa frase "chmod 666 tal_archivo.htm" tener en consideración que nos están diciendo los permisos que ese archivo necesita.
El sistema operativo UNIX está diseñado para ser multiusuario. Por ello UNIX permite tres niveles de acceso a los archivos, para tres categorías diferentes de usuarios:
Owner (propietario) La persona que el sistema reconoce como dueño del archivo.
Group (grupo): Conjunto de usuarios con permisos similares. Muy usado en entornos de trabajo, es de escasa aplicación en páginas web.
Other (otros): Cualquier otra persona.
Es un error asociar el concepto de usuario a una persona real. Se trata de una abstracción, que se refiere no a personas sino a categorias. Por ejemplo, si nosotros creamos un script, somos efectivamente sus autores y propietarios; pero ese script esta destinado a la red. Nosotros, y el resto de personas, accederan al archivo no a traves de nuestra maquina local sino por internet. Es frecuente en los servidores la creación de usuarios genéricos (root, www, www-user etc). En definitiva no olvides que cuando asignas permisos a un script, el owner puede ser cualquiera que visite la página, lo cual será necesario si como es normal se trata de scripts que se administran via web.

Tipos de permiso de acceso:
Read (lectura): Permiso para ver el archivo o directorio, sin hacer cambios.
Write (escritura): Permiso de escritura: puede escribir el archivo, y por tanto, cambiarlo.
Execute (ejecución): El archivo o directorio puede ser ejecutado. Se usa para directorios con scripts, formularios, etc ...
Y tratándose de directorios:
read listar los archivos de un directorio
write añadir nuevos archivos al directorio
execute acceder a los archivos del directorio
Como conozco los permisos de un archivo ?
Si tenemos acceso ftp al servidor, tecleamos el comando ls -l y vemos algo asi:
-rw-r--r-- 1 irvnet irvnet 1272 Sep 28 07:31 index.php

El primer carácter indica si nos encontramos ante un directorio o un fichero: d significa directorio, - significa fichero, l significa link
Permisos del Owner
Permisos del Group
Permisos de los Otros
Nombre usuario
Nombre grupo
Tamaño
Fecha
Nombre del archivo

Advierte que tenemos TRES categorias de usuarios ("user," "group," y "other") y para categoria pueden asignarse TRES tipos de permisos: "r," "w," y "x".
Fijando permisos
La orden chmod puede usarse con letras o numeros. La forma mas corriente es expresar los permisos numericamente. Seguro que lo has visto por ahi, chmod 777 etc ...
Para comprender el significado tienes que tener en cuenta que convencionalmente 4 significa permiso de lectura. 2 permiso de escritura y 1 permiso de ejecución. Sumando estos valores vemos que un archivo puede tener los siguientes permisos (por cada tipo de usuario):
4= lectura
2= escritura
1= ejecución
6 (4+2)= lectura y escritura
5 (4+1)= lectura y ejecución
3 (2+1)= escritura y ejecución
7 (4+2+1)= lectura, escritura y ejecución
Todo ello para los tres tipos de usuario.
Asi, un chmod file 777 significa que owner, group y others tienen permiso de lectura, escritura y ejecución. chmod 766 significa que el owner tiene permiso de lectura, escritura y ejecución, y el group y others permiso de lectura y escritura. Chmod 744 significa que el owner tiene permisos de lectura, escritura y ejecución, y group y others unicamente permisos de lectura.
Como ves, son tres digitos, de izquierda a derecha designan los permisos del owner, group y others.
Vemos a continuación su equivalente en letras:
0  =  ---  =  sin acceso
1  =  --x  =  ejecución
2  =  -w-  =  escritura
3  =  -wx  =  escritura y ejecución
4  =  r--  =  lectura
5  =  r-x  =  lectura y ejecución
6  =  rw-  =  lectura y escritura
7  =  rwx  =  lectura, escritura y ejecución
Asi, en el ejemplo de antes:
rw-r--r--
significa que el owner tiene permisos de lectura y escritura (rw-); el group permisos de lectura unicamente (r--) y other, permiso de lectura (r--). ¿como seria el equivamente numerico? sería chmod 644.
La sintaxis para usar chmod con texto:
chmod [ugo][+-][rwx] [nombre_archivo]
Donde [u=user, g=group y o=other]; [+/- activa o desactiva los atributos siguientes] [r=read, w=write, x=execute]
Por ejemplo, chmod go+r index.php significa que asignamos permisos de lectura para group y others en index.php
De esta forma solo cambiamos los atributos que especificamos, pero no alteramos otros compatibles que pudieran estar asignados anteriormente) por ejemplo, no modifica la atribucion anterior a group de un permiso de ejecución).
Si queremos fijar de nuevo todos los permisos, la sintaxis sería:
chmod go=r index.php donde asignamos a group y other permiso de lectura sobre index.php y eliminamos cualquier otro permiso para ambos.
Tener en cuenta asimismo que puedes usar comodines:
chmod 644 *.html etc ...

lunes, 14 de junio de 2010

GNU/Linux - Comandos informativos

MÚLTIPLES FORMAS DE VER INFORMACIÓN DEL SISTEMA
Copyright 2005-2008 Sergio González Durán
Se concede permiso para copiar, distribuir y/o modificar este documento siempre y cuando se cite al autor y la fuente de linuxtotal.com.mx y según los términos de la GNU Free Documentation License, Versión 1.2 o cualquiera posterior publicada por la Free Software Foundation.
autor: sergio.gonzalez.duran@gmail.com


Sistemas basados en GNU/Linux (Al igual que sus parientes basados en Unix como BSD o los de Macintosh) conservan la tradición de tener multitud de comandos que permiten conocer el estado del sistema. Es decir, cada uno da pequeñas piezas de información sobre multitud de partes diferentes de lo que esta sucediendo en tu sistema Linux. Algunos de estos comandos pueden ser ejecutados por cualquier usuario y otros varios solo por root. En esta ocasión te presento, sin ningún orden en específico, una recopilación de los más útiles y usados de estos comandos.

uname

Imprime información del sistema

(Procesador instalado en el equipo)
#> uname -p
Intel(R) Core(TM) Duo CPU T2450 @ 2.00GHz

(versión del kernel)
#> uname -r
2.6.22.9-laptop-1mdv

(o toda la información de uname a través de la opción -a)
#> uname -a
Linux segolap 2.6.22.9-laptop-1mdv #1 SMP Thu Sep 27 04:17:10 CEST 2007 i686 Intel(R) Core(TM) Duo CPU T2450 @ 2.00GHz GNU/Linux

Este último, muestra en orden, el tipo de kernel, el nombre del equipo, versión de kernel, fecha y hora, arquitectura del CPU (i686), tipo de procesador y tipo de sistema operativo (GNU/Linux).

fdisk

Permite manipular/crear particiones en Linux, pero tiene una interesante opción de consulta, -l:

#> fdisk -l

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

Device Boot Start End Blocks Id System
/dev/sda1 * 1 63 506016 83 Linux
/dev/sda2 64 10261 81915435 83 Linux
/dev/sda3 10262 18929 69625710 83 Linux
/dev/sda4 18930 19457 4241160 5 Extended
/dev/sda5 18930 19457 4241128+ 82 Linux swap / Solaris

Disk /dev/sdb: 40.0 GB, 40007761920 bytes
255 heads, 63 sectors/track, 4864 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x000063b0

Device Boot Start End Blocks Id System
/dev/sdb1 1 4863 39062016 c W95 FAT32 (LBA)

Podemos observar en este listado varios aspectos muy útiles, primero que tenemos dos dispositivos conectados al sistema, /dev/sda y /dev/sdb, los dos son discos duros, el primero es el propio del equipo y tiene varias particiones, incluso determinamos cual es la partición de arranque que es /dev/sda1. El segundo dispositivo contiene una partición Windows como podemos ver en la columna 'System' del último renglón 'W95 FAT32', que indiscutiblemente es de Windows, no es una memoria flash por el tamaño (Disk /dev/sdb: 40.0 GB) mostrado. Asi que se trata de un disco duro externo.

free

¿Sientes tu sistema demasiado lento?, comienza checando con free que despliega como se encuentra de saturada la memoria física RAM y la de la partición SWAP.

(la opción -m muestra el listado en megas)
#> free -m
total used free shared buffers cached
Mem: 2018 989 1028 0 39 450
-/+ buffers/cache: 500 1517
Swap: 4141 0 4141

La línea 'Mem:' es la memoría fisica RAM, que en este ejemplo tiene 2 GB de los cuáles se están usando 989 megas, bastante razonable todavía, la línea 'Swap:' muestra la partición de swap (lo que en Windows se le conoce como archivo de intercambio), que generalmente se establece al doble de la RAM y que idealmente no debe estar usada, como el ejemplo lo muestra. Cuando tu línea Swap muestra demasiado uso y casi nada libre, tienes serios problemas de rendimiento, considera entonces en incrementar tu RAM. Prueba con free -mt para ver una línea más al final con la suma de las dos Mem + Swap.

mount

Comando que se utiliza para montar dispositivos, algo complejo y con múltiples opciones. Pero para este tutorial, basta con que lo invoques sin opción alguna ni argumentos, para que nos revele la información de que tienes montado y en que lugar esta montado.

#> mount
/dev/sda1 on /boot type ext3 (rw,noatime)
/dev/sda2 on / type ext3 (rw,noatime)
/dev/sda3 on /home type ext3 (rw,noatime)
none on /proc type proc (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
/dev/sdb1 on /media/hd type vfat (rw,nosuid,nodev,sync,users,umask=0022,iocharset=utf8)

Un pequeño análisis me permite determinar que en el equipo hay tres particiones sobre el mismo disco duro (dispositivo /dev/sda), que son /boot (sda1), / (sda2), y /home (sda3), todas son del tipo 'ext3' el filesystem por defecto de Linux. Hay dos sistemas virtuales montados en /proc y otro dispositivo (/dev/sdb1) accesible a través del directorio /media/hd y que es del tipo DOS FAT. Como podrás observar, esta información se complementa a la arrojada por fdisk -l.

lsmod

Muestra el status de los módulos del kernel actualmente cargados en el sistema.

[root@segolap ~]# lsmod
Module Size Used by
fat 45852 1 vfat
i915 22688 3
drm 72628 4 i915
vmnet 34564 16
parport_pc 32004 0
parport 31592 1 parport_pc
blkcipher 5860 1 ecb
snd_seq_midi_event 6912 1 snd_seq_oss
snd_seq 46800 5 snd_seq_dummy,snd_seq_oss,snd_seq_midi_event
snd_seq_device 7276 3 snd_seq_dummy,snd_seq_oss,snd_seq
ieee80211 31752 1 ipw3945
ieee80211_crypt 5248 2 ieee80211_crypt_wep,ieee80211
mmc_core 23108 2 mmc_block,sdhci
agpgart 27656 3 drm,intel_agp
snd_pcm 69636 3 snd_pcm_oss,snd_hda_intel
libata 108688 2 ata_piix,ahci
scsi_mod 124972 6 usb_storage,sr_mod,sg,scsi_wait_scan,sd_mod,libata
... listado no completo

El listado se autoexplica, el módulo, su tamaño y quien lo usa. Por ejemplo, el módulo 'ieee80211' es utilizado por el driver para tarjetas inalámbricas 'ipw3945', etc. Este comando se complementa con el de inserción de módulos insmod y con el que remueve módulos rmmod.

lspci

Lista los dispositivos PCI del sistema.

#> lspci
00:00.0 Host bridge: Intel Corporation Mobile 945GM/PM/GMS, 943/940GML and 945GT Express Memory Controller Hub (rev 03)
00:02.1 Display controller: Intel Corporation Mobile 945GM/GMS/GME, 943/940GML Express Integrated Graphics Controller (rev 03)
00:1b.0 Audio device: Intel Corporation 82801G (ICH7 Family) High Definition Audio Controller (rev 02)
00:1c.0 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 1 (rev 02)
00:1d.1 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #2 (rev 02)
00:1d.7 USB Controller: Intel Corporation 82801G (ICH7 Family) USB2 EHCI Controller (rev 02)
00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev e2)
00:1f.0 ISA bridge: Intel Corporation 82801GBM (ICH7-M) LPC Interface Bridge (rev 02)
00:1f.1 IDE interface: Intel Corporation 82801G (ICH7 Family) IDE Controller (rev 02)
00:1f.2 SATA controller: Intel Corporation 82801GBM/GHM (ICH7 Family) SATA AHCI Controller (rev 02)
00:1f.3 SMBus: Intel Corporation 82801G (ICH7 Family) SMBus Controller (rev 02)
04:00.0 Ethernet controller: Broadcom Corporation NetLink BCM5787M Gigabit Ethernet PCI Express (rev 02)
05:00.0 Network controller: Intel Corporation PRO/Wireless 3945ABG Network Connection (rev 02)
06:00.0 FLASH memory: ENE Technology Inc ENE PCI Memory Stick Card Reader Controller
06:00.1 Generic system peripheral [0805]: ENE Technology Inc ENE PCI SmartMedia / xD Card Reader Controller
06:00.3 FLASH memory: ENE Technology Inc ENE PCI Secure Digital / MMC Card Reader Controller

Tomemos una línea de ejemplo:

05:00.0 Network controller: Intel Corporation PRO/Wireless 3945ABG Network Connection (rev 02)

El primer campo (05:00.0) es el slot PCI donde se ubica el dispositivo bus 05 dispositivo 00 función 0, después sigue la clase de dispositivo (Network controller), el fabricante (Intel Corporation), el nombre del dispositivo (PRO/Wireless 3945ABG Network Connection) y el número de revisión del mismo (rev 02).

Información bastante útil, ya que por ejemplo, en mi caso, este dispositivo no funcionó cuando recien instalé Linux, pero con esta info del sistema comencé a determinar el tipo de drivers que necesitaba para hacerla funcionar.

Puedes obtener aun más información de cada dispositivo PCI con la opción -v y aun más con -vv, asi que trata con lspci -vv y observa cuanto puedes lograr saber de cada dispositivo.

lsusb

Lista los dispositivos usb del sistema.

#> lsusb
Bus 005 Device 004: ID 05e3:0702 Genesys Logic, Inc. USB 2.0 IDE Adapter
Bus 005 Device 003: ID 064e:a101 Suyin Corp.
Bus 005 Device 001: ID 0000:0000
Bus 001 Device 001: ID 0000:0000
Bus 002 Device 004: ID 062a:0003 Creative Labs
Bus 002 Device 001: ID 0000:0000
Bus 003 Device 001: ID 0000:0000
Bus 004 Device 001: ID 0000:0000

mmmmm, no muy informativo que digamos, pero solo hay que saber buscar, asi que si usamos la opción -v, nos devuelve más información, en mi caso, la cámara web de mi laptop no funcionaba, para buscar los drivers o configuración adecuada busqué con este comando y encontré lo siguiente:

#> lsusb -v
...
Bus 005 Device 003: ID 064e:a101 Suyin Corp.
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 239 Miscellaneous Device
bDeviceSubClass 2 Common Class
bDeviceProtocol 1 Interface Association
bMaxPacketSize0 64
idVendor 0x064e Suyin Corp.
idProduct 0xa101
bcdDevice 1.00
iManufacturer 2 SuYin
iProduct 1 Acer CrystalEye webcam
iSerial 3 CN0314-OV03-VA-R02.00.00
...

El listado es bastante largo, asi que lo muestro con lo relevante solamente, en el 'Bus 005 Device 003:' se encuentra algo llamado 'Suyin Corp', y viendo más detalle con -v encuentro que es 'Acer CrystalEye webcam', asi que con esto se facilita la búsqueda en Internet para conseguir los drivers adecuados para linux, cosa que con paciencia eventualmente se logra. Ya que encontré que con la distro Mandriva viene soportada por defecto.

blkid

Block Id. Despliega los atributos del dispositivo de bloque.

#> blkid
/dev/sda1: UUID="d22801c6-85ca-11dc-849e-afde43df714c" SEC_TYPE="ext2" TYPE="ext3"
/dev/sda2: UUID="ae22f1dc-85ca-11dc-acbd-cb4aee4dedb7" SEC_TYPE="ext2" TYPE="ext3"
/dev/sda3: UUID="d3990398-85ca-11dc-aab5-4d80db2607e2" SEC_TYPE="ext2" TYPE="ext3"
/dev/sda5: TYPE="swap" UUID="f6bfa9b2-85ca-11dc-abd6-01935478454b"
/dev/sdb1: LABEL="SEGO" UUID="46CD-5C01" TYPE="vfat"


dmidecode y lshw

Ahora bien, que si de determinar el hardware del equipo se trata, nada como este comando. Que lo que hace es leer la información del BIOS directamente y te regresa un listado muy completo de todo el hardware encontrado en el equipo. DMI es por Desktop Management interface y lee la información del llamado SMBIOS (System Management BIOS).

dmidecode por defecto ofrece un listado bastante largo y completo, asi que si deseas uno más corto o resumido, úsalo con -q.

Si no tienes instalado dmidecode prueba con lshw que básicamente hace lo mismo.

df

Reporta el uso de espacio en los discos duros.

# df
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 77G 16G 58G 22% /
/dev/sda1 479M 21M 433M 5% /boot
/dev/sda3 66G 36G 30G 55% /home
/dev/sdb1 38G 24G 14G 64% /media/hd

Muy fácil de entender y usar, úsalo seguido, sobre todo si descargas bastante y asi podrás saber cuando se están llenando tus dispositivos de almacenamiento. En algunas versiones de df tendrás que usar la opción -h (formato humano) para que puedas ver el mismo listado mostrado en Megas o Gigas.

uptime

Muestra cuanto tiempo lleva prendido el sistema y otra información.

#> uptime
19:59:45 up 2:18, 2 users, load average: 1.14, 1.13, 1.09

Primero la hora actual, seguido de 'up 2:18', que significa prendido por dos horas y 18 minutos, claro este campo puede cambiar a días, etc., dos usuarios en el sistema y por último la carga promedio del CPU (load average), en el último minuto, 5 y 15 respectivamente. Mientras más bajo este número es mejor, queriendo decir que por ejemplo, se requieren 1.14 procesadores en el momento que se ejecutó 'uptime' para en ese preciso instante terminar con todos los procesos del sistema. Esto no es exactamente preciso pero te puede dar una buena idea lo cargado o desocupado que esta tu CPU. Ahora bien, ¿quienes son esos dos usuarios en el sistema?, veámoslo con el siguiente comando.

w

Muestra que usuarios están en el sistema y lo que están haciendo.

# w
20:07:12 up 2:25, 2 users, load average: 1.18, 1.12, 1.09
USER TTY LOGIN@ IDLE JCPU PCPU WHAT
root tty1 19:09 7:34 0.16s 0.16s -bash
sergio :0 17:43 ?xdm? 2:22m 0.06s /bin/sh /usr/bin/quanta

La primera línea de w es lo mismo que regresa uptime, y después nos dice quienes son los dos usuarios en el sistema, en que terminal están 'TTY', si fuera desde otro equipo mostraría la IP, la hora en que se loguearon 'LOGIN@', y la última columna muestra lo que están ejecutando en el momento en que se ejecutó w.

Como complemento de uptime y w puedes usar lo siguiente:

#> who -b
system boot 2008-01-13 17:41

Indica la fecha y hora en que el sistema inició.

lsof

List open files. Muestra los archivos que un proceso ha abierto para poder ejecutarse.

(ejecutamos 'man lsof' en una terminal)
#> man lsof
(desde otra terminal determinamos su PID)
#> ps -ed | grep man
root 9700 6514 0 21:11 pts/1 00:00:00 man lsof
(y ejecutamos lsof con la opción -p)
#> lsof -p 9700
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
man 9700 root cwd DIR 8,2 4096 5603329 /root
man 9700 root rtd DIR 8,2 4096 2 /
man 9700 root txt REG 8,2 43416 9529630 /usr/bin/man
man 9700 root mem REG 8,2 254076 9520457 /usr/share/locale/UTF-8/LC_CTYPE
man 9700 root mem REG 8,2 1298800 7277050 /lib/i686/libc-2.6.1.so
man 9700 root mem REG 8,2 52 9521060 /usr/share/locale/en_US.UTF-8/LC_MESSAGES/SYS_LC_MESSAGES
man 9700 root mem REG 8,2 26052 9519467 /usr/lib/gconv/gconv-modules.cache
man 9700 root mem REG 8,2 565473 7274508 /lib/ld-2.6.1.so
man 9700 root 0u CHR 136,1 3 /dev/pts/1
man 9700 root 1u CHR 136,1 3 /dev/pts/1
man 9700 root 2u CHR 136,1 3 /dev/pts/1
man 9700 root 3r REG 8,2 4808 4523300 /etc/man.config

Podemos observar de las librerias, archivos de configuración (última línea), y los comandos que se invocaron para ejcutar una consulta de manual. este comando lsof es altamente útil cuando se trata de determinar las dependencias que un programa requiere para ejecutarse.

Si utilizas lsof sin argumentos te dará un larguísimo listado de todos los procesos que se estén ejecutando en ese momento.

last y lastb

last muestra un listado de los últimos usuarios logueados al sistema e información relevante, lastb last bad, muestra los últimos intentos de logueo al sistema que fracasaron, utilísimo para determinar posibles intentos de acceso ilegítimo al sistemo (hackeo).

#> last
root tty1 Sun Jan 13 19:59 still logged in
sergon :0 Sun Jan 13 17:43 still logged in
reboot system boot 2.6.22.9-laptop- Sun Jan 13 17:41 (04:19)
root tty1 Sun Jan 13 00:23 - crash (17:18)
sergon :0 Sat Jan 12 23:56 - 00:48 (00:52)
reboot system boot 2.6.22.9-laptop- Sat Jan 12 23:55 (22:05)
sergon :0 Sat Jan 12 19:35 - down (00:57)
reboot system boot 2.6.22.9-laptop- Sat Jan 12 19:34 (00:59)
sergon :0 Sat Jan 12 17:41 - down (01:16)
reboot system boot 2.6.22.9-laptop- Sat Jan 12 17:40 (01:17)
sergon :0 Sat Jan 12 08:15 - 12:41 (04:25)
reboot system boot 2.6.22.9-laptop- Sat Jan 12 08:15 (04:26)
sergon :0 Fri Jan 11 22:11 - crash (10:03)
reboot system boot 2.6.22.9-laptop- Fri Jan 11 21:49 (14:51)
sergon :0 Thu Jan 10 22:12 - 22:36 (00:23)
reboot system boot 2.6.22.9-laptop- Thu Jan 10 22:11 (00:24)

Podemos ver que usuario se logueó, en que terminal, día, fecha y hora, a que hora terminó o si continua logueado (still logged in). Es posible también conocer por ejemplo en las líneas que dice 'crash' que el sistema no se apagó adecuadamente.

#> lastb
# lastb
pedro 192.168.0.10 Sun Jan 13 22:04 - 22:04 (00:00)
root tty2 Sun Jan 13 21:20 - 21:20 (00:00)

Con lastb obtenemos los intentos de logueo que fracasaron. Por ejemplo, en un sistema real en producción donde no existiera el usuario 'pedro' resultaría obvio que alguien esta tratando de obtener acceso remoto, adivinando usuario:contraseña. Deberías preocuparte enormemente y tomar acción, si en el listado de last observas un logueo de root u otro usuario que tu como administrador sepas no debió entrar al sistema en esas fechas u horas, o peor aun que se trata de tu ¡¡usuario!! y no habías ingresado previamente. Con seguridad significa que ya te hackearon tu sistema o consiguieron tu contraseña.

dmesg

Parte del servidor de mensajes del sistema syslog, dmesg es principalmente usado para mostrar los mensajes que se mostraron en pantalla cuando se inicio (boot) el sistema. Se usa sobretodo para realizar depuraciones al sistema de como se están cargando los diversos módulos y componentes al arranque del sistema o ya en ejecución. Debido a lo extenso del sistema, es conveniente redireccionar la salida a un archivo:

#> dmesg > mensajes

Con less o cat o en tu editor favorito puedes con calma analizar el archivo.

ps

El comando por excelencia para mostrar información de procesos, en este artículo de LinuxTotal.com.mx se encuentra una amplia explicación de este comando y otros usados para la administración de procesos.

Este artículo seguirá creciendo de vez en cuando con nueva información sobre comandos que regresan datos valiosos del sistema, asi que chécalo de tiempo en tiempo.

miércoles, 14 de abril de 2010

Bases de Datos Relacionales


Una base de datos relacional es una base de datos que cumple con el modelo relacional, el cual es el modelo más utilizado en la actualidad para modelar problemas reales y administrar datos dinámicamente. Permiten establecer interconexiones (relaciones) entre los datos (que están guardados en tablas), y trabajar con ellos conjuntamente. Tras ser postuladas sus bases en 1970 por Edgar Frank Codd, de los laboratorios IBM en San José (California), no tardó en consolidarse como un nuevo paradigma en los modelos de base de datos.

Acceder al enlace del párrafo y leer, hasta tener bien en claro c/u de los conceptos que conforman el modelo de BBDD relacional.