TL; DR: faire les choses en tant que root uniquement lorsque cela est nécessaire. sudo
rend cela assez facile. Si vous activez les connexions root, vous pouvez toujours suivre cette règle, il vous suffit de faire attention à cela. Bien que l'activation des connexions root ne soit pas réellement sécurisée si cela est fait correctement, vous n'avez pas besoin d'activer les connexions root car vous avez sudo
.
Il y a vraiment deux questions connexes ici.
- Pourquoi est-il mauvais de se connecter en tant qu'utilisateur root pour l'utilisation quotidienne d'un ordinateur (navigation sur le Web, courrier électronique, traitement de texte, jeux, etc.)?
- Pourquoi Ubuntu par défaut désactive-t-il les connexions root et en utilisant
sudo
et polkit pour permettre aux administrateurs d’exécuter des commandes spécifiques en tant que root?
Pourquoi ne pas tout exécuter en tant que root, tout le temps?
La plupart des autres réponses couvrent cela. Cela revient à:
- Si vous utilisez les pouvoirs de la racine pour des tâches qui ne le nécessitent pas et que vous finissez par faire quelque chose que vous ne vouliez pas faire, vous pouvez modifier ou endommager votre système d’une manière que vous ne souhaitez pas.
- Si vous exécutez un programme en tant que root alors que vous n’en aviez pas besoin, et que it finit par faire quelque chose que vous ne pensiez pas faire, par exemple en raison d’une faille de sécurité ou autre bogue - cela pourrait changer ou nuire à votre système d’une manière que vous ne voulez pas.
Il est vrai que même sans faire les choses en tant que root, vous pouvez causer des dommages. Par exemple, vous pouvez supprimer tous les fichiers de votre propre répertoire personnel, qui inclut généralement tous vos documents, sans s'exécuter en tant que root! (J'espère que vous avez des sauvegardes.)
Bien sûr, en tant que root, il existe des moyens supplémentaires de détruire accidentellement ces mêmes données. Par exemple, vous pouvez spécifier le mauvais argument of=
dans une commande dd
et écrire des données brutes sur vos fichiers (ce qui les rend bien plus difficiles à récupérer que si vous les supprimiez simplement).
Si vous êtes la seule personne à utiliser votre ordinateur, le danger que vous pouvez faire uniquement en tant que root peut ne pas être supérieur à celui que vous pouvez faire avec vos privilèges d’utilisateur habituels. Mais ce n’est toujours pas une raison pour étendre votre risque d’inclure des moyens supplémentaires de détruire votre système Ubuntu.
Si l’exécution avec un compte d’utilisateur non root vous empêchait d’exercer un contrôle sur votre propre ordinateur, cela constituerait bien sûr un compromis mauvais . Mais - chaque fois que vous souhaitez effectuer une action en tant que root, vous pouvez le faire avec sudo
et d’autres méthodes .
Pourquoi ne pas permettre de se connecter en tant que root?
L’idée que la possibilité de se connecter en tant que root est intrinsèquement peu sûre est un mythe. Certains systèmes ont un compte root activé par défaut; les autres systèmes utilisent sudo
par défaut et certains sont configurés avec les deux.
- Par exemple, OpenBSD , qui est largement et raisonnablement considéré comme l’OS polyvalent le plus sûr au monde, avec le compte root activé pour la connexion locale basée sur un mot de passe.
- D'autres systèmes d'exploitation bien respectés font ceci: RHEL , CentOS et Fedora .
-
Debian (d'où dérive Ubuntu ) permet à l'utilisateur de décider quelle approche sera configurée lors de l'installation du système.
Il n’est pas objectivement faux d’avoir un système sur lequel le compte root est activé, à condition que
- vous ne l'utilisez toujours que lorsque vous en avez vraiment besoin, et
- vous en restreignez l'accès de manière appropriée.
Souvent, les novices demandent comment activer le compte root dans Ubuntu. Nous ne devons pas leur cacher ces informations, mais généralement quand les gens le demandent, c'est parce qu'ils ont l'impression qu'ils ont besoin d'activer le compte root. En fait, cela n’est presque jamais nécessaire, alors lorsque vous répondez à de telles questions, il est important que nous expliquions cela. L’activation du compte root facilite également la complaisance et effectue des actions en tant que root sans privilèges root . Mais cela ne signifie pas que l'activation du compte root est par lui-même non sécurisé.
sudo
encourage et aide les utilisateurs à exécuter des commandes en tant que root uniquement lorsque cela est nécessaire. Pour exécuter une commande en tant que root, tapez sudo
, un espace, puis la commande. Ceci est très pratique et de nombreux utilisateurs de tous niveaux de compétence préfèrent cette approche.
En bref, vous n'avez pas besoin d'activer les connexions root car vous avez sudo
.Mais tant que vous ne l'utilisez que pour les tâches administratives qui le requièrent, il est tout aussi sûr d'activer et de vous connecter en tant que root, à condition qu'il ne s'agisse que de de ces manières :
Toutefois, si vous vous connectez en tant que root, les risques de sécurité supplémentaires sont importants:
-
Graphiquement. Lorsque vous vous connectez graphiquement, beaucoup de choses s'exécutent pour fournir l'interface graphique, et vous finirez par exécuter encore plus d'applications en tant que root pour utiliser cette interface. Cela va à l'encontre du principe selon lequel seuls les programmes exécutés en tant que root ont vraiment besoin des privilèges root. Certains de ces programmes peuvent contenir des bogues, y compris des bogues de sécurité.
De plus, il y a une raison de non sécurité à éviter. La connexion graphique en tant que root n'est pas bien prise en charge-- comme le mentionne loevborg , les développeurs d’environnements de bureau et d’applications graphiques ne le font pas souvent les tester en tant que root. Même s'ils le font, la connexion à un environnement de bureau graphique en tant que root ne permet pas aux utilisateurs de faire des tests alpha et bêta réels, car presque personne ne le tente (pour les raisons de sécurité expliquées ci-dessus).
Si vous avez besoin d’exécuter une application graphique spécifique en tant que root, vous pouvez utiliser gksudo
ou sudo -H
. Cela exécute beaucoup moins de programmes en tant que root que si vous vous êtes connecté graphiquement avec le compte root.
-
À distance. Le compte root
peut en effet faire n'importe quoi, et il porte le même nom sur pratiquement tous les systèmes de type Unix. En vous connectant en tant que root via ssh
ou d'autres mécanismes distants, ou même en configurant des services distants pour l'autoriser , vous simplifiez grandement la tâche aux intrus, y compris aux scripts automatisés et aux programmes malveillants accès par force brute, attaques par dictionnaire (et éventuellement certains bogues de sécurité).
Le risque n'est sans doute pas très élevé si vous n'autorisez que les connexions root basées sur les clés et non basées sur les mots de passe
.
Par défaut dans Ubuntu, ni les connexions root ni les connexions distantes via SSH ne sont activées, même si vous activez la connexion en tant que root . En d'autres termes, même si vous activez la connexion root, celle-ci n'est toujours activée que de manière raisonnablement sécurisée.
- Si vous exécutez un serveur ssh sur Ubuntu et que vous n’avez pas modifié
/etc/sshd/ssh_config
, il contiendra la ligne PermitRootLogin without-password
. Cela désactive la connexion root par mot de passe, mais autorise la connexion par clé. Cependant, aucune clé n'est configurée par défaut, donc à moins que vous en définissiez une, cela ne fonctionnera pas non plus. De plus, la connexion root distante basée sur des clés est bien moins mauvaise que la connexion root distante basée sur mot de passe, en partie parce qu'elle ne crée pas le risque d'attaques brutales et de dictionnaire.
- Même si les valeurs par défaut devraient vous protéger, je pense que c’est toujours une bonne idée de vérifier votre configuration ssh, si vous voulez activer le compte root. Et si vous exécutez d'autres services fournissant une connexion à distance, comme ftp, vous devriez également les vérifier.
En conclusion:
- Faites des choses en tant que root uniquement lorsque vous en avez besoin;
sudo
vous aide à faire cela, tout en vous offrant la pleine puissance de root à tout moment.
- Si vous comprenez le fonctionnement de la racine et les dangers de l’utiliser, l’activation du compte root n’est pas vraiment problématique du point de vue de la sécurité.
- Mais si vous comprenez cela, vous savez également que vous n'avez certainement pas besoin d'activer le compte root .
Pour plus d'informations sur root et sudo
, y compris certains avantages supplémentaires de sudo
que je n'ai pas abordés ici, je recommande vivement RootSudo dans le wiki d'aide d'Ubuntu.