miércoles, 31 de agosto de 2016

Escritorio común en MAX (Ubuntu): compartiendo archivos, carpetas y lanzadores con todos los usuarios



Recientemente me ha surgido la necesidad de crear y compartir carpetas y lanzadores en todos los usuarios de MAX, la distribución linux de la Consejería de Educación, Juventud y Deporte de Madrid. Se trata de una distribución educativa derivada de Ubuntu, por lo que supongo que el proceso que se describe a continuación también es válido en Ubuntu.

La intención inicial fue crear un lanzador que ejecutara un archivo inicio.html existente dentro de una carpeta  que en esos momentos sólo era accesible para el usuario alumno. Dicho archivo mostraba una página con varios iconos desde los que se accedía a varias aplicaciones incluidas en varias subcarpetas interiores. 

El usuario alumno en MAX es muy útil. Una vez que se cierra sesión desaparecen todos los cambios, como carpetas o archivos guardados en el escritorio. 

Pero en este caso precisaba que el lanzador no se perdiera al cerrar sesión o apagar el equipo.

Tras consultar a varios compañeros "maxeros", me indicaron una forma más eficaz de hacerlo, permitiendo que el lanzador fuera visible para todos los usuarios y no sólo para alumno.

Le doy especialmente las gracias a Roberto Mengíbar como creador del script que permite simular una especie de escritorio común en MAX.

El proceso a seguir no es complicado, pero requiere cierta paciencia y seguir algunas indicaciones y consejos.

Proceso resumido
  1. Copiar el archivo "escritorio_comun" (descargar script) en la carpeta urs/bin y darle permisos de ejecución.
  2. Ejecutar el script desde terminal mediante el comando "sudo escritorio_comun -c" que creará tanto la carpeta "/etc/escritorio_comun" en la que poner los lanzadores como el archivo /etc/xdg/autostart/escritorio_comun.desktop" que permite ejecutar el archivo al iniciar sesión.
  3. Preparar el equipo con el contenido deseado y copiar o crear las carpetas, archivos y lanzadores para luego compartirlos en la carpeta "/etc/escritorio_comun" y darle permisos de grupo dialout, de sólo lectura y de ejecución como un programa cuando sea oportuno.
  4. Reiniciar la sesión para que los cambios tengan efecto y aparezcan en el escritorio los enlaces simbólicos de los contenidos incluidos.
Consejos recomendados
  1. Realizar todas las acciones como superusuario utilizando en los comandos sudo.
  2. Si no se dominan los comandos Linux que permiten crear o copiar archivos y carpetas y o cambiar permisos, utilizar gksu nautilus para ello. Es muy conveniente que dichas acciones se realicen siempre dentro de la ventana de Nautilus abierta como superusuario. Por ejemplo, si se arrastran desde fuera hacia la ventana Nautilus o a la inversa, podrían aparecer incidencias por cambios de permisos.
  3. Modificar los permisos de todas las carpetas que añadamos para que pertenezcan al grupo dialout
  4. Para evitar cambios en los contenidos por los usuarios que los utilicen, dar permisos de sólo lectura en Grupo u Otros. 
  5. Es posible que se aprecien diferencias entre versiones de MAX. Por ejemplo, se ha apreciado que al copiar los lanzadores desde una memoria USB a MAX 6.5 no es necesario hacer cambios si ya tienen los permisos configurados, pero en el caso de MAX 8.0 ha sido necesario volver a darles  de nuevo permisos de ejecución como un programa después de copiados. Los motivos podrían ser muy diversos y puede no ocurrir en otras configuraciones.
Proceso detallado para crear un entorno similar a un escritorio común
  1. Ingresar como usuario "madrid".
  2. Descargar el archivo-scrip "escritorio_comun" (descargar script) que permite crear el escritorio común. Si se descarga como archivo descomprimido, hay que descomprimirlo.
  3. Acceder a terminal y lanzar Nautilus con permisos de superusuario.
    gksu nautilus
  4. Copiar el archivo "escritorio_comun" en la carpeta en urs/bin.
    Cuando estemos copiando carpetas y archivos, es mejor buscar y copiar los archivos entre las carpetas que se visualizan en la ventana de Nautilus lanzada como superusuario. Si simplemente se arrastran desde una ubicación externa a Nautilus, como por ejemplo desde el escritorio en sí, a veces surgen problemas.
    También se puede hacer mediante línea de comandos.
  5. Dar al archivo escritorio_comun permisos de ejecución como un programa, ya sea con Nautilus o ejecutando el siguiente comando en una nueva terminal:
    sudo chmod 755 /usr/bin/escritorio_comun
  6. La primera vez, ejecutar desde terminal el archivo con el parámetro -c:
    escritorio_comun -c
    En caso de que hubiéramos cerrado la sesión de superusuario, podemos ejecutarlo como:
    sudo escritorio_comun -c
    Con este parámetro se crea el directorio "/etc/escritorio_comun" en el que hay que poner los objetos o contenidos que queremos que aparezcan en el escritorio de todos los usuarios; a los usuarios en realidad se les crea un enlace simbólico.
    Aunque los usuarios pueden borrar los enlaces simbólicos, en el siguiente inicio de sesión volverán a crearse y a estar visibles de nuevo. Los enlaces simbólicos no pueden ser modificados por los usuarios, por lo que los iconos se verán con un candado.
    También se crea el fichero "/etc/xdg/autostart/escritorio_comun.desktop", que es el que permite que el script se ejecute cuando un usuario inicia sesión. Se puede ejecutar el script sin argumentos para mostrar un resumen del proceso a seguir.
  7. Copiar los archivos, carpetas o lanzadores a compartir dentro de  /etc/escritorio_comun.
  8. En caso de incluir carpetas dentro de /etc/escritorio_comun es necesario establecer los permisos oportunos para que sean accesibles por todos los usuarios.
    En MAX 6.5, dentro /etc/escritorio_comun desde Nautilus como superusuario, pulsamos con el botón derecho del ratón sobre la carpeta que nos interese y accedemos a Propiedades y Permisos. En Grupo seleccionamos dialup y, si es lo que deseamos, Acceder a archivos y Sólo lectura. En Otros también sería necesario indicar Acceder a archivos y Sólo lectura.
  9. En el caso de lanzadores normalmente hay que editar los permisos de los mismos para que se puedan ejecutar como un programa.
  10. Para que los cambios surtan efecto y no sea necesario iniciar sesión, podemos ejecutar el script mediante el siguiente comando:
    escritorio_comun -s
    En caso de haber cerrado la sesión de superusuario, podemos ejecutarlo como:
    sudo escritorio_comun -s
    En ese momento, se visualizarán los enlaces simbólicos.
  11. Comprobar el funcionamiento de los enlaces simbólicos.
Crear un lanzador a una archivo en una carpeta en usr/local para que luego pueda aparecer como enlace simbólico

Veamos como ejemplo el proceso para incluir en escritorio común un lanzador a un archivo inicio.html que se encuentra en una carpeta dentro de usr/local. Se trata de una carpeta accesible a todos los usuarios pero que, al no estar copiada dentro del  escritorio común, no puede abrirse directamente.

¡Tengamos en cuenta!

Hay que darle al lanzador un nombre distinto al de cualquier lanzador ya existente en el escritorio, pues se conservaría ese primer lanzador y no se crearía el enlace simbólico con el candado.
  1. Ejecutar Nautilus con permisos de superusuario:
    gksu nautilus
  2. En nuestro caso, copiar la carpeta deseada dentro de usr/local.
  3. Dar permisos de ejecución... Accedemos a Propiedades y Permisos. En Grupo seleccionamos dialup con Acceder a archivos y Sólo lectura. En Otros también indicamos Acceder a archivos y Sólo lectura.
    accedemos a Propiedades y Permisos. En Grupo seleccionamos dialup con Sólo lectura. En Otros también indicamos Sólo lectura.
  4. Desde  la ventana de Nautilus como superusuario, crear el lanzador al archivo inicio.html en /etc/escritorio_comun. También es importante elegir un icono apropiado.

    En nuestro caso el comando del lanzador es:
    firefox /usr/local/InfantilProgramas/inicio.html

    En el caso de querer lanzar una página web en la red sería del tipo:
    firefox http://roble.pntic.mec.es/arum0010/

    Para lanzar el ejecutable de una copia portable de Arduino en la carpeta /usr/local sería:
    /usr/local/Arduino/arduino

    Para crear los lanzadores desde consola:
    cd /etc/escritorio_comun
    sudo gnome-desktop-item-edit milanzador.desktop
    "milanzador" debe sustituirse por el nombre que deseemos darle.

    Es necesario tener claro el icono que se va a utilizar y seleccionarlo al crear el lanzador, ya que luego no se podrá cambiar al copiarlo al escritorio común.

  5. Para que los cambios surtan efecto y no sea necesario iniciar sesión, podemos ejecutar el script mediante el siguiente comando:
    sudo escritorio_comun -s
Configurar varios equipos de un aula

Lo mejor es preparar un primer equipo-modelo con todo lo que deseamos incluir.

Los archivos y carpetas de "/etc/escritorio_comun" (carpetas, archivos y lanzadores) podemos copiarlos a una carpeta compartida o en una memoria externa, y luego copiarlos a cada equipo.

Es conveniente comprobar los permisos de carpetas, archivos y lanzadores.

Borrar contenidos comunes

Ingresamos con con el usuario  madrid. Es necesario borrar como superuarios tanto el contenido de la carpeta "escritorio_comun" como los enlaces simbólicos que se crearon en el escritorio.