Sudo

Resulta que tengo dos usuarios, los dos de diferentes aplicaciones que realizan chequeos automaticos remotos por medio de sudo, y tenia que configurar sudo para que tuvieran acceso sin que pidiera password, pero permitiendole ejecucion de algunos comandos en particular, y me tuve que poner a leer man sudoers para conocer bien la sintaxis del archivo /etc/sudoers

Con User_Alias configuramos un alias para los nombres de usuarios que queremos agrupar, con Cmnd_Alias establecemos un alias para un determinado grupo de comandos

# User alias specification
User_Alias CCO_ADMIN = apps_consola
User_Alias NAGIOS_ADMIN = apps_monitor
# Cmnd alias specification

Cmnd_Alias COMANDOS_CCO = /etc/init.d/apache2, /etc/init.d/nfs-kernel-server

Cmnd_Alias COMANDOS_NAGIOS = /scripts/nagios/check_ntp, /opt/gertec/scripts/nagios/check_ntp.sh,

# User privilege specification
root ALL=(ALL) ALL

# Usuarios | Host (Operador) | No pedir password | Alias de Comandos

CCO_ADMIN ALL = (ALL) NOPASSWD: COMANDOS_CCO
NAGIOS_ADMIN ALL = (ALL) NOPASSWD: COMANDOS_NAGIOS

una manera simple de configurar sudo 🙂

Enlaces relacionados

http://www.rpublica.net/sudo/sudoers.html

http://www.linuxtotal.com.mx/index.php?cont=info_admon_014

Configuracion de red en VirtualBox

Mirando un blog encontre un tutorial muy simple de como configurar la red interna en virtualbox con una interfaz virtual de red para que cada vm tenga su ip fisica en la red, ya que como es algo no muy bien explicado en la documentacion oficial de virtualbox lo paso por aca 🙂

http://www.isospain.net/index.php?/archives/861-Configuracion-de-la-Red-en-VirtualBox.html

basicamente es agregar en

sergio@sergio-laptop:~$ cat /etc/network/interfaces
auto lo
iface lo inet loopback

iface br0 inet dhcp
bridge_ports eth0

iface dsl-provider inet ppp
pre-up /sbin/ifconfig eth0 up # line maintained by pppoeconf
provider dsl-provider
sergio@sergio-laptop:~$

agregar la interfaz br0, luego hacer un

sudo /etc/init.d/vboxnet stop

luego agregar la interfaz a vboxnet

sudo VBoxAddIF vbox0 miusuario br0

sudo ifup br0

sudo /etc/init.d/vboxnet start

sudo VBoxManage modifyvm «Maquina_Virtual» -hostifdev1 vbox0

y con so ya esta podemos tener nuestra granja de servidores virutales con virtualbox cada uno con su ip propia real

supongamos que ademas queremos iniciar las maquinas virtuales sin la interfaz grafica de VirtualBox, entonces podemos hacer algo como (mi maquina virtual se llama Debian)

sergio@sergio-laptop:~$ VBoxVRDP -startvm Debian
VirtualBox VRDP Headless Interface 1.5.6
(C) 2005-2008 innotek GmbH
All rights reserved

Listening on port 3389

y luego en el cliente de terminal server de gnome creo que tsclient, nos conectamos a localhost:3389 y listo tenemos nuestras vm sin correr el entorno grafico, saludos 🙂

Programando nuevamente

Hace poco me puse a programar en java con el conector a MySQL, fue algo interesate ya que creo que la ultima vez que programe algo en java fue algo asi como hace unos 3 o 4 años cuando me compre un libro de java

y bue algo con MySQL es tan simple como esto

ResultSet rs = s.executeQuery («select * from dir_link»);

// Se recorre el ResultSet, mostrando por pantalla los resultados.
while (rs.next())
{
System.out.println (rs.getInt («link_id») + » » + rs.getString («title»));

}

se usa getString o getDate o getInt segun el tipo de campo del que queramos obtener los registros

Referencias

https://help.ubuntu.com/community/JDBCAndMySQL

http://caminolibre.com/index.php?option=com_content&task=view&id=11&Itemid=6

http://www.developer.com/java/data/article.php/3417381

a hace unos dias pase mi laptop a 64bits con Ubuntu Gutsy, pero volvi rapidamente a 32 bits por que 64 bits al tener el doble de tamaño de instrucciones y bla bla bla necesita de mas RAM, y la RAM en garantia esta muy cara, asi que lo deje ahi nomas :p

Espero este año ponerme a programar mas en Java para el año que viene certificarme por Sun, y este año espero certificarme en PHP 🙂

Tips

Autenticación con clave pública/privada (RSA)

Algunos tips interensantes, ej
Ej pares de claves ssh para no tener que poner el password por cada sesion, si no utilizar llaves

Ejecutar

$ ssh-keygen -t rsa

Con este comando se genera el par de claves publica/privada, esto generara en el path $HOME/.ssh/ los archivos: id_rsa (clave privada) y id_rsa.pub (clave pública). El archivo id_rsa.pub debe publicarse
incluirse en el archivo $HOME/.ssh/authorized_keys del sistema remoto.

$ scp .ssh/id_rsa.pub host_remoto:$HOME/

Luego, en el equipo remoto

$ mkdir .ssh (por si no estuviera generado)
$ cat id_dsa.pub >> ~/.ssh/authorized_keys (agrega esta clave pública al archivo de claves públicas autorizadas en el directorio .ssh)

Luego setear permisos

$ chmod 755 ~
$ chmod 700 ~/.ssh
$ chmod 644 ~/.ssh/authorized_keys

Luego si queremos una conexion ssh reverso

ssh -nN -R 1234:localhost:22 cayu@cayu.com.ar

o sea si estamos dentro de un lugar donde la entrada SSH esta denegada pero si la salida, podemos dejar una conexion abierta para entrar desde afuera

ssh -p 1234 locahost

Ej si estamos detras de un proxy

aremos un apt-get install corkscrew

en nuestro ssh_config pondremos,

ProxyCommand /usr/bin/corkscrew proxy.com.ar 3128 %h %p

aca un link de la lista de correo de lanux de como compartir una conexion SSH http://www.lanux.org.ar/pipermail/lista/2007-December/004851.html

otro link interesante http://www.malditainternet.com/Web_Squid_SSH

comparacion de ejemplos de comandos debian y SuSE
En Debian
sudo update-rc.d -f nombre_servicio remove

sudo update-rc.d nombre_servicio

En SuSE

sudo insserv -r /etc/init.d/nombre_servicio

sudo insserv -d /etc/init.d/nombre_servicio

http://www.forosuse.org/forosuse/archive/index.php/t-5058.html

Son tips interesantes que me ayudan en mi trabajo diario y los uso comunmente 🙂

Programando cosas en perl

Hace unos dias necesitaba una funcion para parsear caracteres no permitidos en un form y me puse a leer y vafe me paso una funcion en php que hacia algo parecido y llegue a esto 🙂

sub caracteres_permitidos {
my $cadena = shift;
if ($cadena =~ m/\|\<|\>|\[|\]|\(|\)|\{|\}|\,|\+|\*|\$|\%|\!|\=|\?|\?|\\'|\;|\&|\|/)
{
return false;
}
return true;
}