Configuration de l'accès à la console

Lorsque des utilisateurs normaux (non root) se connectent localement à un ordinateur, ils se voient attribuer deux types d'autorisation spéciale ; ils peuvent exécuter certains programmes qu'ils ne pourraient pas exécuter autrement et accéder à certains fichiers (normalement des fichiers de périphériques spéciaux utilisés pour accéder à des disquettes, CD-ROM, etc.) auxquels il ne pourraient pas accéder autrement.

Du fait qu'il y a plusieurs consoles sur un ordinateur, et que plusieurs utilisateurs peuvent être connectés localement à l'ordinateur en même temps, il faut que l'un d'eux "gagne" le combat pour accéder au fichier. Le premier utilisateur se connectant à la console est propriétaire de ces fichiers. Une fois que le premier utilisateur se déconnecte, le second utilisateur à s'être connecté devient propriétaire des fichiers.

Par contre, chaque utilisateur se connectant à la console sera autorisé à exécuter des programmes dont l'usage est normalement réservé à l'utilisateur root. Par défaut, ces programmes demandent le mot de passe de l'utilisateur. Ceci sera effectué sous forme graphique si X Window est en cours d'exécution, ce qui permet d'inclure ces actions en tant qu'éléments de menu dans une interface utilisateur graphique. Tels qu'ils sont livrés, les programmes accessibles depuis la console sont shutdown, halt et reboot.

Désactivation de l'accès aux programmes de la console

Dans les environnements où la console est normalement sécurisée (mots de passe BIOS et LILO définis, combinaison de touches Ctrl-Alt-Delete désactivée, commutateurs d'alimentation et de réinitialisation désactivés, etc.), il n'est peut-être pas souhaitable d'autoriser l'accès d'utilisateurs arbitraires à la console où ils peuvent exécuter les programmes shutdown, halt et reboot.

Pour désactiver tout accès des utilisateurs de console aux programmes de la console, exécutez la commande suivante :

rm -f /etc/security/console.apps/*
        

Désactivation de tout accès à la console

Pour désactiver tout accès à la console, y compris aux programmes et aux fichiers, dans le répertoire /etc/pam.d/, ajoutez un commentaire à toutes les lignes faisant référence à pam_console.so. Le script suivant se chargera de cette tâche :

cd /etc/pam.d
for i in * ; do
sed '/[^#].*pam_console.so/s/^/#/' < $i > foo && mv foo $i
done
        

Définition de la console

Le fichier /etc/security/console.perms définit le groupe de la console. La syntaxe de ce fichier est très flexible ; vous pouvez éditer le fichier afin que ces instructions ne soient plus applicables. Toutefois, le fichier par défaut contient une ligne ressemblant à ceci :

 <console>=tty[0-9][0-9]* :[0-9]\.[0-9] :[0-9]
        

Lorsque les utilisateurs se connectent, ils sont liés à une sorte de terminal, soit un serveur X portant un nom tel que :0 ou mymachine.example.com:1.0 ; soit un périphérique tel que /dev/ttyS0 or /dev/pts/2. Par défaut, il convient de définir que les consoles virtuelles locales et les serveurs X locaux sont considérés comme locaux, mais si vous voulez considérer le terminal série à côté de vous sur le port /dev/ttyS1 comme étant également local, vous pouvez modifier cette ligne comme suit :

<console>=tty[0-9][0-9]* :[0-9]\.[0-9] :[0-9] /dev/ttyS1
        

Rendre des fichiers accessibles depuis la console

Dans /etc/security/console.perms, il y a une section contenant des lignes telles que :

<floppy>=/dev/fd[0-1]*
<cdrom>=/dev/cdrom
<jaz>=/dev/zip
        

Vous pouvez également ajouter vos propres lignes :

<scanner>=/dev/sga
	

(assurez-vous, naturellement, que /dev/sga est réellement votre scanner et non, par exemple, votre disque dur).

C'est la première partie. La seconde partie consiste à définir le sort de ces fichiers. Examinez la dernière section de /etc/security/console.perms pour y trouver des lignes similaires à :

<console> 0660 <floppy> 0660 root.floppy
<console> 0600 <cdrom>  0600 root.disk
<console> 0600 <jaz>    0660 root.disk
          

et ajoutez une ligne telle que :

<console> 0600 <scanner> 0600 root
          

Ensuite, lorsque vous vous connecterez à la console, vous recevrez la propriété du périphérique /dev/sga et vos autorisations seront 0600 (lecture et écriture réservées pour vous). Lorsque vous vous déconnecterez, le périphérique sera la propriété du root et disposera toujours des autorisations 0600 (lecture et écriture réservées au root).

Activation de l'accès à la console pour d'autres applications

Pour rendre d'autres applications accessibles, en plus de shutdown, reboot et halt aux utilisateurs de la console, vous devrez simplement travailler un petit peu plus.

Tout d'abord, l'accès à la console ne fonctionne que pour les applications résidant dans /sbin ou /usr/sbin, de sorte que l'application que vous voulez pouvoir exécuter doit s'y trouver également.

Créez un lien entre le nom de votre application et l'application /usr/bin/consolehelper :

cd /usr/bin
ln -s consolehelper foo
	

Créez le fichier /etc/security/console.apps/foo :

touch /etc/security/console.apps/foo
	

Créez un fichier de configuration PAM pour le service foo dans /etc/pam.d/. Nous vous suggérons de commencer avec une copie du service shutdown, puis de la modifier si vous voulez modifier le comportement :

cp /etc/pam.d/shutdown /etc/pam.d/foo
	

Désormais, lorsque vous exécutez /usr/bin/foo, cette action appelle consolehelper qui, avec l'aide de /usr/sbin/userhelper, authentifiera l'utilisateur (en demandant le mot de passe utilisateur si /etc/pam.d/foo est une copie de /etc/pam.d/shutdown; dans le cas contraire, il fait précisément ce qui est spécifié dans /etc/pam.d/foo), puis exécute /usr/sbin/foo avec des autorisations root.