viernes, 27 de febrero de 2009

Fedora tiene registrado más de 12 millones de usuarios con instalaciones activas

De acuerdo al sistema que tiene Fedora para registrar el número de usuarios con instalaciones activas, tomando en cuenta las conexión que se hacen a los repositorios por actualizaciones, tienen determinado que existen hasta mediados de febrero, más de 12 millones de instalaciones de la distribución.

El reporte proporcionado por Fedora comprende un periodo hasta el 16 de febrero registrando en total 12,188,598 de instalaciones de la distro, con versiones tales como la 7, 8, 9 y 10.

Un dato importante ha sido que de Fedora a 9 a 10 hay un incremento de 115% de instalaciones en un periodo similar, haciendo evidente el auge que ha tenido esta última versión.

En otro dato destacado esta la gran cantidad de instalaciones activas de Fedora 8, ocupando el primer lugar de este reporte. Esto hace manifiesto que muchos usuarios aún no quieren actualizarse a las versiones recientes, a pesar de que Fedora 8 fue publicada en noviembre de 2007.

fuente: espaciolinux.com

HP certifica a Ubuntu en la linea de servidores HP ProLiant

HP ha anunciado recientemente el propósito de unir sus fuerzas con Canonical para ofrecer certificación hardware de Ubuntu Server en sus servidores de la gama ProLiant. Los ingenieros de HP y Canonical trabajarán conjuntamente para garantizar el funcionamiento perfecto entre el sistema operativo Ubuntu y los equipos ProLiant de HP. Sin lugar a dudas, este acuerdo supone un avance importante de Canonical en el sector empresarial y, sobre todo, un gran paso para Linux.

fuente:barrapunto.com

jueves, 26 de febrero de 2009

Citrix ofrece XenServer de manera gratuita


Con esta nueva versión, XenServer fija un estándar completamente nuevo para la virtualización gratuita con el agregado de nuevas funciones.


Citrix Systems reveló una versión nueva de Citrix XenServer, plataforma de virtualización de clase empresarial probada en nube, que se ofrecerá en forma gratuita a cualquier usuario para desarrollo de producción ilimitado.


Si bien los hipervisores básicos han sido gratuitos por años, la mayoría tenían un uso práctico limitado en entornos del mundo real. Con esta nueva versión, XenServer fija un estándar completamente nuevo para la virtualización gratuita con el agregado de nuevas funciones como la administración centralizada de nodos múltiples, compartición de recursos en servidores múltiples y movimiento completo en vivo.


XenServer es un componente clave de la familia de productos Citrix Delivery Center, un sistema exhaustivo del centro de datos al escritorio que ayuda a los clientes a transformar centros de datos estáticos en “centros de entrega" dinámicos. XenServer está impulsado por el mismo motor de virtualización Xen que se ejecuta en casi cualquier sistema de nube independiente actual.


“Los hipervisores gratuitos con funcionalidad limitada han estado disponibles por mucho tiempo. Esta decisión nos parece considerablemente distinta porque ofrece una plataforma de infraestructura virtual competitiva y lista para la empresa con una administración totalmente centralizada, movimiento en vivo y soporte para servidores y máquinas virtuales ilimitados. Todo sin compromisos", dijo Mark Bowker, analista de Enterprise Strategy Group. “Esta es una decisión muy positiva que tiene el potencial de acelerar la adopción de la virtualización para clientes empresariales de todos los tamaños y hacer que sea más fácil para los proveedores externos de servicios en nube agregar un soporte completo para Windows a sus ofertas existentes de Linux", agregó Bowker.

fuente: diario IT

lunes, 23 de febrero de 2009

La version 9.10 de Ubuntu de llamara "Karmic Koala"

Sin salir aun la version 9.04 de Ubuntu "Jaunty Jackalope" (se espera su salida para Abril), Mark Shuttleworth a anunciado el nombre de la version que sera la sucesora de esta, y se llamara "Karmic Koala", version 9.10 de Ubuntu.

Por cuarta vez, Shuttleworth dice que "Karmic Koala" podría recibir un nuevo tema de escritorio . El proceso de arranque será revisado, centrándose en mejorar los tiempos de arranque, mediante la colaboración con Red Hat Plymouth . También están considerando una nueva GDM, proporcionando una mejor experiencia de acceso.

viernes, 20 de febrero de 2009

Video como Instalar Debian Lenny

Como dice el titulo, video de Genbeta sobre la instalacion de GNU /Linux Debian Lenny. Creo que aunque no utilizen esta version o no necesiten instalarla, es util ver el video para ver como se instala y como va progresando linux en este aspecto.

jueves, 19 de febrero de 2009

Fedora 10 RE-Spin


Desde el Proyecto Fedora Brasil se anuncia la disponibilidad del primer Re-Spin del actual Fedora 10, incluyendo todas las actualizaciones de esa distribución hasta este último 10 de Febrero. Este Fedora 10 Re-Spin está disponible en formato DVD (3.6 Gb) con soporte de múltiples idiomas y también en formato LiveCD con el escritorio KDE4, ambas sólo para la arquitectura x86.

fuente: vivalinux.com.ar

miércoles, 18 de febrero de 2009

Como hacer UPGRADE de Debian Etch a Lenny

Voy a guiarlos como con unos simples pasos pueden actualizar su Debian Etch a Lenny:

  • Instalar las ultimas actualizaciones de ETCH
Editar el archivo /etc/apt/sources.list o chequear que digan etch, les dejo un ejemplo:

#
vi /etc/apt/sources.list
deb http://ftp2.de.debian.org/debian/ etch main
deb-src http://ftp2.de.debian.org/debian/ etch main

deb http://security.debian.org/ etch/updates main contrib
deb-src http://security.debian.org/ etch/updates main contrib
Ahora ejecutamos el comando para actualizar el sistema.

# aptitude update
# aptitude upgrade

  • Modificar los repositorios para usar Lenny
Ahora editamos /etc/apt/sources.list y cambiamos donde dice etch por lenny, quedaria asi:

# vi /etc/apt/sources.list

deb http://ftp2.de.debian.org/debian/ lenny main
deb-src http://ftp2.de.debian.org/debian/ lenny main

deb http://security.debian.org/ lenny/updates main contrib
deb-src http://security.debian.org/ lenny/updates main contrib
Ahora nuevamente actualizamos y hacemos el upgrade

#
aptitude update
# aptitude install dpkg aptitude apt
# aptitude upgrade

Si estan actualizando Debian en una maquina que se utiliza como desktop , chequear tener instalado el paquete libfam0c102

#
dpkg -l libfam0c102 | grep ^ii

Si este paquete se encuentra, es decir que aparece luego de poner ese comando, vamos a instalar la version para Lenny

# aptitude install libfam0

Actualizamos por completo la distribucion

# aptitude full-upgrade

A esperar tomando cafe, y luego, una vez que esta todo listo, reiniciar el sistema

# reboot

Luego de reiniciado, para verificar la version pueden hacer uname -a o cat /etc/debian_version

# uname -a
# cat /etc/debian_version
5.0

Listo, ya esta, ahora a disfrutar!

martes, 17 de febrero de 2009

Debian GNU/Linux 5.0 "Lenny"

Salió finalmente Debian Lenny como version estable, en las notas de publicacion, en la tabla de contenidos, se puede ver con detalle todo lo nuevo que trae esta distribucion, como por ejemplo:

  • Kernel 2.6.26
  • GNOME 2.22.2
  • KDE 3.5.10
  • XFCE 4.4.2
  • LXDE 0.3.2.1
  • Iceweasel 3.0.6
  • OpenOffice.org 2.4.1
Si desean ver la publicacion completa ver este link.
http://www.debian.org/News/2009/20090214

Para bajar debian:
http://www.debian.org/distrib/

domingo, 15 de febrero de 2009

miércoles, 11 de febrero de 2009

Guia de Referencia para VI


Este wallpaper es muy muy util para los que utilizan VI como editor de texto, si bien es basico, es muy util. Hagan clic en la imagen para descargarlo

lunes, 9 de febrero de 2009

Como montar particiones ntfs con ntfs-3g

Nota: Todos los pasos y comandos descritos aquí precisan de privilegios de administrador, es decir, de root.

Antes que nada debes instalar el paquete ntfs-3g de los repositorios de Debian.

Primero, localizamos el nombre de la partición o disco duro que vamos a montar. La siguiente orden muestra las diferentes particiones de nuestro disco duro y los sistemas de archivos que usa cada una.

# fdisk -l

Un ejemplo de lo que aparecerá es:

Disco /dev/sda: 320.0 GB, 320072933376 bytes
255 heads, 63 sectors/track, 38913 cylinders
Units = cilindros of 16065 * 512 = 8225280 bytes
Disk identifier: 0xd9cc64e7

Disposit. Inicio Comienzo Fin Bloques Id Sistema
/dev/sda1 * 1 8928 71714128+ 7 HPFS/NTFS
/dev/sda2 8929 10752 14651280 83 Linux
/dev/sda3 10753 37693 216403582+ 83 Linux
/dev/sda4 37694 38913 9799650 5 Extendida
/dev/sda5 37694 38058 2931831 83 Linux
/dev/sda6 38059 38423 2931831 83 Linux
/dev/sda7 38424 38913 3935893+ 82 Linux swap / Solaris

Disco /dev/sdb: 8017 MB, 8017412096 bytes
255 heads, 63 sectors/track, 974 cylinders
Units = cilindros of 16065 * 512 = 8225280 bytes
Disk identifier: 0x000bee9a

Disposit. Inicio Comienzo Fin Bloques Id Sistema
/dev/sdb1 1 974 7823623+ b W95 FAT32

Tu disco duro principal es /dev/sda (o /dev/hda si usas Debian Etch) y el número que le acompaña distingue cada partición que existe en él.

Ahora bien, lo que nos interesa es el bloque Sistema donde se especifica el sistema de archivos usado y ya que queremos montar una partición en ntfs buscaremos el /dev/sda que corresponda al sistema HPFS/NTFS. En mi caso es el /dev/sda1.

Creamos un directorio donde se va a montar la partición o el disco duro en ntfs.

# mkdir /media/windows

Acto seguido abrimos el archivo fstab, en /etc, con nuestro editor de textos favorito y añadimos la información que le permitirá al sistema cargar la partición al inicio.

/dev/sda1 /media/windows ntfs-3g defaults,locale=es_ES.UTF8 0 0

La linea locale=es_ES.UTF8 es opcional, aunque si la ponemos podremos leer caracteres con acentos de los archivos.

Errores comunes:

  • Imposible montar el volumen seleccionado.
  • hibernated non-system partition, refused to mount.

    failed to mount '/dev/hda5': operación no permitida

    "The NTFS partition is hibernated. Please resume and shutdown Windows
    properly, so mounting could be done safely."

    Solución: Reinicien, carguen Windows y lo apagan correctamente, ahora no dará error.

  • WARNING: Deficient Linux kernel detected.
  • WARNING: Deficient Linux kernel detected. Some driver features are
    not available (swap file on NTFS, boot from NTFS by LILO), and
    unmount is not safe unless it's made sure the ntfs-3g process
    naturally terminates after calling 'umount'. If you wish this
    message to disappear then you should upgrade to at least kernel
    version 2.6.20, or request help from your distribution to fix
    the kernel problem. The below web page has more information:
    http://ntfs-3g.org/support.html#fuse26

    Solo es una advertencia si sus kernels de Debian, son anteriores al 2.6.20, de todos modos funcionara, ntfs-3g, pero algunas funciones no estarán disponibles, si quieren de una buena vez quitar esa advertencia, actualicen el kernel a la versión 2.6.20 o superior.


    Fuente : es debian

sábado, 7 de febrero de 2009

CREAR UN LOG PROPIO PARA IPTABLES

Prácticamente todos los mensajes generados por el sistema se guardan por default en /var/log/messages, esto es útil y necesario, pero de una manera muy sencilla podemos hacer que los eventos o mensajes generados por iptables se guardan en su propio archivo de bitacora (log).

Editar /etc/syslog.conf

En este archivo de configuración se indica el modo en que los mensajes del sistema son bitacorizados a través de la utileria syslogd que se instala y configura por default en todos los sistemas GNU/Linux y rara vez el usuario del sistema la modifica, pero en esta ocasión lo abriremos (con tu editor favorito) y haremos lo siguiente:

#> vi /etc/syslog.conf
Y añadimos al final la siguiente línea
kern.warning /var/log/iptables.log

/etc/syslog.conf se compone de varias líneas y cada línea es una regla que indica como bitacorizar los mensajes del sistema. Cada regla tiene dos campos, tal como el que añadimos al final. El primer campo (kern.warning) es el "selector" que se compone de dos partes separadas por el punto: facility.priority, 'facility' que en este caso es kern (kernel) representa el subsistema que produce el mensaje y 'priority' define la severidad del mensaje. Estas pueden ser en orden ascendente: debug, info, notice, warning, error, crit, alert, emerg.

Entonces 'warning' es el nivel 4 de prioridad e indica entonces que todos los mensajes provenientes del kernel que tengan un nivel de prioridad 4 o mayor se bitacorizarán en el archivo /var/log/iptables.log y se ignoran los de debug, info y notice que son del 3 hacía abajo y que generalmente son irrelevantes.

Es importante aclarar que los mensajes del sistema también seguirán guardándose en /var/log/messages y otros que se tengan definidos en /etc/syslog.conf ya que lo que hicimos fue 'añadir' una línea más y no modificamos nada de lo que ya estaba ahí.

Reiniciando el servidor syslog

Como cualquier otro programa servidor hay que reiniciarlo para que los cambios en el archivo de configuración surtan efecto.

#> /etc/rc.d/init.d/syslog restart       o en varias distros
#> /etc/init.d/syslog restart
si tienes el comando service instalado
#> service syslog restart

Modificando el firewall

Si por ejemplo quieres bitacorizar todo lo que sea rechazado en la cadena INPUT:

iptables -A INPUT -j LOG -log--level 4
iptables -A INPUT DROP

Es decir, generalmente se usará el targer LOG antes de rechazar los paquetes que no queramos, y como notarás en el ejemplo usamos la opción -log--level 4 que activará syslog solo cuando el mensaje sea del tipo warning (4) o superior.

Un ejemplo más interesante es el siguiente:

iptables -A INPUT -s 192.168.10.10 -p tcp -m tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 22 -j LOG --log-prefix 'INTENTO DE ACCESO A SSH ' --log-level 4
iptables -A INPUT -p tcp -m tcp --dport 22 -j REJECT

En este caso, la primera regla está aceptando a la ip 192.168.10.10, pero si es cualquier otra ip, entonces se bitacoriza el evento con el mensaje 'INTENTO DE ACCESO A SSH ' en /var/log/iptables.log

Esto es mucho más útil ya que posteriormente con un simple grep podremos observar solo los mensajes de este tipo:

#> grep 'INTENTO DE ACCESO A SSH' /var/log/iptables.log
Apr 13 10:43:39 equipolinux kernel: INTENTO DE ACCESO A SSH IN=eth1 OUT= MAC=00:50:fc:89:63:39:00:16:e6:82:cd:8a:08:00 SRC=192.168.10.16 DST=192.168.10.100 LEN=48 TOS=0x00 PREC=0x00 TTL=128 ID=4601 DF PROTO=TCP SPT=1138 DPT=22 WINDOW=65535 RES=0x00 SYN URGP=0
Apr 13 10:44:10 equipolinux kernel: INTENTO DE ACCESO A SSH IN=eth1 OUT= MAC=00:50:fc:89:63:39:00:16:e6:82:cd:8a:08:00 SRC=192.168.10.16 DST=192.168.10.100 LEN=48 TOS=0x00 PREC=0x00 TTL=128 ID=4602 DF PROTO=TCP SPT=1138 DPT=22 WINDOW=65535 RES=0x00 SYN URGP=0

Se puede apreciar que hay dos intentos de acceder al servidor ssh del equipolinux (192.168.10.100) desde el equipo 192.168.10.16 y con tan solo algunos segundos de diferencia, esto ya es sospechoso y habría que investigar quien está intentando conectarse y porque. (Claro estando en una LAN que controlemos)

Pues ahí lo tienes, puedes agregar a tus reglas de iptables todos los targets LOG que consideres necesarios y revisarlos más utilmente en un archivo por separado. Espero te sea útil.

autor: sergio.gonzalez.duran@gmail.com

jueves, 5 de febrero de 2009

MANUAL BÁSICO DE ADMINISTRACIÓN DE PROCESOS

La más simple definición de un proceso podría ser que es una instancia de un programa en ejecución (corriendo). A los procesos frecuentemente se les refiere como tareas. El contexto de un programa que esta en ejecución es lo que se llama un proceso. Este contexto puede ser mas procesos hijos que se hayan generado del principal (proceso padre), los recursos del sistema que este consumiendo, sus atributos de seguridad (tales como su propietario y permisos de archivos asi como roles y demás de SELinux), etc.

Linux, como se sabe, es un sistema operativo multitarea y multiusuario. Esto quiere decir que múltiples procesos pueden operar simultáneamente sin interferirse unos con los otros. Cada proceso tiene la "ilusión" que es el único proceso en el sistema y que tiene acceso exclusivo a todos los servicios del sistema operativo.

Programas y procesos son entidades distintas. En un sistema operativo multitarea, múltiples instancias de un programa pueden ejecutarse sumultáneamente. Cada instancia es un proceso separado. Por ejemplo, si cinco usuarios desde equipos diferentes, ejecutan el mismo programa al mismo tiempo, habría cinco instancias del mismo programa, es decir, cinco procesos distintos.

Cada proceso que se inicia es referenciado con un número de identificación único conocido como Process ID PID, que es siempre un entero positivo. Prácticamente todo lo que se está ejecutando en el sistema en cualquier momento es un proceso, incluyendo el shell, el ambiente gráfico que puede tener múltiples procesos, etc. La excepción a lo anterior es el kernel en si, el cual es un conjunto de rutinas que residen en memoria y a los cuales los procesos a través de llamadas al sistema pueden tener acceso.


ps

El comando ps es el que permite informar sobre el estado de los procesos. ps esta basado en el sistema de archivos /proc, es decir, lee directamente la información de los archivos que se encuentran en este directorio. Tiene una gran cantidad de opciones, incluso estas opciones varían dependiendo del estilo en que se use el comando. Estas variaciones sobre el uso de ps son las siguientes:

  • Estilo UNIX, donde las opciones van precedidas por un guión -
  • Estilo BSD, donde las opciones no llevan guión
  • Estilo GNU, donde se utilizan nombres de opciones largas y van precedidas por doble guión --

Sea cual sea el estilo utilizado, dependiendo de las opciones indicadas, varias columnas se mostrarán en el listado de procesos que resulte, estas columnas pueden ser entre muchas otras, las siguientes (y principales):

p o PID
Process ID, número único o de identificación del proceso.
P o PPID
Parent Process ID, padre del proceso
U o UID
User ID, usuario propietario del proceso
t o TT o TTY
Terminal asociada al proceso, si no hay terminal aparece entonces un '?'
T o TIME
Tiempo de uso de cpu acumulado por el proceso
c o CMD
El nombre del programa o camndo que inició el proceso
RSS
Resident Sise, tamaño de la parte residente en memoria en kilobytes
SZ o SIZE
Tamaño virtual de la imagen del proceso
NI
Nice, valor nice (prioridad) del proceso, un número positivo significa menos tiempo de procesador y negativo más tiempo (-19 a 19)
C o PCPU
Porcentaje de cpu utilizado por el proceso
STIME
Starting Time, hora de inicio del proceso
S o STAT
Status del proceso, estos pueden ser los siguientes
  • R runnable, en ejecución, corriendo o ejecutándose
  • S sleeping, proceso en ejecución pero sin actividad por el momento, o esperando por algún evento para continuar
  • T sTopped, proceso detenido totalmente, pero puede ser reiniciado
  • Z zombie, difunto, proceso que por alguna razón no terminó de manera correcta, no debe haber procesos zombies
  • D uninterruptible sleep, son procesos generalmente asociados a acciones de IO del sistema
  • X dead, muerto, proceso terminado pero que sigue apareciendo, igual que los Z no deberían verse nunca

Las opciones completas de ps las encuentras en las páginas del manual (man ps), o escribiendo en la terminal ps L, y para ver un resumen de sus opciones más comunes usa ps --help:

#> ps --help
********* simple selection ********* ********* selection by list *********
-A all processes -C by command name
-N negate selection -G by real group ID (supports names)
-a all w/ tty except session leaders -U by real user ID (supports names)
-d all except session leaders -g by session OR by effective group name
-e all processes -p by process ID
T all processes on this terminal -s processes in the sessions given
a all w/ tty, including other users -t by tty
g OBSOLETE -- DO NOT USE -u by effective user ID (supports names)
r only running processes U processes for specified users
x processes w/o controlling ttys t by tty
*********** output format ********** *********** long options ***********
-o,o user-defined -f full --Group --User --pid --cols --ppid
-j,j job control s signal --group --user --sid --rows --info
-O,O preloaded -o v virtual memory --cumulative --format --deselect
-l,l long u user-oriented --sort --tty --forest --version
-F extra full X registers --heading --no-heading --context
********* misc options *********
-V,V show version L list format codes f ASCII art forest
-m,m,-L,-T,H threads S children in sum -y change -l format
-M,Z security data c true command name -c scheduling class
-w,w wide output n numeric WCHAN,UID -H process hierarchy

A continuación algunos cuantos ejemplos de ps con la salida recortada.

># ps -e    (-e muestra todos los procesos)
PID TTY TIME CMD
1 ? 00:00:01 init
2 ? 00:00:00 kthreadd
3 ? 00:00:00 migration/0
4 ? 00:00:00 ksoftirqd/0

#> ps -ef (-f muestra opciones completas)
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 10:12 ? 00:00:01 init [5]
root 2 0 0 10:12 ? 00:00:00 [kthreadd]
...
root 6130 5662 0 10:24 pts/0 00:00:00 su -
root 6134 6130 0 10:24 pts/0 00:00:00 -bash
sergon 6343 5604 0 10:28 ? 00:00:00 kio_file [kdeinit] file /home/sergon/tmp/ksocket-sergon/kl
root 6475 6134 0 10:38 pts/0 00:00:00 ps -ef

#> ps -eF (-F muestra opciones completas extra)
UID PID PPID C SZ RSS PSR STIME TTY TIME CMD
root 1 0 0 412 556 1 16:59 ? 00:00:01 init [5]
root 2 0 0 0 0 1 16:59 ? 00:00:00 [kthreadd]
sergon 8326 8321 0 902 1272 0 17:07 ? 00:00:00 /bin/sh /usr/lib/firefox-2.0.0.8/run-mozilla.sh /usr/lib/f
sergon 8331 8326 4 53856 62604 0 17:07 ? 00:00:50 /usr/lib/firefox-2.0.0.8/mozilla-firefox-bin
sergon 8570 7726 2 15211 37948 0 17:17 ? 00:00:10 quanta

#> ps ax (formato BSD sin guión, a muestra todos, x sin mostrar tty)
PID TTY STAT TIME COMMAND
1 ? Ss 0:01 init [5]
2 ? S<> ps aux (formato BSD sin guión, u muestra usuarios y demás columnas)
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 1648 556 ? Ss 16:59 0:01 init [5]
root 2 0.0 0.0 0 0 ? S<> ps -eo user,pid,tty (-o output personalizado, se indican los campos separados por coma, ver ps --help o ps L)
USER PID TT
root 1 ?
root 2 ?
sergon 8570 tty 1
root 8876 pts/1

#> ps -eH (muestra árbol de procesos)
#> ps axf (lo mismo en formato BSD)
#> ps -ec (el comando que se esta ejecutando, sin la ruta, solo el nombre real)
#> ps -el (muestra formato largo de varias columnas, muy práctico)
#> ps L (No muestra procesos, lista todos los códigos de formatos)

pstree

Muestra los procesos en forma de árbol, pstree --help te da las opciones más comunes. Recomiendo uses lo uses con la opción -A y -G para que te un árbol con líneas con líneas estilo ASCII y de terminal VT100 respectivamente, puedes añadir también -u para mostrar entre paréntesis al usuario propietario del proceso:

#> pstree -AGu
init---acpid
|-atd(daemon)
|-automount----2*[{automount}]
|-avahi-daemon(avahi)
|-beagled(sergon)----7*[{beagled}]
|-beagled-helper(sergio)----3*[{beagled-helper}]
|-compiz(sergon)----kde-window-deco
|-console-kit-dae----61*[{console-kit-dae}]
|-crond
|-dbus-daemon(messagebus)
|-dbus-daemon(sergio)
|-dbus-launch(sergio)
|-dcopserver(sergio)
|-dhclient
|-gam_server(sergio)
|-gconfd-2(sergio)
|-hald(haldaemon)----hald-runner(root)----hald-addon-acpi(haldaemon)
| |-hald-addon-cpuf
| |-hald-addon-inpu
| |-hald-addon-stor
|-httpd---8*[httpd(apache)]
|-2*[ifplugd]
|-ipw3945d
|-kaccess(sergio)
...

kill

El comando kill, que literalmente quiere decir matar, sirve no solo para matar o terminar procesos sino principalmente para enviar señales (signals) a los procesos. La señal por default (cuando no se indica ninguna es terminar o matar el proceso), y la sintaxis es kill PID, siendo PID el número de ID del proceso. Asi por ejemplo, es posible enviar una señal de STOP al proceso y se detendrá su ejecución, después cuando se quiera mandar una señal de CONTinuar y el proceso continuara desde donde se quedo.

#> kill -l     (lista todas las posibles señales que pueden enviarse a un proceso)
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL
5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE
9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2
13) SIGPIPE 14) SIGALRM 15) SIGTERM 16) SIGSTKFLT
17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU
25) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH
29) SIGIO 30) SIGPWR 31) SIGSYS 34) SIGRTMIN
35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3 38) SIGRTMIN+4
39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12
47) SIGRTMIN+13 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14
51) SIGRTMAX-13 52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10
55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7 58) SIGRTMAX-6
59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX

La lista previa presenta una lista de todas las posibles señales que pueden mandarse a un proceso y estas pueden ser invocadas a través del número de la señal o de su código, por ejemplo:

#> kill -9 11428        (termina, mata un proceso completamente)
#> kill -SIGKILL 11428 (Lo mismo que lo anterior)

Las señales más comunes son la 19 y 20 que detienen momentáneamente la ejecución de un proceso o programa, 18 la continua, 1 que es la señal de hang up que obliga al proceso a releer sus archivos de configuración estando en ejecución y 9 que termina rotundamente un proceso.


killall

El comando killall, que funciona de manera similar a kill, pero con la diferencia de en vez de indicar un PID se indica el nombre del programa, lo que afectará a todos los procesos que tengan ese nombre. Asi por ejemplo si se tienen varias instancias ejecutándose del proxy server squid, con killall squid eliminará todos los procesos que se esten ejecutando con el nombre 'squid'

#> killall -l             (lista de posibles señales)
#> killall -HUP httpd (manda una señal de "colgar", detenerse releer sus archivos de configuración y reiniciar)
#> killall -KILL -i squid (manda señal de matar a todos los procesos squid pero pide confirmación en cada uno)

nice

Permite cambiar la prioridad de un proceso. Por defecto, todos los procesos tienen una prioridad igual ante el CPU que es de 0. Con nice es posible iniciar un programa (proceso) con la prioridad modificada, más alta o más baja según se requiera. Las prioridades van de -20 (la más alta) a 19 la más baja. Solo root o el superusuario puede establecer prioridades negativas que son más altas. Con la opción -l de ps es posible observar la columna NI que muestra este valor.

#> nice             (sin argumentos, devuelve la prioridad por defecto )
0
#> nice -n -5 comando (inicia comando con una prioridad de -5, lo que le da más tiempo de cpu)

renice

Asi como nice establece la prioridad de un proceso cuando se incia su ejecución, renice permite alterarla en tiempo real, sin necesidad de detener el proceso.

#> nice -n -5 yes   (se ejecuta el programa 'yes' con prioridad -5)
(dejar ejecutando 'yes' y en otra terminal se analiza con 'ps')
#> ps -el
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
4 S 0 12826 12208 4 75 -5 - 708 write_ pts/2 00:00:00 yes

#> renice 7 12826
12826: prioridad antigua -5, nueva prioridad 7
#> ps -el
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
4 S 0 12826 12208 4 87 7 - 708 write_ pts/2 00:00:15 yes

(obsérvese el campo NI en el primer caso en -5, y en el segundo con renice quedó en 7, en tiempo real)

nohup y &

Cuando se trata ejecutar procesos en background (segundo plano) se utiliza el comando nohup o el operador &. Aunque realizan una función similar, no son lo mismo.

Si se desea liberar la terminal de un programa que se espera durará un tiempo considerable ejecutándose, entonces se usa . Esto funciona mejor cuando el resultado del proceso no es necesario mandarlo a la salida estándar (stdin), como por ejemplo cuando se ejecuta un respaldo o se abre un programa Xwindow desde la consola o terminal. Para lograr esto basta con escribir el comando en cuestión y agregar al final el símbolo & (ampersand).

$> yes > /dev/null &
$> tar czf respaldo /documentos/* > /dev/null/ &
$> konqueror & gt; konqueror & gt; konqueror & (con estos ejemplos se ejecuta el comando y se libera la terminal regresando el prompt)

Sin embargo lo anterior produce que el padre del proceso PPID que se invocó con sea el proceso de la terminal en si, por lo que si cerramos la terminal o salimos de la sesión también se terminaran los procesos hijos que dependan de la terminal, no muy conveniente si se desea que el proceso continué en ejecución.

Para solucionar lo anterior, entonces se usa el comando nohup que permite al igual que '&' mandar el proceso y background y que este quede inmune a los hangups (de ahí su nombre nohup) que es cuando se cuelga o termina la terminal o consola de la cual se ejecutó el proceso.

$> nohup yes > /dev/null &
$> nohup czf respaldo /documentos/* > /dev/null/
$> nohup konqueror

Asi se evita que el proceso se "cuelgue" al cerrar la consola.


jobs

Si por ejemplo, se tiene acceso a una única consola o terminal, y se tienen que ejecutar varios comandos que se ejecutarán por largo tiempo, se pueden entonces como ya se vió previamente con nohup y el operador '&' mandarlos a segundo plano o background con el objeto de liberar la terminal y continuar trabajando.

Pero si solo se está en una terminal esto puede ser difícil de controlar, y para eos tenemos el comando jobs que lista los procesos actuales en ejecución:

#> yes > /dev/null &
[1] 26837
#> ls -laR > archivos.txt &
[2] 26854
#> jobs
[1]- Running yes >/dev/null &
[2]+ Running ls --color=tty -laR / >archivos.txt &

En el ejemplo previo, se ejecutó el comando yes y se envió a background (&) y el sistema devolvió [1] 26837, indicando asi que se trata del trabajo o de la tarea [1] y su PID, lo mismo con la segunda tarea que es un listado recursivo desde la raíz y enviado a un archivo, esta es la segunda tarea.

Con los comandos fg (foreground) y bg background es posible manipular procesos que esten suspendidos temporalmente, ya sea porque se les envió una señal de suspensión como STOP (20) o porque al estarlos ejecutando se presionó ctrl-Z. Entonces para reanudar su ejecución en primer plano usaríamos fg:

#> jobs
[1]- Stopped yes >/dev/null &
[2]+ Stopped ls --color=tty -laR / >archivos.txt &
#> fg %1
#> jobs
[1]+ Running yes >/dev/null &
[2]- Stopped ls --color=tty -laR / >archivos.txt &

Obsérvese como al traer en primer plano al 'job' o proceso 1, este adquirió el símbolo [+] que indica que esta al frente. Lo mismo sería con bg que volvería a reinicar el proceso pero en segundo plano. Y también es posible matar los procesos con kill indicando el número que devuelve jobs: kill %1, terminaría con el proceso en jobs número 1.


top

Una utilería muy usada y muy útil para el monitoreo en tiempo real del estado de los procesos y de otras variantes del sistema es el programa llamado top, se ejecuta desde la línea de comandos, es interactivo y por defecto se actualiza cada 3 segundos.

$> top
top - 13:07:30 up 8 days, 6:44, 4 users, load average: 0.11, 0.08, 0.08
Tasks: 133 total, 1 running, 131 sleeping, 0 stopped, 1 zombie
Cpu(s): 0.0%us, 0.2%sy, 0.0%ni, 99.7%id, 0.0%wa, 0.0%hi, 0.2%si, 0.0%st
Mem: 497356k total, 472352k used, 25004k free, 21500k buffers
Swap: 1156640k total, 257088k used, 899552k free, 60420k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
26156 sergon 15 0 2160 1016 784 R 1 0.2 0:00.93 top
1 root 15 0 2012 616 584 S 0 0.1 0:00.98 init
2 root RT 0 0 0 0 S 0 0.0 0:00.29 migration/0
3 root 34 19 0 0 0 S 0 0.0 0:00.00 ksoftirqd/0
4 root RT 0 0 0 0 S 0 0.0 0:00.00 watchdog/0
5 root RT 0 0 0 0 S 0 0.0 0:00.38 migration/1
...

Estando adentro de la apliación, presionando 'h' muestra una ayuda de los posibles comandos que permiten configurar top, por ejemplo, al presionar 's' pregunta por el tiempo en segundos de actualización, etc.


Estas son algunas de las herramientas, las más importantes y usadas, para adminsitrar procesos, hay varios programas en ambientes gráficos que en una sola pantalla permiten todo lo anterior y más, y en línea de comandos te recomiendo htop, que es como un top pero en esteroides.

autor: sergio.gonzalez.duran@gmail.com

martes, 3 de febrero de 2009

Buscar archivos SUID y SGID con find

Para encontrar ficheros o archivos con los bits de permisos suid y sgid activadas, la manera más fácil y rápida es con el comando find:

#> find / -perm -4000 -ls
5931076 96 -rwsr-xr-x 1 root root 90192 oct 11 10:29 /bin/mount
5931116 24 -rwsr-xr-x 1 root root 23156 sep 12 12:13 /bin/mount.cifs3
5931053 24 -rwsr-xr-x 1 root root 20824 sep 6 15:24 /bin/su
5931079 76 -rwsr-xr-x 1 root root 72020 oct 11 10:29 /bin/umount
5931062 32 -rwsr-xr-x 1 root root 32520 sep 19 16:46 /bin/ping
2916530 72 -r-sr-xr-x 1 root root 67080 sep 26 08:31 /sbin/mount.nfs
2916364 20 -rwsr-xr-x 1 root root 18816 sep 20 09:51 /sbin/unix_chkpwd
2916363 16 -rwsr-xr-x 1 root root 13020 sep 20 09:51 /sbin/pam_timestamp_check
5358576 128 ---s--x--x 2 root root 126344 sep 13 11:43 /usr/bin/sudo

Indicamos que find busque desde la raíz '/' del sistema de archivos, todo lo que tenga permisos '-perm' del tipo SUID, es decir '-4000' y despliegue el resultado en formato de ls -l '-ls'

Solo cambiamos un poco para buscar los que tengan el bit SGID:

#> find / -perm -2000 -ls
786770 4 drwxrwsr-x 2 root mail 4096 oct 29 03:51 /var/log/mailman
786768 4 drwxrwsr-x 2 root mail 4096 mar 7 2007 /var/lib/mailman/qfiles
738370 4 drwxrwsr-x 2 root mail 4096 oct 28 21:42 /var/lib/mailman/data
819514 4 drwxrwsr-x 2 root adm 4096 sep 12 12:12 /var/lib/samba/printers/WIN40
134628 4 drwxrwsr-x 2 root mail 4096 jul 27 10:17 /var/spool/mail
2916472 4 -rwxr-sr-x 1 root root 3908 oct 3 16:49 /sbin/netreport
9523868 12 -rwxr-sr-x 1 root tty 8912 oct 11 10:29 /usr/bin/write
9530735 84 -rwsr-sr-x 1 root mail 79944 sep 16 03:17 /usr/bin/procmail
5358037 88 -r-xr-sr-x 1 root games 85536 sep 19 04:55 /usr/bin/same-gnome

O agrupamos los dos permisos entre paréntesis con el caracter de escape '\' y con la opción '-o' que indica 'este o aquel' un or booleno pues.

#> find / \( -perm -4000 -o -perm 2000 \) -ls

Como los listados suelen ser bastante largos, puedes redireccionar la salida del comando a un archivo con '>', para ser analizado con calma.

#> find / \( -perm -4000 -o -perm 2000 \) -ls > archivos_con_suid_sgid.txt

Decide que ejecutables eliminar estos bits, es tedioso, pero tu sistema será mucho más seguro al restringir lo que los usuarios normales pueden ejecutar.

autor: sergio.gonzalez.duran@gmail.com

domingo, 1 de febrero de 2009

Manual de wget

Introducción

wget es un estupendo programa que permite automatizar procesos de descarga de un servidor HTTP o FTP. Es de línea de comandos y esta pequeña página hace un repaso de las opciones más usuales.

Opciones más comunes

Para ver las opciones del programa wget:

wget --help

Para mandar esas opciones a un fichero wget.txt:

wget --help > wget.txt

Para ver las opciones de pantalla en pantalla:

wget --help | more

Para descargar un fichero de la dirección http://www.playboy.com/virus.zip:

wget http://www.playboy.com/virus.zip

Para descargar un fichero de la dirección http://www.playboy.com/virus.zip, intentándolo un número indefinido de veces (-t 0), retomando la descarga en la próxima ejecución si se corta la conexión o se para el programa (-c), identificándose como un navegador web normal para evitar ser detectado por algunos servidores (-U "Mozilla") y no identificándose como un robot para tener acceso completo a las páginas (-erobots=off):

wget -t 0 -c -U "Mozilla" -erobots=off http://www.playboy.com/virus.zip

Para descargar completamente una página (-r) y convertir los enlaces para verla localmente (-k):

wget -t 0 -c -U "Mozilla" -erobots=off -r -k http://xxx.unizar.es

Para descargar la lista de enlaces de un fichero urls.txt:

wget -i urls.txt

Para aceptar solamente los ficheros JPG y MPG (-A *.jpg,*.mpg):

wget -t 0 -c -U "Mozilla" -erobots=off -r -k -A *.jpg,*.mpg http://www.fotos_y_videos_guarros.es

Espero que esta lista de opciones algo depravadas dé una idea de las posibilidades.

1