Establecer ajustes predeterminados y bloquear ajustes en GNOME3 | Algo de Linux

martes, 27 de mayo de 2014

Establecer ajustes predeterminados y bloquear ajustes en GNOME3

En Debian Squeeze teníamos GNOME2 y utilizábamos gconf para definir ajustes predeterminados para todos los usuarios y bloquear aquellos que no queríamos que el usuario pudiera modificar.

Debian Wheezy trae instalado GNOME3 y éste utiliza dconf para estos fines.

Y como cambiamos de sistema, del mismo modo, cambiamos de herramientas. Por ejemplo:
  • Si en GNOME2 utilizábamos gconftool-2 para realizar ajustes desde el terminal, en GNOME3 utilizamos una nueva herramienta: gsettings.
  • Del mismo modo, si en GNOME2 usábamos gconf-editor para realizar ajustes desde el entorno gráfico, en GNOME3 usamos la herramienta: dconf-editor.
Como lo que me interesa en este caso es establecer ajustes para todos los usuarios de forma predeterminada a nivel de máquina, nos vamos a centrar en dos cosas:
  • Cómo establecer ajustes predeterminados.
  • Cómo bloquear determinados ajustes.
Primero.- Creamos un directorio /etc/dconf/ donde guardaremos los ajustes:
# mkdir /etc/dconf
Dentro de este directorio crearemos otros dos:
# mkdir /etc/dconf/profile
# mkdir /etc/dconf/db
Dentro del directorio /etc/dconf/profile, crearemos un fichero de perfil: user
# nano /etc/dconf/profile/user
user-db:user
system-db:local
Cada línea del fichero de perfil /etc/dconf/profile/user especifica una base de datos dconf. La primera línea indica la base de datos usada para guardar los cambios y el resto de líneas indican bases de datos de sólo lectura.

Una línea "system-db" especifica una base de datos de sistema. Estas bases de datos se encuentran almacenadas en /etc/dconf/db. Como a la base de datos de sistema la hemos llamado local, dentro del directorio /etc/dconf/db crearemos un nuevo directorio al que llamaremos local.d:
# mkdir /etc/dconf/db/local.d
Bien, pues con ésto, ya tenemos preparada la infraestructura.

Segundo.- Una vez creada la estructura de carpetas, establecer ajustes predeterminados es muy sencillo porque tan sólo tendremos que crear ficheros con ajustes dentro del directorio /etc/dconf/db/local.d/. Veamos un ejemplo que he usado en la realidad:

Supongamos que los portátiles se suspenden al cerrar la tapa, tanto cuando están conectados a la corriente como cuando están alimentados sólo con la batería y quiero cambiar este comportamiento para que no se suspendan en ningún caso.

Sé que existe una clave para controlar el comportamiento cuando se cierra la pantalla y el portátil está conectado a la corriente: lid-close-ac-action. Y otra para controlar el comportamiento cuando se cierra la pantalla y el portátil no está conectado a la corriente: lid-close-battery-action.

Podéis comprobar que ambas claves tienen 'suspend' como valor por defecto con gsettings:
# gsettings get org.gnome.settings-daemon.plugins.power lid-close-ac-action
'suspend'
# gsettings get org.gnome.settings-daemon.plugins.power lid-close-battery-action
'suspend'
Para conseguir que los portátiles no se suspendan al cerrar la tapa, cambiaremos el valor 'suspend' por 'blank'.  Esto lo lograremos creando un fichero al que llamaré 00-power dentro del directorio /etc/dconf/db/local.d/ con el siguiente contenido:
[org/gnome/settings-daemon/plugins/power]
lid-close-ac-action='blank'
lid-close-battery-action='blank'
Una vez creado el fichero /etc/dconf/db/local.d/00-power, ejecutamos en un terminal:
# dconf update
Y ya tendremos configurados los ajustes por defecto para todos los usuarios.

Tercero.- Ahora que ya tenemos definidos los ajustes por defecto, vamos a bloquear ambos ajustes para que el usuario no pueda cambiarlos. Para ello, creo un directorio locks dentro del directorio /etc/dconf/db/local.d/:
# mkdir /etc/dconf/db/local.d/locks
Dentro de él crearemos archivos con diferentes ajustes de bloqueo. Siguiendo con el ejemplo anterior, voy a bloquear los ajustes lid-close-ac-action y lid-close-battery-action para que el usuario no pueda cambiarlos. Creo un archivo power dentro del directorio /etc/dconf/local.d/locks:
# nano /etc/dconf/db/local.d/locks/power
/org/gnome/settings-daemon/plugins/power/lid-close-ac-action
/org/gnome/settings-daemon/plugins/power/lid-close-battery-action
Una vez creado el fichero /etc/dconf/db/local.d/locks/power, ejecutamos en un terminal:
# dconf update
Y con ésto, ambos ajustes quedarán bloqueados, de manera que el usuario no podrá modificarlos. Publicado por primera vez en http://enavas.blogspot.com.es

3 comentarios:

josemrfblog dijo...

Hola estoy probándolo en wheezy y funciona como un tiro.
Mil gracias.

Anónimo dijo...

Hola
user-db:user
system-db:local

Cada línea del fichero de perfil /etc/dconf/profile/user especifica una base de datos dconf.
La primera línea indica la base de datos usada para guardar los cambios y el resto de líneas indican bases de datos de sólo lectura.

La primera linea user-db:user
el user de la derecha puede ser cambiado a otro nombre o debe ser ese.
O la unica condición es que conincida con el nombre de un perfil. Es que todos los ejemplos que veo tienen como nombre de perfil user, podría existir otros perfiles con otros nombres u obligatoriamente ha de existir uno con el nombre de user

Saludos

Anónimo dijo...

Hola Jose, me gustaria saber si es posible disablar/quitar la opcion de "CAMBIO de USUARIO" para obligar a que "CIERREN SESION".
Lo busque por topdo el GNOME 3 y no lo encontre.
GRACIAS!