Limiter le démarrage d'Ubuntu

Publié le par tuxiphone

Il peut parfois être intéressant de restreindre le temps que passe quelqu'un sur un ordinateur.

Il est très simple d'empêcher (K)Ubuntu de démarre à certaines heures et certains jours.

manuoceane-horloge.png

En fait, il est impossible d'empêcher l'OS de démarrer, mais par contre, il est très simple d'interdire à l'utilisateur de se connecter à sa session.

A moi d'être passionné par l'écran de login (kdm pour KDE et gdm pour Gnome), l'utilisateur bloqué n'aura pas d'autre choix que de vaquer à d'autres occupations.

 

Comment faire?

En premier lieu, il est nécessaire d'activer le module PAM qui permet la gestion de l'heure pour les utilisateurs au démarrage de l'ordinateur.

Pour ce faire, il faut éditer le fichier de votre gestionnaire de login.

Pour Gnome (Ubuntu), il s'agit de GDM (/etc/pam.d/gdm) et pour KDE, c'est KDM (grande différence) qui se trouve dans /etc/pam.d/kdm 

Vous avez besoin des droits administrateurs pour éditer ce fichier.  Dans votre terminal, tapez donc:

sudo kate /etc/pam.d/kdm

(si vous avez KDE.  Pour gnome, utilisez "gedit" et "gdm", bien sûr.)

 

A la fin du fichier, rajoutez simplement la ligne suivante:

account required pam_time.so

 

Cette opération va permettre de lancer PAM au démarrage de l'ordinateur.  Il faut maintenant indiquer les heures où la session pourra être lancée.

 

Pour cela, éditez (toujours en mode administrateur) le fichier /etc/security/time.conf

 

La ligne à rajouter est la suivante:

services;tty;utilisateur;horaire

 

Il est bien entendu nécessaire d'adapter cette ligne à vos besoins.

service: indique quelle est l'opération empêchée.  Le plus simple est d'utiliser l'astérisque (*) pour empêcher tout service.

tty : indique quel terminal est interdit, sachant que le 7 est le graphique.  Ici aussi, le plus simple est de tous les bloquer avec l'astérisque.

utilisateur : indique l'utilisateur qui subira les restrictions horaires.  Ce qui permet de bloquer par exemple "marie" alors que "paul" pourra toujours se connecter sur sa session sans restrictions.

horaire : la partie la plus importante.  C'est ici que l'on indique quelles sont les plages horaires autorisées ou interdites.  Les jours s'indiquent de la façon suivante :

  • Lundi : mon
  • Mardi : tue
  • Mercredi : wed
  • Jeudi : thu
  • Vendredi : fri
  • Samendi : sat
  • Dimanche : sun
  • Toute la semaine : *

Et les heures s'indiquent sous la forme "HHMM".  Ex: 16h03 = 1603.

Le "!" permet quant à lui de nier une heure, c'est à dire de l'autoriser.

 

Prenons par exemple le cas de l'utilisateur "julien" qui ne peut se connecter que le samedi de 13h à 15h et le jeudi de 8h à 17h15.

La commande à utiliser est la suivante:

*;*;julien;thu0800-1715|sat1300-1500

(le "|" permet d'inquer plusieurs horaires.)

 

Aller plus loin

Ce système n'a qu'une seul inconvénient.

Il empèche bien l'utilisateur choisi de se connecter mais si (reprenons notre exemple) "julien" se connecte le samedi à 14h58, tant qu'il ne se déconnecte pas, il peut utiliser l'ordinateur.

 

Il est possible de régler ce problème en couplant PAM avec chron qui permet de lancer une tâche à une certaine heure.

 

Pour ce faire, il est nécessaire d'éditer le fichier /etc/crontab (toujours en mode administrateur) et de rajouter ceci à la fin du fichier:

MM HH * * jours root skill -KILL -u utilisateur

MM : est à remplacer par les minutes, HH par l'heure de déconnexion et utilisateur par le nom d'utilisateur concerné.

 

Dans le cas de notre pauvre "julien", ça donnerait ceci:

15 17 * * thu root skill -KILL -u julien

00 15 * * sat root skill -KILL -u julien

Une ligne pour chaque déconnexion.

 

Voilà, la session est irrémédiablement bloquée hors des horaires autorisés.  Pleurer crier et s'énerver ne servirait à rien, le login est impossible.

 

 

Publié dans Astuces

Pour être informé des derniers articles, inscrivez vous :
Commenter cet article