Apartamento En Familia

Apartamento En Familia
Apartamento de playa para vacaciones. http://www.apartamentoenfamilia.es. Número registro HUTT-005768

miércoles, 23 de abril de 2014

Actualizar Ubuntu+Cinnamon de 13.10 a 14.04


Para todos aquellos que tengáis Ubuntu 13.10 con Cinnamon instalado, veréis que al mirar de actualizar a Ubuntu 14.04 no podéis. Os saldrá un error en el cálculo de la actualización. Realmente uno puede quedar algo perplejo y no saber que hacer ya que las explicaciones te dejan a tu merced la resolución del problema. Veremos un error que dice algo como esto:

An unresolvable problem occurred while calculating the upgrade.

This can be caused by:
* Upgrading to a pre-release version of Ubuntu
* Running the current pre-release version of Ubuntu
* Unoficial software packages not provided by Ubuntu

 Pues bien, después de mirar logs y consultar por internet (y reportar el bug) me encuentro con este report: https://bugs.launchpad.net/ubuntu/+source/cinnamon/+bug/1279762 

Lo encontré porque dio la casualidad que sospeché de cinnamon cuando el error dijo que mirara si tenia software que no proviniera de Ubuntu.

Así pues que lo que hay que hacer para actualizarnos a 14.04 es primero desinstalar Cinnamon, actualizar, y luego volver a instalar Cinnamon. Así de sencillo, pero a la vez así de poco intuitivo. Como siempre, recomiendo usar los repositorios oficiales para evitar este tipo de problemas. 

Resumen

Desinstalar Cinnamon

sudo apt-get install ppa-purge
sudo apt-get purge --auto-remove cinnamon
sudo apt-get autoremove 

Actualizar a 14.04



















Instalar Cinnamon

La versión que nos va a funcionar con Ubuntu 14.04 a fecha que se edita este artículo es la nightly. Es decir, que no es la versión estable sino una experimental (funciona bien, pero hay algunas cosas a depurar):

sudo add-apt-repository ppa:gwendal-lebihan-dev/cinnamon-nightly
sudo apt-get update
sudo apt-get install cinnamon


Si en algún momento sale la versión estable no hay más que cambiar el repositorio e instalar aquella versión que más nos convenga.



jueves, 17 de abril de 2014

Ejecutando en paralelo en bash (ejemplo con rsync)


xargs es un programa incluido en el paquete findutils. Con xargs podemos construir y ejecutar lineas de comando provinientes de la entranda estandard.
xargs nos permite lanzar procesos en paralelo mediante su parámetro -P, el cual nos permite definir el número de procesos paralelos a lanzar al mismo tiempo (equivalente a --max-procs).
Este programa ya viene instalado por defecto en la mayoría de distribuciones y suele resultar muy útil.

Por otro lado tenemos a GNU parallel. La definición de las manpages es muy similar a la de xargs, si bien ya nos deja claro de inicio que es un programa diseñado para ejecutar comandos en paralelo. No vienen instalado por defecto en Ubuntu.

Hay muchas diferencias entre uno y otro pero las más notables las podéis encontrar en el siguiente enlace:

Diferencias entre xargs y parallel
https://www.gnu.org/software/parallel/man.html#differences_between_xargs_and_gnu_parallel

Ahora veamos un ejemplo de como lanzar sincronización de archivos mediante rsync en paralelo con uno y otro programa:

xargs

Para entender mejor el xargs, yo lo veo como un sustituto de :

for i in `ls`
do
     echo -- $i
done 

en el mundo xargs seria el equivalente one-liner:

ls | xargs -I% echo -- %


Script de ejemplo para lanzar rsync en paralelo:

#! /bin/bash
LIST=$1
DEST_DIR=$2
RSYNC_OPTS=$3
#echo "rsyncing From=$SRC_DIR To=$DEST_DIR RSYNC_OPTS=$RSYNC_OPTS"
echo $LIST|xargs -n1 -d, echo|xargs -n1 -P 0 -I% rsync --rsync-path='sudo rsync' ${RSYNC_OPTS} % ${DEST_DIR}


Este script recibe tres argumentos. El primero un listado de directorios a sincronizar separados por comas. El segundo el directorio de destino. El tercer parámetro son las opciones rsync.

El problema que obtengo con este script es que si deseo saber el código de salida de los rsync que lanzo no tengo manera. Como mucho puedo saber mediante pipestatus el código de salida del último xargs. Dicho de otra manera, hace el paralelismo pero pierdo información que me podría ser útil.

GNU parallel


Como parallel no viene instalado por defecto, lo instalamos:

apt-get install parallel

Ahora os aconsejo borrar el flag --tollef del archivo de configuración /etc/parallel/config ya que sino muchas de las 'virtudes' de parallel no os funcionaran y os darán errores como este:

ls | parallel echo            # Outputs single new line
ls | parallel echo echo echo  # Outputs three new lines.
ls | parallel echo {}         # /bin/bash: {}: command not found
ls | parallel echo '{}'       # /bin/bash: {}: command not found
ls | parallel 'echo {}'       # Outputs: {}
ls | parallel -IMM 'echo MM'  # Outputs: MM


(Fuente StackOverflow)

Una vez instalado ya podemos hacer un script para lanzar rsync en paralelo:

parallel -q -d"," --joblog /etc/scripts/rsync_hercules_parallel.log rsync ${OPCIONES[@]} {} ${DEST} ::: `echo "${ORIGENES%?}"`

En donde $OPCIONES $DEST y $ORIGENES son arrays con los argumentos del rsync. Este script es muy similar al que hacemos con xargs pero con una GRAN diferencia: No perdemos los códigos de salida (exitval) del rsync. De esta manera, pese a lanzar todos los rsync en paralelo, tenemos control total de lo que tarda el proceso y su retorno (sequence number, sshlogin, start time as seconds since epoch, run time in seconds, bytes in files transferred, bytes in files returned, exit status, and command)

viernes, 11 de abril de 2014

Auditando Samba con Ubuntu


El módulo Stackable VFS (Virtual File System) inició con Samba3 y se ha hecho muy popular. Samba pasa cada petición de acceso al sistema de archivos UNIX através the los módulos VFS cargados. Y.... ¿en que no puede ayudar esto? Pues podemos hacer muchas cosas como por ejemplo controlar las quotas de disco o auditar quien crea, modifica o borra un archivo o carpeta (entre muchas más cosas).

Módulos incluídos:
audit
default_quota
extd_audit
fake_perms
recycle
netatalk
shadow_copy
Más info en:

http://www.samba.org/samba/docs/man/Samba-HOWTO-Collection/VFS.html

Pues bien, ahora vamos a mirar de auditar nuestro Samba mediante VFS. Para ello nos bastará con añadir unas lineas en nuestro smb.conf:

/etc/samba/smb.conf

# Audit settings
full_audit:prefix = %u|%I|%S
full_audit:failure = connect
full_audit:success = connect disconnect opendir mkdir rmdir closedir open close read pread write pwrite sendfile rename unlink chmod fchmod chown fchown chdir ftruncate lock symlink readlink link mknod realpath
full_audit:facility = local5
full_audit:priority = notice




%u - Usuario
%I - IP del usuario
%S - Nombre del recurso compartido

Tenemos más variables que podemos poner como prefijo de full_audit:prefix que corresponden con las variables de sustitución de :
http://www.samba.org/samba/docs/man/manpages-3/smb.conf.5.html

Sobre que acciones podemos auditar tenemos un listado extenso que podemos consultar en esta web:
http://www.samba.org/samba/docs/man/manpages-3/vfs_full_audit.8.html

¿Con esto ya abre acabado?. No, ahora tenemos a nuestro Samba preparado para poder auditar, pero le tenemos que decir que queremos que audite. Eso lo haremos en el recurso que deseemos auditar poniendo la directriz vfs object:

[Mi Recurso Samba]

vfs object = full_audit


y ya podremos ver en el /var/log/syslog entradas como esta:

Apr 10 13:00:54 miserver smbd[21816]: ediaz|85.81.69.244|Support|opendir|ok|Prueba/test

Si no queremos que todo el log acabe en syslog y lo que preferimos es tenerlo todo en un archivo separado, podemos hacerlo fácilmente editando los archivos de rsyslog:

sudo vim /etc/rsyslog.d/50-default.conf

Modifica la linia donde aparezca:
*.*;auth,authpriv.none -/var/log/syslog
por esta otra:
*.*;local5,auth,authpriv.none -/var/log/syslog

Insertamos esta linea a continuación de la anterior (ojo!! tiene que estar en /var/log porque sino no funcionará)

local5.* /var/log/samba-audit.log

Y ahora reiniciamos tanto el rsyslog como el samba:
sudo service smbd restart
service rsyslog restart


Con esto ya podremos auditar los accesos al Samba
sudo tail -f /var/log/samba-audit.log

Si aun queremos dejarlo un poco más depurado, lo que deberíamos hacer es un logrotate. Es decir, rotar los logs para que el samba-audit.log no crezca indefinidamente hasta que nos deje sin espacio. Para ello os aconsejo mirar un artículo anterior en donde se explica como hacerlo:


http://eithel-inside.blogspot.com.es/2010/05/logrotate-para-mantener-nuestros-logs.html



lunes, 7 de abril de 2014

Instalar ia32-libs en Ubuntu 13.10

Como muchos de vosotros sabréis, para instalar muchas aplicaciones en nuestra máquina de 64bits, necesitamos instalar el paquete ia32-libs para darnos compatibilidad con programas diseñados para 32bits (citrix, codewavers, teamviewer, google earth, lmadmin (flexera), etc). 

El problema viene con la versión 13.10 de Ubuntu la cual ha dejado de dar soporte a estas librerías. 

Si miramos de instalarlas nos saldrá este mensaje:


sudo apt-get install ia32-libs

Reading package lists... Done
Building dependency tree Reading state information... Done 
Package ia32-libs is not available, but is referred to by another package. This may mean that the package is missing, has been obsoleted, or is only available from another source

However the following packages replace it: 
lib32z1 lib32ncurses5 lib32bz2-1.0

 E: Package 'ia32-libs' has no installation candidate
Así pues, como se ha probado que la versión de la distribución anterior (13.04) funciona también bien con la 13.10, podemos instalarla añadiendo los repositorios:

Editamos /etc/apt/sources.list
vim /etc/apt/sources.list

y añadimos la siguiente linea:

deb http://archive.ubuntu.com/ubuntu/ raring main restricted universe multiverse

luego actualizamos el repositorio:

apt-get update

y finalmente ya podemos instalar las librerias (y sus dependencias):

apt-get install ia32-libs

miércoles, 2 de abril de 2014

Particionar disco de más de 2TB con GNU/Parted en una sola linea de comandos

En artículos anteriores os comentaba como manejar particiones de más de 2 TB mediante GNU/parted . Desde como crear una partición de más de 2Tb, a recuperar una partición tras un mklabel o redimensionar una partición:




Hoy simplemente, con el fin de facilitar los automatismos en la creación de particiones (o simplemente para ahorrarnos algunos pasos) os quiero presentar la posibilidad de crear una partición de más de 2TB ejecutando el código en una sóla linea y sin tener en cuenta las posiciones START y END que nos pide el comando parted:






parted -s /dev/sda mklabel gpt mkpart primary 0 100%

Si comparáis esta opción al artículo
Crear una partición de más de 2 Terabytes en Linux

vereis que es mucho más rápido, aunque ciertamente cuando lo hacemos por pasos nos puede quedar mucho más claro lo que estamos haciendo. Como casi siempre en Linux, tenemos muchas maneras de hacer las cosas y todas ellas nos llevan a cumplir nuestras expectativas.

That u don't know what you've got 'til it's gone