Éviter de lancer une commande en tant qu'administrateur lorsque c'est possible

Il y a deux situations dans lesquelles on peut éviter d'avoir à lancer des commandes en tant qu'administrateur là où il le faudrait en théorie.

Pré-requis

Compilation de logiciels avec fakeroot

fakeroot lance une commande dans un environnement dans lequel cette commande obtient les droits de l’administrateur pour manipuler des fichiers. C’est pratique pour permettre aux utilisateurs de créer des archives (tar, ar, .deb, etc.) qui contiennent des fichiers avec les privilèges et appartenances du superutilisateur. Sans fakeroot, il faudrait posséder les droits du superutilisateur pour donner les droits et appartenances convenables aux fichiers constituant l’archive, puis de les assembler ; ou bien, il faudrait construire directement l’archive, sans utiliser le programme d’archivage.

Installation de logiciels fournis sous forme de scripts exécutables dans un répertoire administrateur

Souvent, il est possible de modifier le chemin d'installation par défaut des scripts. Pensez à vérifier dans leurs options si vous ne pouvez pas les installer directement dans votre /home. De cette manière vous n'aurez même pas besoin des droits d'administration.

Un exemple vaut mieux qu'un long discours, supposons que vous souhaitiez installer la dernière version du JDK de Sun, après l'avoir téléchargée chez eux. La procédure, et son intérêt sont expliqués ici : Installation du Java Developpement Kit.

Toute l'astuce consiste à créer le répertoire où le script va s'installer, et changer ses droits (qui par défaut sont en root) par les vôtres.

sudo mkdir /usr/local/java        # crée un répertoire nommé java dans vos dossiers root
sudo chown VOTRE_LOGIN /usr/local/java  # confère les droits utilisateurs sur ce dossier et donc son contenu
sudo chgrp VOTRE_LOGIN /usr/local/java  # confère les droits de votre groupe sur ce dossier et donc son contenu

Notez que si jamais vous souhaitez que d'autres utilisateurs que vous même aient accès au contenu de ce dossier, il faut leur en donner les droits. Voir à ce sujet la commande chmod. Par exemple la commande chmod a+rwx /usr/local/java donne a absolument tout le monde le droit de faire n'importe quoi avec ce dossier. Si vous êtes l'unique utilisateur de cet ordinateur ou de ce programme, vous n'avez pas à vous en soucier.

Si jamais vous aviez déjà installé une version de votre logiciel ou d'un autre qui a créé le répertoire avec les droits d'administration, et que vous avez besoin de le réinstaller sachant que vous êtes susceptibles de modifier aussi des sous répertoires, pensez à mettre l'option récursive "-R" après le chown et le chgrp afin qu'ils s'appliquent à l'ensemble des fichiers et sous répertoires de votre répertoire de base
Pour éviter les risques de sécurité, il ne faut jamais modifier les droits d'un répertoire système que vous n'avez pas vous même créé (et même là il faut être prudent) à moins de savoir vraiment ce que vous faites.
Si vous souhaitez que le programme que vous installez puisse être trouvé automatiquement par le système lorsque vous entrez son nom dans la console, pensez à rajouter son chemin d'accès dans le PATH. Pour ce faire, éditez votre ~/.profile, et ajoutez à la fin
PATH="votre/chemin/dacces:$PATH"

Utilisation du bit SUID pour donner à n'importe qui le droit d'exécuter un programme normalement réservé au root

Cette manipulation n'est pas possible pour les scripts. En effet, en supposant que vous créiez un script appartenant à root, mais avec les droits d'écriture pour d'autres utilisateurs, cela créerai une faille système dangereuse. Elle est donc réservée aux binaires. Même ainsi, il vaut mieux faire preuve de prudence. Tout binaire système que vous rendez accessible à tous est une faille potentielle. Passons maintenant à l'application: c'est très simple. Naviguez en console jusqu'au binaire que vous voulez rendre accessible à tous, et tapez

sudo chmod +s NOM_BINAIRE

Afin d'être bien informé de ce qui se cache derrière cette manipulation, nous vous conseillons vivement de consulter la page dédiée de Wikipédia.


Contributeurs: Aldian.