IX. Exécution des programmes Xenomai et sécurité▲
Jusqu'à présent, nous avons lancé tous nos programmes logués en tant que root.
Cette situation, qui est acceptable en développement, l'est beaucoup moins lorsque le produit est opérationnel puisqu'une mauvaise manipulation peut mettre en péril Linux.
Les trois solutions ci-dessous répondent à ce besoin de sécurisation.
IX-A. « Xenomai GID »▲
Passée en tant que paramètre du noyau Linux, cette option autorise un groupe d'utilisateurs à lancer les applications Xenomai. Exemple : xeno_nucleus.xenomai_gid=500.
IX-B. Activation du bit d'endossement▲
C'est une solution simple. Comme pour la commande passwd, nous allons activer le bit d'endossement.
Le fichier est exécuté en tant que dchabal :
[dchabal@localhost tuto]$
./hello
Xenomai: binding failed: Operation not permitted.
[dchabal@localhost tuto]$
En tant que root :
[root@localhost tuto]# ls -l hello
-rwxr-xr-x 1
dchabal dchabal 7794
Sep 6
10
:34
hello
[root@localhost tuto]# chown root:root hello
[root@localhost tuto]# ls -l hello
-rwxr-xr-x 1
root root 7794
Sep 6
10
:34
hello
[root@localhost tuto]# chmod +s hello
[root@localhost tuto]# ls -l hello
-rwsr-sr-x 1
root root 7794
Sep 6
10
:34
hello
[root@localhost tuto]#
Le bit d'endossement activé, on s'approprie les droits du propriétaire du fichier :
[dchabal@localhost tuto]$
[dchabal@localhost tuto]$
./hello
Hello world!
[dchabal@localhost tuto]$
À noter que n'importe quel utilisateur du même groupe que dchabal pourra utiliser ce programme.
IX-C. sudo▲
Sudo (SUperuser DO) permet une gestion des accès plus fine et plus « sécuritaire » que le bit d'endossement ou le contrôle au niveau du groupe.
Ici, on autorise l'utilisateur dchabal à lancer le programme hello avec tous les arguments qu'il souhaite.
En tant que root, lancer visudo et ajouter cette ligne :
dchabal ALL
=
NOPASSWD: /home/dchabal/tuto/hello *
L'exécutable est alors lancé comme un paramètre de sudo :
[dchabal@localhost tuto]$
./hello
Xenomai: binding failed: Operation not permitted.
[dchabal@localhost tuto]$
sudo ./hello
Hello world!