TL; DR: Faites les choses en tant que root que lorsque vous devez. sudo
rend cela assez facile. Si vous activez les connexions à la racine, vous pouvez toujours suivre cette règle, il vous suffit de faire attention à le faire. Bien qu'activer correctement les connexions root ne soit pas réellement dangereux, vous n'avez pas besoin de l'activer, car vous l'avez sudo
.
Il y a vraiment deux questions liées ici.
- Pourquoi est-il mauvais de se connecter en tant que root pour une utilisation quotidienne de l'ordinateur (navigation sur le Web, messagerie électronique, traitement de texte, jeux, etc.)?
- Pourquoi Ubuntu désactive-t-il par défaut les connexions root et utilise-t-
sudo
il 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 des pouvoirs de racine pour des tâches qui ne les 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 lorsque vous n'en avez pas besoin et qu'il finit par faire quelque chose que vous ne vouliez pas faire - par exemple, en raison d'une vulnérabilité de sécurité ou d'un autre bogue - il pourrait changer ou être dommageable. 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 du tort. Par exemple, vous pouvez supprimer tous les fichiers de votre propre répertoire de base, qui comprend généralement tous vos documents, sans exécuter en tant que root! (J'espère que vous avez des sauvegardes.)
Bien sûr, en tant que root, il existe d'autres moyens de détruire accidentellement ces mêmes données. Par exemple, vous pouvez spécifier le mauvais of=
argument d'une dd
commande et écrire des données brutes sur vos fichiers (ce qui les rend beaucoup plus difficiles à récupérer que si vous les supprimiez simplement).
Si vous êtes la seule personne à utiliser votre ordinateur, les dommages que vous ne pouvez causer qu'en tant que root pourraient ne pas être plus importants que ceux que vous pouvez causer avec vos privilèges d'utilisateur habituel. Mais ce n’est toujours pas une raison pour augmenter vos risques et inclure de nouveaux moyens de gâcher votre système Ubuntu.
Si le fait d’exécuter avec un compte utilisateur non root vous empêchait d’exercer un contrôle sur votre propre ordinateur, ce serait bien entendu un mauvais compromis. Mais cela ne le fait pas - chaque fois que vous souhaitez réellement effectuer une action en tant que root, vous pouvez le faire avec d' sudo
autres méthodes .
Pourquoi ne pas rendre possible la connexion en tant que root?
L'idée que la possibilité de se connecter en tant que root ne soit pas sécurisée est un mythe. Certains systèmes ont un compte root activé par défaut; d'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 le système d'exploitation polyvalent le plus sécurisé au monde, est livré avec le compte root activé pour la connexion locale, basée sur un mot de passe.
- RHEL , CentOS et Fedora font partie des autres systèmes d'exploitation respectés .
- Debian (à partir duquel Ubuntu dérive ) demande à 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.
Les novices demandent souvent comment activer le compte root dans Ubuntu. Nous ne devrions pas leur cacher cette information, mais généralement quand les gens le demandent, c'est parce qu'ils ont la fausse impression qu'ils ont besoin d'activer le compte root. En fait, cela n’est presque jamais nécessaire, alors il est important d’expliquer cela lorsque vous répondez à de telles questions. L'activation du compte root permet également de devenir facilement souple et d'effectuer des actions en tant que root ne nécessitant pas de privilèges root. Mais cela ne signifie pas que l'activation du compte root est en soi précaire.
sudo
encourage et aide les utilisateurs à exécuter des commandes en tant que root uniquement lorsqu'ils en ont besoin. Pour exécuter une commande en tant que root, tapez sudo
un espace, puis la commande. C'est très pratique, et de nombreux utilisateurs de tous les niveaux de compétence préfèrent cette approche.
En bref, vous n'avez pas besoin d'activer les connexions root car vous l'avez sudo
. Mais tant que vous ne l'utilisez que pour les tâches administratives qui en ont besoin, l'activation et la connexion en tant que root sont à peu près sécurisées, à condition que ce soit uniquement de la manière suivante :
- Localement, depuis une console virtuelle non graphique .
- Avec la
su
commande, lorsque vous êtes connecté à partir d'un autre compte.
Cependant, des risques de sécurité supplémentaires importants surviennent si vous vous connectez en tant que root de la manière suivante:
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 qu'utilisateur root pour utiliser cette interface à n'importe quel moment. Cela va à l'encontre du principe selon lequel seuls les programmes exécutés en tant que root ont vraiment besoin de privilèges root. Certains de ces programmes peuvent contenir des bogues, notamment des problèmes de sécurité.
En outre, il existe une raison non liée à la sécurité pour éviter cela. 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 les testent pas souvent en tant que root. Même s’ils le font, la connexion à un environnement de bureau graphique en tant qu’utilisateur root ne permet pas aux utilisateurs de réaliser des tests alpha et bêta dans le monde réel, car presque personne ne le tente (pour les raisons de sécurité expliquées ci-dessus).
Si vous devez exécuter une application graphique spécifique en tant que root, vous pouvez utilisergksudo
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 root
compte peut en effet tout faire et il porte le même nom sur pratiquement tous les systèmes de type Unix. En vous connectant en tant qu'utilisateur root via ssh
ou via d' autres mécanismes distants, ou même en configurant des services distants pour le permettre , vous facilitez l'accès des intrus, y compris les scripts automatisés et les programmes malveillants s'exécutant sur des réseaux de zombies, grâce à la force brute, aux attaques par dictionnaire (et éventuellement quelques bugs de sécurité).
On peut soutenir que le risque n’est pas extrêmement élevé si vous autorisez uniquement les connexions racine basées sur une clé , et non sur un mot de passe .
Par défaut, sous Ubuntu, ni les connexions racine graphiques ni les connexions distantes via SSH ne sont activées, même si vous activez la connexion en tant que racine . C'est-à-dire que même si vous activez la connexion root, elle ne l'est toujours que d'une manière raisonnablement sécurisée.
- Si vous utilisez un serveur ssh sur Ubuntu et n’avez pas changé
/etc/sshd/ssh_config
, il contiendra la ligne PermitRootLogin without-password
. Cela désactive la connexion root basée sur un mot de passe, mais permet la connexion basée sur une clé. Cependant, aucune clé n'est configurée par défaut. Par conséquent, à moins d'en avoir configuré une, cela ne fonctionnera pas non plus. De plus, la connexion root à distance basée sur clé est beaucoup moins mauvaise que la connexion root à distance basée sur mot de passe, en partie parce qu'elle ne crée pas le risque d'attaques brutales et d'attaques par 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 utilisez d'autres services fournissant un login à distance, comme ftp, vous devriez également les vérifier.
En conclusion:
- Ne faites des choses en tant que root que lorsque vous en avez besoin;
sudo
vous aide à le faire, tout en vous donnant tout le pouvoir de root à tout moment.
- Si vous comprenez le fonctionnement de root et les dangers d'une utilisation excessive, l'activation du compte root ne pose pas vraiment de problème du point de vue de la sécurité.
- Mais si vous comprenez cela, vous savez également que vous n'avez presque certainement pas besoin d'activer le compte root .
Pour plus d'informations sur root et pour sudo
certains avantages supplémentaires sudo
que je n'ai pas abordés ici, je recommande vivement RootSudo dans le wiki d'aide d'Ubuntu.