From Mageia wiki
Jump to: navigation, search
Drakconf multiflag.png
Autres langues

English ; Français


Présentation du Super Utilisateur

Unix, ses clones et dérivés, dont Linux, ont été structurés comme systèmes multi-utilisateurs. Cela est inévitable car à l’époque où Unix a été conçu, les ordinateurs personnels n’existaient pas. Une structure en réseau était constitué d’un serveur, l’unité centrale, à laquelle les clients se connectaient via des terminaux “passifs”.

Une ressource centralisée et partagée exige quelqu’un pour sa maintenance – l’administrateur système, autrement nommé 'super utilisateur' ou “root”. Par convention, le compte qui a cette fonction est appelé “root”, mais ce n’est pas une obligation. Peut-être que cette appellation provient du fait qu’il soit le seul compte qui ait les permissions d’écriture sur la partition '/' qui est à la racine (“root” en anglais) du système de fichiers. Les pouvoirs de “root” ne viennent pas de son nom, mais de son n° ID utilisateur qui est “0” :

Konsole.png
[root@computer ~]# ~# echo $UID

0

[root@computer ~]# _


Cette commande lit le contenu de la variable d’environnement $UID, qui héberge l’identifiant numérique de l’utilisateur ordinaire (l’utilisateur « courant » comme ils disent en informatique)

Le fichier /etc/passwd assigne toujours l’UID (IDentifiant de l’Utilisateur) 0 root au super utilisateur, comme vous pouvez le vérifier en tapant :

Konsole.png
[root@computer ~]# grep root /etc/passwd

root: x:0:0: root:/root:/bin/bash

[root@computer ~]# _


Le fichier système /etc/passwd contient une ligne par utilisateur. Chaque ligne est composée de champs, séparées par des doubles points. Le premier champ contient le nom de l’utilisateur (ici root) et le troisième, son identifiant numérique (UID) ici 0.

Le système de permissions pour les fichiers sous Unix a été prévu pour limiter l’accès à un utilisateur ordinaire sur les fichiers système, tandis que le compte du super utilisateur obtient les droits sur tous les fichiers. Puisque sous Linux, tout fonctionne par fichiers, le super utilisateur a un pouvoir total sur le système entier.

L’utilisation de root comporte des dangers

Il est très tentant, pour des utilisateurs d’un système Unix, en particulier ceux qui sont habitués à des systèmes d’exploitation (OS) ne gérant pas le système des permissions, de contourner celui-ci en se connectant en root dès le départ et en y restant ensuite. Cette façon de faire vous donnerait seulement un soulagement momentané ! Il y a en vérité nombre d’excellentes raisons qui doivent vous inciter apprendre à utiliser quotidiennement le système sous un compte utilisateur ordinaire. Tandis que root reste le compte d’administration du système.

Bien, ça peut surprendre de prime abord, mais écoutez-moi attentivement : vous pouvez brillamment planter n’importe quel système d’exploitation. Les concepteurs et les développeurs font leur maximum pour vous en empêcher. Mais leurs processus ne fonctionnent que si vous utilisez le système comme c’est prévu. Les concepteurs des systèmes d’exploitation tels que Unix supposent que l’utilisateur connecté en root sait exactement ce qu’il fait.

Souvenez-vous que, quand Unix a été conçu, les administrateurs étaient les maitres de vastes réseaux à une époque où tout un chacun n’avait jamais entendu parler d’ordinateur. Pour l’utilisateur root il n’y a aucun filet de sécurité, aucun message du genre « Etes vous vraiment sûr de vouloir faire cela ? ", ni aucune sauvegarde automatique. Si vous vous plantez en super utilisateur, vous plantez le système tout entier.

Warning.png
Attention !

« Voici une petite histoire. Imaginez que vous ayez le fichier sendmail.cf dans /etc. C’était mon cas, je travaillais sur sendmail, et je voulais me débarrasser d’un certain nombre de fichiers sendmail.cf.xxx. J’ai donc utilisé la commande rm en tapant ceci:

rm – f sendmail.cf. *

Au début je fus surpris par le temps pris pour supprimer dix malheureux fichiers. J’ai arrêté la procédure, et quand je me suis aperçu de ce qui était arrivé, c’était déjà trop tard. »

(Richard Eiger dans comp.unix.admin)


Vous avez compris?

L’auteur de cette histoire voulait saisir rm – f sendmail.cf.*, mais le fait qu’il ait mis un espace de trop avant l’astérisque, a transformé sa commande en une demande de supprimer non seulement les fichiers sendmail.cf mais aussi tous les autres fichiers dans la racine du répertoire courant.qui était dans ce cas le répertoire /etc contenant tous les fichiers de configuration système…

Vous avez beaucoup plus de chances d’endommager un système Unix en l’utilisant sous root, comme dans notre exemple, que dans un système d’exploitation de la famille win32. Étant donné que les concepteurs de l’OS savaient qu’il ne fonctionnait pas avec des permissions, ils ont développé d’autres méthodes pour vous protéger, vous et votre système.

Notepad.png
À noter !
Travailler plus souvent avec votre compte ordinaire plutôt qu’avec le compte “root” vous protège contre les pirates agissant sur la toile, mais aussi contre vous-même!


Ceci n’est pas “Unix”!

Quel est l’intérêt d’utiliser un système différent si vous le faites se comporter comme celui que vous connaissez déjà ? Mis à part le fait que cette façon de faire ne fonctionnera pas à tous les coups, que ferez-vous sur un système différent de type Unix sans la possibilité de vous connecter en “root” ? Vous ne vous sentirez jamais comme chez vous tant que vous n’accepterez pas l’idée que les choses sont faites différemment sur les sytèmes de type Unix, et faites différemment avec une bonne raison, pas seulement pour vous embêter (bien que parfois on le dirait vraiment).

Sécurité

Toute personne qui a un accès physique à un système basé sur Unix, est capable de se connecter en root, si elle peut accéder au système de fichiers (c. à d. disquette, CD-ROM, clé USB, internet), car elle peut éditer le fichier '/etc/shadow'. C’est dans ce fichier que sont stockés les mots de passe de chaque utilisateur. Il peut facilement être édité et les mots de passe mis à zéro ('*'). Aussi pour une sécurité parfaite, vous devez sécuriser les accès physiques à votre ordinateur

Chaque processus lancé sous “root” obtient les privilèges “root”, ce qui signifie qu’ils peuvent faire à peu près tout ce qu’ils veulent. Il n’est pas nécessaire que ce soient des programmes malveillants comme un virus, un cheval de Troie ou un ver pour endommager. Ceux-ci sont rare sous Linux (jusqu’à présent). Des erreurs de programmation sont possibles, et plus fréquemment dans les programmes Linux, qui comptent souvent sur l’utilisateur comme testeur actif, alors que dans Windows le produit est généralement testé avant sa sortie. Ceci est possible, car les programmeurs peuvent compter sur le système de permissions sous Linux pour empêcher leurs programmes de faire de réels dommages. Si vous contournez cela en lançant ces programmes sous root, certains vous répondront de ne pas venir vous plaindre ensuite quand vous aurez tout cassé.

En outre, même des programmes testés peuvent contenir des erreurs de programmation liées à la sécurité (aussi appelées “exploits”). Ces erreurs peuvent permettre à un intrus d’exécuter des commandes de sa propre conception avec les permissions du programme défectueux. Si ce programme tourne avec les privilèges “root”, vous avez laissé les commandes de base de votre machine à cet intrus malveillant.

En d’autre termes : N’être “root” que si c’est absolument nécessaire pour la tâche à accomplir.

Notepad.png
À noter !
Les dernières mises à jour de sécurité pour les systèmes Mageia Linux, conçues pour remédier aux vulnérabilités, sont régulièrement mises à la disposition des utilisateurs. N’ignorez pas ces ressources, faites régulièrement les mises à jour, avec Mageia, c’est si simple!


Les tâches qui demandent les privilèges “root”

Évidemment, il y a des tâches qui demandent les privilèges “root”, mais ça n’arrive pas tous les jours. De plus, lorsque vous utilisez des outils comme le [C3. A9s_Draktools.29| Centre de Contrôle Mageia], on vous demandera automatiquement le mot de passe “root” si vous êtes un utilisateur ordinaire. Et il y a d’autres outils qui vous permettent d’acquérir ou d’abandonner les privilèges “root” quand c’est nécessaire. C’est l’objet du prochain article.

Globalement parlant, il y a seulement deux tâches qui requièrent les privilèges 'root:

  • Déplacer des fichiers ou des répertoires vers ou en dehors des répertoires systèmes, copier des fichiers dans les répertoires système. Déplacer des fichiers hors des répertoires systèmes demande les privilèges “root” puisque le fichier original est effacé pendant l’opération. Il en va de même pour l’installation de logiciels. Les RPM installent généralement vers les répertoires système, où seul “root” a les droits en écriture. Si vous faites des compilations à partir de fichiers sources, vous pouvez configurer la plupart des logiciels pour une installation et un lancement à partir de votre répertoire /home, auquel cas vous n’avez pas besoin des privilèges “root” pour le faire..
Notepad.png
À noter !
Compiler des logiciels ne demande pas les privilèges “root” si l’installation se fait dans votre répertoire /home, et en fait ne doit pas être fait sous “root” pour des raisons de sécurité.


  • Ecrire des fichiers dans les répertoires système : cela inclut l’édition des fichiers de configuration système, soit manuellement soit avec un utilitaire, mais aussi le fonctionnement de programmes qui écrivent en sortie vers les répertoires système comme “updatedb”. Remarquez que de nombreux programmes permettent une configuration 'par l’utilisateur', contrôlée par des fichiers situés dans son répertoire /home. Un autre cas où vous devez impérativement être logué en “root” est le changement de permissions sur des fichiers ou répertoires dont vous n’êtes pas propriétaire.
Notepad.png
À noter !
Si vous ne faites qu’accéder à des fichiers dans les répertoires système, dans la majorité des cas vous n’avez pas besoin d’être root. Vous pouvez naviguer dans les répertoires système et parfaitement lire la plupart des fichiers de configuration et toute la documentation sous votre compte utilisateur.


Passer en “root” avec “su”

Pour effectuer les tâches d’administration attribuées à “root”, il n’est pas nécessaire (ni souhaitable en vérité) de se reconnecter au système, vous devez simplement taper :

Konsole.png
[user@computer ~]$ su -
Mot de passe :

dans une fenêtre shell (console) et fournir le mot de passe root.

Une fois cela fait, vous êtes super-utilisateur, et vous pouvez lancer n’importe quel programme sous root, dont les logiciels avec une interface graphique (ceci seulement si vous êtes dans console graphique comme l’utilitaire de KDE, Konsole. Cependant, si vous êtes dans une console en mode texte accessible par <CTRL+ALT+Fn>, vous ne pourrez pas lancer des applications graphiques). Vous pouvez retourner à votre compte utilisateur en tapant <CTRL+D> ou la commande exit.

Un moyen pratique de vous éviter d’ouvrir plusieurs terminaux virtuels avec su, est d’en créer un, une seule fois et de l’utiliser pour toutes les tâches nécessitant une connexion super-utilisateur pendant votre session de travail.

Évidemment, vous devez être sûr que personne n’a un accès physique à votre machine pendant cette session. De plus, il est recommandé de fermer le terminal ou vous déconnecter du compte root lorsque vous êtes connecté à Internet.


su –

Quand vous passer sous root en utilisant la commande su, vous avez sans doute remarqué que vous restez dans le même répertoire de travail qu’auparavant (la commande pwd vous indique dans quel répertoire vous êtes) :

Konsole.png
[user@computer ~]$ pwd
/home/foo
Konsole.png
[user@computer ~]$ su
Mot de passe :
Konsole.png
[root@computer ~]# pwd

/home/foo

[root@computer ~]# _


Si vous voulez l’accès à l’environnement root complet (voir environment), répertoire de travail inclus, en utilisant la commande su, vous devez simplement forcer la lecture des fichiers de configuration (voir configuration files) pour /etc/profile et ~/. Bash_profile, en insérant après su un espace et un tiret :

su -

Konsole.png
[user@computer ~]$ pwd
/home/foo
Konsole.png
[user@computer ~]$ su -
Mot de passe :
Konsole.png
[root@computer ~]# pwd

/root

[root@computer ~]# _


Vous vous retrouvez ensuite automatiquement dans le répertoire de travail root, et plus généralement vous serez sûr d’avoir tout son environnement (voir environment).

Autres options de su

Pour voir toutes les options qu’il est possible de passer avec la commande “su”, dans une console tapez:

Konsole.png
[user@computer ~]$ su --help

Utilisation : su [options] [-] [<utilisateur> [<argument>…]]

Modifier les UID et GID effectifs à ceux de l'<utilisateur>. Un simple – implique – l. En absence d'<utilisateur>, root est utilisé.

Options : – m, – p, --preserve-environment ne pas réinitialiser les variables d’environnement – g, --group <groupe> indiquer le groupe primaire – G, --supp-group <group> indiquer un groupe supplémentaire

-, – l, --login faire de l’interpréteur de commande un interpréteur de connexion – c --command <commande> passer une seule commande à l’interpréteur avec – c --session-command <commande> passer une seule commande à l’interpréteur avec – c sans créer de nouvelle session – f, --fast passer – f à l’interpréteur (pour csh ou tcsh) – s, --shell <interpréteur> exécuter <interpréteur> si permis par /etc/shells

– h, --help afficher cette aide et quitter – V, --version afficher les informations de version et quitter

Sortir de root

Pour sortir de “root” et redevenir un utilisateur ordinaire, tapez:

Konsole.png
[root@computer ~]# exit
[root@computer ~]# _


ou même plus facile : tapez la combinaison de touches <Ctrl-D>.

Pour des raisons de sécurité, il est judicieux de ne pas laisser ouverte une console root quand votre ordinateur est connecté à un réseau avec internet, si ce n’est pas nécessaire.

Navette Express Aller-retour “root” <> « Simple utilisateur »

En quelques minutes, vous pensez devoir faire plusieurs fois des va-et-vient entre root et utilisateur ordinaire ? Et vous ne voulez pas avoir à ressaisir encore et encore le mot de passe (inévitablement long et compliqué) que vous avez choisi pour root ?

Voici ce qu’il faut faire pour rester sur une console, et réduire son temps d’ouverture sous root.

Vous passez sous root tout à fait normalement par cette commande :

Konsole.png
[user@computer ~]$ su
Mot de passe :

Vous faites votre petit boulot sous root, et quand le moment est venu de revenir sous l’utilisateur ordinaire, au lieu de taper exit (ou <Ctrl-D>) comme d’habitude, vous entrez ceci :

Konsole.png
[root@computer ~]# suspend

[1]+ Stoppé su

[root@computer ~]# _
Konsole.png
[user@computer ~]$

Cette commande place la session Bash sous root en sommeil et en arrière plan, et vous êtes de nouveau un utilisateur ordinaire.

Si de nouveau vous voulez rouvrir votre session root, cette fois vous la réveiller en tapant simplement fg, ce qui la ramène au premier plan (voir foreground (fg = foreground)):

Konsole.png
[user@computer ~]$ fg

Et vous êtes root à nouveau. Vous pouvez faire la bascule « suspend / fg » autant de fois que vous voulez.

Notepad.png
À noter !
Cette méthode n’est pas compatible avec la commande su -


Version graphique de su : kdesu

kdesu est le moyen fourni par KDE pour lancer des applications graphiques avec les privilèges root, à partir d’un environnement graphique.

kdesu fonctionne ainsi à partir d’une console graphique, tout comme l’utilitaire Konsole habituellement présent sous le bureau KDE, mais pas dans les consoles “traditionnelles” lancées par <CTRL+ALT+Fn>:

Konsole.png
[user@computer ~]$ kdesu command
Notepad.png
À noter !
Option possible : kdesu – c command. Spécifie la commande à exécuter en une seule chaîne de caractères.


Une boîte de dialogue s’ouvre, vous demandant le mot de passe root, puis le programme spécifié est lancé avec les privilèges root.

Vous pouvez paramétrer un programme particulier pour qu’il soit lancé sous root, par un élément du menu des applications ou par une icône; Il suffit de créer une entrée dans le menu principal, ou d’éditer une entrée existante. Faites un clic droit sur le bouton du menu des applications, puis un clic gauche sur « Editer les applications ». Dans la partie gauche, naviguer vers l’entrée de l’application souhaitée et sélectionnez-la (ou ajouter la en cas de création) puis dans la partie droite, onglet “Avancé” cochez « Exécuter en tant qu’utilisateur différent », nom d’utilisateur : tapez root. N’oubliez pas de cliquer sur le bouton Enregistrer avant de quitter l’éditeur de menu, pour que les changements soient pris en compte.

Notez que les autres environnements graphiques peuvent aussi utiliser kdesu, il faut simplement que le paquetage kdebase package soit installé.

Le programme se base sur le fichier. Xauthority qui est situé dans le répertoire racine de l’utilisateur ($ HOME) pour permettre à l’utilisateur root l’accès au serveur X. Dans les rares cas où ce fichier est corrompu, kdesu plante. Pour l’éviter, supprimez ou renommez le fichier. Xauthority et relancez le système. Cela va recréer un fichier. Xauthority valide.

Un « su » plus facile à manipuler : sudo

Consultez cette page

Changer le mot de passe root

Changer le mot de passe root d’un système est facile si vous connaissez ce fameux mot de passe. Tapez juste passwd sous root.

Konsole.png
[root@computer ~]# passwd

Changement du mot de passe pour l’utilisateur root. Nouveau mot de passe :

[root@computer ~]# _


Si on a oublié le mot de passe, il est nécessaire d’utiliser la méthode expliquée dans l’article Récupérer le mot de passe root


À suivre…