Eliminar archivos de configuración innecesarios

Cuando desinstalas aplicaciones usando el gestor de paquetes de Debian (aptitude o apt) puedes hacerlo de dos formas: purgando (purge) o eliminando (remove). La diferencia es que purgando se eliminan también los archivos de configuración. Eliminar sin más puede ser útil cuando has realizado cambios en estos archivos y quieres mantenerlos por si vuelves a instalarlo, pero en la mayoría de los casos es mejor purgar.

Si un paquete ha sido desinstalado sin ser purgado es marcado por dpkg con la etiqueta de estado rc. Los archivos de configuración de estos paquetes se pueden eliminar purgándolos de nuevo: dpkg --purge <nombre-del-paquete>.

Para saber el estado de cada paquete del sistema puedes hacer uso del comando dpkg -l que mostrará en la primera columna la etiqueta. Haciendo uso de este comando podemos filtrar solo los paquetes con la etiqueta rc:
dpkg -l | egrep ^rc | cut -d' ' -f 3
Explicación: egrep sirve para mostrar úicamente las líneas de la salida de un comando (o archivo) que coincidan con la expresión regular especificada. ^rc es la expresión regular para buscar aquellas líneas que empiezan por rc. Con el comando cut podemos seleccionar elementos dentro de una misma línea: hemos pasado al argumento -d el delimitador ‘ ‘, es decir, separará la línea en columnas y con -f seleccionamos la tercera columna, que es la que en la salida de dpkg -l contiene los nombres de paquete.

Ahora que tenemos la lista de paquetes podemos ir eliminándolos uno a uno con dpkg --purge <nombre-del-paquete>. O, más simple todavía, unir los dos comandos para que lo haga por nosotros:
dpkg --purge `dpkg -l|egrep ^rc|cut -d' ' -f 3`
Explicación: En un comando, lo que sea introducido `entre acentos graves` será ejecutado y la salida pasada al resto del comando.

Instalar icono de red en Debian Testing KDE

KDE4 no incluye un icono de gestión de red entre los elementos gráficos disponibles en la instalación por defecto, que es algo muy útil en la mayoría de ordenadores, especialmente portátiles y otros que usen redes inalámbricas.

Dependiendo de la versión de Debian o distribución que utilices el paquete que contiene este elemento puede tener diferentes nombres, pero en Testing se instala escribiendo en la terminal:
aptitude install plasma-nm

Una vez instalado puedes añadirlo al escritorio o a la barra de tareas desbloqueando los elementos gráficos y añadiendo el widget Gestión de red

Configurar touchpad en KDE

Si usas un portátil y tienes instalado KDE probablemente te hayas fijado en la falta de pestaña de configuración específica para los touchpads (los ratones integrados de los portátiles) que sí tienen otros entornos.

Sin esto no es posible configurar algunas acciones como el desplazamiento, activar click al pulsar, desactivar al escribir,…

Para esto existe synaptiks una pequeña interfaz gráfica con estas configuraciones. Para instalarla en Debian:
aptitude install kde-config-touchpad

Puedes ejecutarla desde el menú y aparecerá el icono en la barra de herramientas. Lo primero que debes hacer es seleccionar que se cargue siempre al inicio. Luego cambia todas las configuraciones a tu gusto, click en Aplicar y listo.

Integración de aplicaciones GTK en Debian KDE

Las aplicaciones GTK cuando son ejecutadas en KDE no tienen el mismo aspecto que las aplicaciones nativas (Qt), sino que tienen un aspecto más descuidado y dan la sensación de ser antiguas.

Para evitar esto lo más fácil es buscar alternativas nativas de KDE y evitar las aplicaciones GTK, de esta manera te ahorras también tener instaladas las librerías de ambos entornos.

Cuando esto no sea posible o se prefiera seguir usando una aplicación GTK (por ejemplo Firefox) se pueden instalar los siguientes paquetes para facilitar la integración:
aptitude install kde-config-gtk-style gtk3-engines-oxygen gtk2-engines-oxygen

Luego en Preferencias del sistemaApariencia de las aplicacionesGTK seleccionar el tema deseado. Oxygen es el que proporciona mayor integración. Click en Aplicar y listo.

LibreOffice sigue presentando una mala integración aún habiendo realizado lo anterior, puesto que necesita un paquete propio:
aptitude install libreoffice-kde

Tareas programadas con cron

Cron es un demonio (proceso que se ejecuta en segundo plano) presente en la mayoría de sistemas *NIX, incluido GNU/Linux, que permite programar la ejecución de tareas.

Cron mantiene tablas independientes para cada uno de los usuarios del sistema. Estas tablas solo pueden ser editadas por el propietario o por el usuario root (que también tiene su propia tabla).

Las tablas están guardadas en la carpeta /var/spool/cron/crontabs, pero no se recomienda que sean editadas directamente. Es mejor realizarlo mediante el comando crontab -e que automáticamente abrirá la tabla del usuario actual con el editor predeterminado (generalmente nano). Para ver la tabla actualmente instalada, usa el argumento -l.

Es posible administrar tu sistema para que no todos los usuarios puedan usar esta funcionalidad. Tienes dos opciones: permitir uno a uno los usuarios para los que estará disponible escribiendo sus nombres en el archivo /etc/cron.allow o denegar su uso uno a uno con el archivo /etc/cron.deny. Si no existe ninguno de los archivos y dependiendo de otras configuraciones solo el usuario root o todos podrán usarlo.

Con el argumento -u especificas la tabla de qué usuario quieres editar, recomendable si eres root usando el comando su pues puedes confundir a crontab.

Eliminar una tabla es tan fácil como borrar el contenido del archivo entero, o mejor aún, usar crontab -r, pero ten cuidado, no pide confirmación.

El funcionamiento de cron es simple: cada minuto el demonio comprueba todas las entradas en las tablas de los usuarios y si deben ejecutarse en ese momento. Es por esto que el mínimo tiempo entre cada ejecución usando cron es el minuto.

Cron registra su actividad a través de syslog, por lo que puedes comprobar que efectivamente se hayan ejecutado tus entradas en el archivo /var/log/syslog.

Editar crontabs

La sintaxis de las tablas es la siguiente:
minutos horas día-del-mes mes día-de-la-semana comando
Todos son valores numéricos, aunque también se pueden usar nombres para el mes y el día de la semana. En día de la semana, al domingo le corresponden los valores 0 y 7. También se aceptan intervalos cerrados (ambos valores incluidos) separando los números con guión – o listas separando con comas ,
Todos las columnas tienen que tener un valor, usa el carácter * si quieres que pueda ser cualquier valor.

También se pueden usar palabras clave. En estos casos la sintaxis cambia siendo la segunda columna el comando a ejecutar.

  • @reboot: se ejecutará cada vez que se ejecuta el demonio cron, que generalmente coincide con el arranque del sistema.
  • @yearly o @annualy: una vez cada año. Equivalente a “0 0 1 1 *”.
  • @monthly: una vez cada mes. Equivalente a “0 0 1 * *”.
  • @weekly: una vez cada semana. Equivalente a “0 0 * * 0″.
  • @daily o @midnight: una vez cada día. Equivalente a “0 0 * * *”.
  • @hourly: una vez cada hora. Equivalente a “0 * * * *”.

Ejemplos

Ejecutar a y cinco de cualquier hora todos los días:
5 * * * * comando

Ejecutar cada 15 minutos:
*/15 * * * * comando

Ejecutar todos los viernes a las 16:00:
0 16 * * 5 comando

Ejecutar el día 11 de cada mes a las 5:36:
36 5 11 * * comando

Puedes profundizar más en este tema leyendo las respectivas entradas del manual:
man 5 crontab para la sintaxis de las tablas.
man 1 crontab para el funcionamiento de crontab.
man 8 cron para el funcionamiento del demonio cron.

También existe anacron pensado para sistemas que no están en ejecución las 24h al día. Esto es así porque comprueba que los comandos no se hayan en ejecutado en el tiempo especificado, no el tiempo que es en ese momento, por ejemplo, si tienes programada la ejecución de un script semanalmente los martes y un martes no se ejecuta anacron, lo ejecutará la próxima vez que arranque:
man 8 anacron
man 5 anacrontab

Vim: resaltado de sintaxis

Vim es uno de los editores de texto más usados en sistemas *NIX tanto por programadores como administradores de sistemas. Tiene una curva de aprendizaje bastante inclinada, por lo que es bastante complejo para nuevos usuarios y al principio puede causar más quebraderos de cabeza que ayudar, pero una vez te haces con el funcionamiento elemental y básico del programa, puedes contar con sus potentes comandos para realizar cualquier tarea con un par de golpes de teclado.

Vim significa Vi IMproved, es decir, es un programa que nace con la intención de mejorar uno de los editores más importantes hasta el momento en UNIX: vi.

Muchas distribuciones de GNU/Linux incluyen vim entre los paquetes básicos de la instalación, otras solo vi o una versión reducida de vim. En Debian y derivadas se puede instalar la edición completa del programa con el siguiente comando:
aptitude install vim-nox

Pese a haber instalado el paquete completo, es posible que te des cuenta que sigues sin poder disfrutar del completo resaltado de sintaxis que ofrece el programa, esto es porque está desactivado en el archivo de configuración.

Para activar el resaltado de sintaxis abre como root el archivo /etc/vim/vimrc y localiza la línea que pone "syntax on y borra las comillas para descomentarla. Si no existe, simplemente añade syntax on al final del archivo.

También puedes activarlo o desactivarlo con el comando interno :syntax on o syntax off aunque esto solo se aplica en la sesión actual.

Ahora ya deberías disfrutar de esta característica tan útil. También tienes que tener en cuenta que para reconocer el tipo de resaltado a usar, vim utiliza el formato del archivo (por ejemplo, .py), la primera línea en caso de los scripts (para bash #!/bin/bash) o el nombre del archivo (.htaccess, por ejemplo).

Permitir a un usuario ejecutar un comando como root usando sudo

En otra entrada ya se trataron las diferencias entre los comandos sudo y su.

En esta entrada voy a explicar cómo configurar el archivo /etc/sudoers para permitir a un usuario determinado ejecutar uno (o varios) comandos que requieran permisos de administrador sin que tenga estos permisos en otras tareas.

Como ejemplo voy a usar el comando shutdown que sirve para apagar/reiniciar el sistema y que en la mayoría de distribuciones solo lo puede ejecutar el usuario root, aunque la aplicación es la misma para cualquier otro programa.

Antes de trabajar con el archivo /etc/sudoers estaría bien leerse su entrada del manual (man 5 sudoers) para entender mejor la sintaxis y el funcionamiento y saber qué estamos haciendo exactamente. Si no quieres, simplemente deberías conocer los siguientes datos:

  • Es un archivo muy importante y delicado y cualquier pequeño error de sintaxis puede dejarte sin permisos de administrador.
  • Para evitar sustos existe el comando visudo que abre el archivo en el editor configurado por defecto (generalmente nano) y comprueba la sintaxis antes de guardarlo, evitando así errores fatales.
  • También existe la posibilidad de no modificar directamente el archivo sino añadiendo nuevo contenido dentro del directorio /etc/sudoers.d/

Evidentemente, para editar este archivo, se necesitan permisos de administrador por lo que tienes que ingresar con la cuenta de root (su o sudo -s).

Ahora ejecuta visudo y al final del archivo (puedes añadir una línea comentada, que empiece con el carácter #, para saber donde comienzan los cambios que tu has realizado y/o explicarlos) escribe lo siguiente:
usuario ALL=NOPASSWD: comando
Cambiando usuario por el usuario que quieras y comando por la ruta completa al programa que quieres que pueda ejecutar. Para averiguar las rutas completas puede usar which comando.
NOPASSWD sirve para no requerir que el usuario introduzca su contraseña.

Ejemplo:
pi ALL=NOPASSWD: /sbin/shutdown
Permitirá al usuario pi ejecutar el comando shutdown para poder apagar mi Raspberry Pi sin tener más permisos de administrador ni introducir contraseña alguna.

Ahora el usuario en cuestión simplemente tiene que ejecutar sudo comando y podrá usar dicho comando como si fuera administrador, pero sin el peligro de que tenga más permisos de los realmente necesarios.