11 jun 2014

Modificando las configuraciones de un usuario con dconf en Gnome 3.4

La verdad es que a veces es una auténtica pesadilla ser informático porque cuando ya controlas una cosa, te la cambian y tienes que volver a empezar aprendiendo algo nuevo desde cero porque lo que sabías, ya nos sirve para nada. Para colmo, en muchas ocasiones, la falta de documentación te hace perder el tiempo de una forma impresionante.

dconf, como dice el sitio oficial de Gnome, es un sistema de configuración de bajo nivel basado en claves. La base de datos de dconf tiene una estructura en forma de árbol en la que hay claves y cada clave tiene su valor.

En un post anterior, os mostré como establecer ajustes predeterminados y bloquear ajustes para todos los usuarios. Hoy os voy a explicar cómo modificar los ajustes de un usuario de una manera sencilla desde la línea de comandos, que es lo que a los administradores nos interesa. Para realizar ajustes desde el entorno gráfico, ya tenemos dconf-editor.

Por si no lo sabéis, los ajustes de dconf de un usuario se almacenan en el siguiente archivo: ~/.config/dconf/user. No tratéis de editarlo porque es un archivo binario.

Para obtener dichos ajustes, nos logueamos con el usuario cuyos ajustes queramos modificar y utilizamos el comando dconf de la siguiente manera:
$ dconf dump / > ajustesusuario.dconf
¿Qué es lo que estamos haciendo? Le estamos diciendo a dconf que nos vuelque la base de datos dconf del usuario desde la rama principal (/), es decir, todas las claves, en un archivo ajustesusuario.dconf.

Si quisiéramos vocar sólo una rama, la especificamos y sólo se volcarán los ajustes a partir de ahí. Por ejemplo, si queremos obtener los ajustes de la rama /org:
$ dconf dump /org/ > ajustesusuario.dconf
Lo que obtenemos es un fichero de texto con todas las claves que haya en la rama indicada. Este fichero podemos modificarlo fácilmente con cualquier editor de textos.

Una vez modificado, podemos volcar a la base de datos dconf del usuario los ajustes establecidos de la siguiente manera:

$ dconf load / < ajustesusuario.dconf

También podríamos coger la base de datos modificada y copiarla al directorio /etc/skel para que, cada vez que se cree un usuario, éste tenga los mismos ajustes:
# cp /home/USUARIO/.config/dconf/user /etc/skel/.config/dconf/user
O podríamos examinar los ajustes para aplicarlos por defecto a todos los usuarios, siguiendo las instrucciones del post http://enavas.blogspot.com.es/2014/05/establecer-ajustes-predeterminados-y.html

Posibilidades... todas las que se os ocurran.
Publicado por primera vez en http://enavas.blogspot.com.es

Permitir al usuario actualizar el software instalado en el sistema con gnome-packagekit

El sistema de los portátiles se pensó de tal manera que un usuario tuviera que conectar el ordenador a la red del centro para que se realizara la actualización del software y se establecieran todas las configuraciones necesarias.

Ahora bien, si los usuarios sacan habitualmente el ordenador del centro, sería conveniente que el mismo usuario pudiera realizar las actualizaciones del software instalado en el equipo. Para ello, podemos usar gnome-packagekit combinándolo com polkit, de tal manera que se le permita actualizar los paquetes instalados, pero no realizar instalaciones o desinstalaciones de software.

Así que lo primero que haremos será instalar gnome-packagekit:

# apt-get install gnome-packagekit

Si ejecutamos pkgaction y filtramos la salida buscando la palabra packagekit, obtendremos una lista de políticas que podemos aplicar a packagekit:

# pkaction | grep packagekit
org.freedesktop.packagekit.cancel-foreign
org.freedesktop.packagekit.device-rebind
org.freedesktop.packagekit.package-eula-accept
org.freedesktop.packagekit.package-install
org.freedesktop.packagekit.package-install-untrusted
org.freedesktop.packagekit.package-remove
org.freedesktop.packagekit.repair-system
org.freedesktop.packagekit.system-change-install-root
org.freedesktop.packagekit.system-network-proxy-configure
org.freedesktop.packagekit.system-rollback
org.freedesktop.packagekit.system-sources-configure
org.freedesktop.packagekit.system-sources-refresh
org.freedesktop.packagekit.system-trust-signing-key
org.freedesktop.packagekit.system-update
org.freedesktop.packagekit.upgrade-system

Para permitir que el usuario pueda actualizar el sistema usaremos dos de ellas:

org.freedesktop.packagekit.system-update
org.freedesktop.packagekit.upgrade-system

Para definir las políticas que permitan a un usuario sin permisos de administración actualizar el sistema, crearemos un fichero: /etc/polkit-1/localauthority/50-local.d/20-org.freedesktop.packagekit.pkla con el contenido que os muestro a continuación:

# cat /etc/polkit-1/localauthority/50-local.d/20-org.freedesktop.packagekit.pkla
[org.freedesktop.packagekit.system-update]
Identity=unix-user:*
Action=org.freedesktop.packagekit.system-update
ResultAny=no
ResultInactive=no
ResultActive=auth_self_keep

[org.freedesktop.packagekit.upgrade-system]
Identity=unix-user:*
Action=org.freedesktop.packagekit.upgrade-sytem
ResultAny=no
ResultInactive=no
ResultActive=auth_self_keep

Si os dáis cuenta, estamos permitiendo que el usuario actualice el sistema, para lo que tendrá que introducir su password al menos la primera vez durante la sesión (ResultActive=auth_self_keep).

También podríamos permitirle que actualice el sistema sin tener que introducir su password (ResultActive=yes).

Publicado por primera vez en http://enavas.blogspot.com.es