"Después del juego es antes del juego"
Sepp Herberger

viernes, 23 de febrero de 2024

Cada alumno con su portátil

En mi centro muchos portátiles tienen uno o dos alumnos asignados, de tal manera que solo deberían ser usados por ellos. Esto tiene como consecuencia que no suelan sufrir desperfectos ya que al ser nominativos se incentiva su cuidado.

Pero este curso, no sé por que motivo, nos hemos encontrado en que los alumnos estaban usando los portátiles de forma libre, cogiendo el de sus compañeros al azar. Me han pedido que controlemos eso, evitando que nadie pueda usar un portátil que no sea el que tiene asignado. Está es la solución que he implementado.

Por un lado un script que se ejecuta al inicio de la sesión de usuario con:
# cat /etc/xdg/autostart/CheckUser.desktop                                                                
#!/usr/bin/env xdg-open
[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Icon[es_ES]=
Exec=/usr/local/bin/check_user
Name[es_ES]=Check authorized user
Name=Check authorized user
El script sería:
# cat /usr/local/bin/check_user
#!/bin/bash

usuario=$USER
equipo=$HOSTNAME
fecha=$(date)
file=/var/cache/.asignaciones.txt

#Si no hay fichero de asignaciones, salimos
test -e "$file" || exit 0

#Buscamos usuarios permitidos
permitidos=$(grep "^${equipo};" $file| cut -d";" -f3)

#Si no hay usuarios asignados, permitimos que lo use cualquiera
test -z "$permitidos"  &&  exit 0
test "$permitidos" == "-"  && exit 0

#Buscamos si usuario actual está permitido    
autorizado=$(echo $permitidos | grep -w $usuario)
test -z "$autorizado" || exit 0

sleep 5

#Cerramos los navegadores para que el usuario vea el mensaje
killall -9 firefox
killall -9 google-chrome
#Si llegamos aqui estamos intentando hacer login un un usuario no autorizado en el portátil
zenity --error --text="Usuario no autorizado en este portátil. Avise al profesor." --timeout 10 --width=600 --height=100
xfce4-session-logout

exit 0
Lo que hace es obtener el nombre de usuario y máquina y busca en el fichero /var/cache/.asignaciones.txt si el usuario está permitido en dicha máquina. Si no lo está, le manda un aviso y cierra la sesión.

El fichero /var/cache/.asignaciones.txt lo distribuyo por puppet en todos los portátiles y tiene este formato:
...
porthp-o19;b0:5a:da:a2:2d:0c;agomeza02
porthp-o20;30:8d:99:1d:f6:30;irenarr01
porthp-o21;30:8d:99:1c:ce:f4;lblancoa06
porthp-o21;30:8d:99:1c:ce:f4;mgarcias02
porthp-o22;30:8d:99:1a:dd:09;acarrerag27
porthp-o23;30:bd:23:22:8d:01;-
...
En este ejemplo anterior el portátil porthp-o20 sólo sería usable por el alumno irenarr01, el porthp-o21 estaría permitido a lblancoa06 y a mgarcias02, mientras que porthp-o23 podría ser usado por cualquier persona.

Lo mejor de todo: la cara de algunos alumnos cuando han venido a decirme que el portátil no les autorizaba el acceso, autoinculpándose de coger un portátil ajeno X-DDD...¿se puede ser más pardillo?

No hay comentarios:

Publicar un comentario