La difficulté lors de la mise en place d'un système que l'on veut robuste et sécurisé, mais également accessible et administrable sans connaissances particulières, est de trouver un compromis entre laxisme et sécurisation. Mon choix est de bloquer l'accès à toutes les tâches administratives, exceptées l'utilitaire de mise à jour du système (update-manager) ainsi que l'installation de nouvelles applications (gnome-app-install).

Fichier de configuration de sudo

Par défaut sous Xubuntu, l'accès à toutes les applications d'administration concernant le système sont inaccessibles aux utilisateurs de base. L'accès à ces applications passe par le biais du système sudo. Ce dernier est configuré par le biais du fichier /etc/sudoers que l'on édite via la commande visudo. Lancez donc cette commande à partir d'un compte ayant les droits d'administration.

Votre configuration se résume très certainement à un groupe %admin ayant tout les droits sur le système et ressemble à ceci :

# User alias specification

# Cmnd alias specification

# Defaults

Defaults        !lecture,tty_tickets,!fqdn

# User privilege specification
root    ALL=(ALL) ALL

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

Permettre l'accès à certaines commandes

Le système sudo permet l'utilisation d'alias, ce qui permet de regrouper des utilisateurs ou des commandes sous une dénomination commune et ainsi traiter les authorisations par lots. L'utilisateur par défaut du système pour la bibliothèque est biblio, il s'agit d'un compte qui est automatique connecté lors du démarrage de l'ordinateur. Bien qu'il ne soit pas vraiment nécessaire de créer un alias pour un seul utilisateur, je préfère prévenir l'apparition éventuelle d'autres utilisateurs. Le mot clé User_Alias permet la création d'un alias d'utilisateurs. Créons donc un alias d'utilisateurs que nous appelerons PUBLIC :

# User alias specification
User_Alias      PUBLIC=biblio

Les deux programmes auxquels nous permettons l'accès sont update-manager et gnome-app-install, créons un alias de commande à l'aide du mot clé Cmnd_Alias que nous appellerons BASIC_ADMIN. Il faut toutefois noter que gnome-app-install est un front-end pour synaptic, il est donc nécessaire d'ajouter également /usr/sbin/synaptic :

# Cmnd alias specification
Cmnd_Alias      BASIC_ADMIN=/usr/bin/gnome-app-install,/usr/bin/update-manager,/usr/sbin/synaptic

L'alias pour les utilisateurs et les commandes étant créé, nous n'avons plus qu'à relier le tout. Petite spécification, les utilisateurs ne doivent pas être embarassés d'un mot de passe, le mot clé NOPASSWD est là pour ça :

PUBLIC  ALL=NOPASSWD:BASIC_ADMIN

Cette ligne nécessite peut être d'être un petit peu décortiquée pour être comprise. Le premier mot (PUBLIC) correspond aux utilisateur concernés par la règle, s'ensuit les machines sur lesquelles s'applique cette règle. L'administration n'étant pas centralisé, un ALL (indiquant : toutes les machines) est suffisant. On s'attaque ensuite à la règle en permettant l'accès aux commandes BASIC_ADMIN sans avoir besoin de rentrer un mot de passe (NOPASSWD).

Le nouveau fichier de configuration ressemble désormais à ceci :

# User alias specification
User_Alias      PUBLIC=biblio

# Cmnd alias specification
Cmnd_Alias      BASIC_ADMIN=/usr/bin/gnome-app-install,/usr/bin/update-manager,/usr/sbin/synaptic

# Defaults

Defaults        !lecture,tty_tickets,!fqdn

# User privilege specification
root    ALL=(ALL) ALL
PUBLIC  ALL=NOPASSWD:BASIC_ADMIN

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

Cas spécifique des applications graphiques

Les applications graphiques posent un problème particulier, le système X ne permet pas à n'importe qui d'ouvrir des fenêtres sur le bureau d'un utilisateur. Le lancement d'une commande par le biais de sudo résultera très certainement en une erreur du système comme quoi il ne peut pas accéder au serveur :0. Pour ce faire nous allons permettre à n'importe qui d'ouvrir des fenêtre sur le bureau de l'utilisateur biblio en rajoutant xhost + dans le fichier $HOME/.xsession :

#! /bin/sh
xhost +

Enfin, l'utilisation de sudo nécessite l'ouverture d'un terminal, ce qui n'est pas forcément très pratique lorsque l'on veut lancer des applications graphiques. J'utilise pour ma part le petit utilitaire gksu qui permet d'éviter ces inconvénients et lancer directement les applications sans passer par un terminal.

Et notre utilisateur biblio peut désormais mettre à jour son système et installer des applications sans avoir à rentrer de mots de passe.