miércoles, 6 de abril de 2011

Deshabilitar temporalmente el acceso a una cuenta de usuario

En este tema trato de una forma mas de restricción de acceso para usuarios determinados, por ejemplo para los hijos, para evitar que pasen mucho tiempo delante del pc.  Otros temas relacionados con éste se pueden ver en control parental

Para ello se puede usar dos comandos: usermod y crontab ( y su programa gráfico: gnome-schedule )

usermod: es una aplicación para el super-usuario root que permite modificar algunas opciones de los usuarios, entre ellas si puede acceder o no a su cuenta, sesión gráfica ( ver mas opciones de este comando ejecutando en la terminal: man usermod )

sudo usermod -L usuario2

Con el parámetro “-L” bloqueamos (Lock) al usuario2 impidiendo  el acceso al sistema.

sudo usermod -U usuario2

Con el parámetro “-U” desbloqueamos (Unock) al usuario2 dejando que ya acceda al sistema.

------------------------------------

Crontab / Gnome-schedule: crontab es un comando con el que puedes programar tareas automáticas y con muchas opciones. Puedes programar tareas en minutos de horas específicos, en días de la semana específico, incluso en fechas y años específicos. 
También se puede programar una tarea repetitiva con el programa gráfico Gnome-Schedule.
Ver en el Índice (1) del blog los temas crontab y gnomeschedule en el apartado Tareas.


Tanto con contrab como con Gnome-schedule se permite restringir el uso del pc por el usuario2 , programando como tarea repetitiva las lineas de comando de usermod. En ambos casos se debe programar la tarea repetitiva, desde el usuario administrador del sistema,  con permisos de usuario root: es decir o bien con la orden en la terminal: sudo crontab -e , o bien ejecutando sudo gnome-schedule, para crear la tarea repetitiva.

------------------------------------------------------

Con todo ello, el  archivo crontab puede quedar de una forma similar a:

#deshabilitar a Usuario2 de lunes a viernes entre las 09 y las 17:59
* 09-17 * * 1,2,3,4,5 /usr/sbin/usermod -L usuario2

#habilitar a Usuario2 de lunes a viernes después de las 18:00 y hasta las 20:59
* 18-20 * * 1,2,3,4,5 /usr/sbin/usermod -U usuario2

#Deshabilitar a Usuario2 y apagar el computador de lunes a viernes, a las 20:55
55 20 * * 1,2,3,4,5 /usr/sbin/usermod -L usuario2
55 20 * * 1,2,3,4,5 /sbin/shutdown -h 5

Con este ejemplo se impide que el usuario 2 pueda usar su cuenta de lunes a viernes entre las horas indicadas, pudiéndolo usar el resto del tiempo. Obviamente se puede cambiar Usuario2 por el usuario al cual se quiera restringir el acceso.

Cuando en la pantalla de acceso (login) se pone la contraseña del usuario al que se ha bloqueado el acceso con éste método aparece una imagen similar a la siguiente, y no te deja entrar a la sesión de dicho usuario.


---------------------------------------------------------------------------------------

1 comentario:

  1. Hola Hatteras, felicidades por tu aporte !!

    Es una solución estupenda para el control del personal,, je je
    y así se le dice al crio que "no anda" y que "el ordenador tiene que descansar" ja ja ja.

    Un detalle, si el usuario se encuentra logueado en el momento de que se llegue al horario fijado restrictivo, ¿antes habría que hacer un "lsof"? o bien como has puesto en tu código directamente ¿se apagaría la máquina para no dejar operar?

    Saludos

    ResponderEliminar

A la vez que haces un comentario, por favor da una puntuación al tema: malo, normal, bueno o muy bueno.
Gracias.