web-dev-qa-db-fra.com

Comment NE PAS devenir un utilisateur root? Les administrateurs sont-ils root?

J'ai installé Ubuntu sur mon PC. Pour me connecter, j'utilise le nom d'utilisateur et le mot de passe créés lors de l'installation. Est-ce que cela signifie que je suis un utilisateur root? Si oui, comment puis-je devenir non-root? Il semble que l'utilisateur non root soit plus sécurisé que l'utilisateur admin.

41
FirstName LastName

Vous êtes un administrateur, mais pas root. L'utilisateur root peut tout faire. Les administrateurs peuvent exécuter des actions sous la forme root , mais ce que les administrateurs font habituellement n'est généralement pas effectué par root. De cette façon, vous avez le plein contrôle de votre propre système, mais uniquement lorsque vous choisissez de l’utiliser.

Ubuntu vous demande votre mot de passe lorsque vous essayez de faire des choses comme root, pour vous assurer que c'est vraiment vous.

Comptes d'utilisateurs: humains et autres

Les vrais utilisateurs ont des comptes d’utilisateur pour les représenter. Vous avez créé un tel compte lorsque vous avez installé Ubuntu. Mais tous les comptes d'utilisateurs ne représentent pas de vrais utilisateurs humains .

Les utilisateurs humains réels se voient accorder (et se voient refuser) des capacités par le biais de leurs comptes d'utilisateurs. Ils doivent utiliser leurs comptes d'utilisateurs pour utiliser le système. par conséquent, les capacités et les limites de leurs comptes d'utilisateurs s'appliquent à eux.

Les comptes d'utilisateurs sont également utilisés pour codifier des ensembles de capacités et de limitations. Certains comptes d'utilisateur - la plupart, en fait, à moins que vous ne possédiez de nombreux utilisateurs humains de la machine - existent de sorte que certains programmes ou commandes puissent être exécutés avec leur identité, une identité avec les capacités appropriées et des limitations pour le travail.

Par exemple, l'utilisateur www-data existe de sorte que si vous exécutez un serveur Web, il est propriétaire des données rendues accessibles par le serveur. Aucun utilisateur humain réel ne doit être autorisé à apporter des modifications non vérifiées à ces données, et le serveur Web ne doit pas nécessairement être autorisé à effectuer toute action inutile pour servir le Web. Par conséquent, les données Web et le reste du système sont mieux protégés contre les ruptures accidentelles ou intentionnelles que si le serveur Web était géré par un utilisateur humain qui disposerait de tous les pouvoirs du serveur Web (et des pouvoirs de ce serveur posséder).

Le compte d'utilisateur non humain le plus important

Le superutilisateur , dont le nom d'utilisateur est root, est un compte d'utilisateur non humain avec une combinaison très spécifique de capacités et de limitations: toutes les capacités et pas de limitations .

root ' autorisé à faire n'importe quoi. Il reste encore des choses que root ne peut pas faire car le système lui-même ne peut ni les exécuter, ni leur donner un sens. Donc, root ne peut pas tuer un processus qui est dans sommeil ininterruptible , ou créer une pierre trop lourde pour la déplacer, puis la déplacer .

De nombreux processus système importants, tels que init , exécuté en tant que root et root sont utilisés pour l'exécution de tâches administratives.

Puis-je me connecter en tant que root?

Il est possible de configurer le compte root afin de pouvoir se connecter avec un mot de passe, mais ceci n'est pas activé par défaut dans Ubuntu. Au lieu de cela, vous pouvez imaginer que root ressemble à www-data, lp, nobody et à d'autres comptes non humains. (Exécutez cat /etc/passwd ou getent passwd pour les voir tous.)

Les utilisateurs humains se connectent avec leurs propres comptes d’utilisateur, puis, si une tâche doit être exécutée avec un autre compte d’utilisateur, ils le font avec cette identité , sans avoir réellement connecté en tant qu'utilisateur.

Il est possible de configurer les autres utilisateurs non humains, tels que www-data, afin que vous puissiez également vous connecter en tant que tels. C'est assez rare, cependant, alors que dans d'autres systèmes d'exploitation semblables à Unix, il est courant de se connecter en tant que root dans un terminal . Les risques liés à l'exécution d'une interface graphique complète sous la forme root, associés au nombre de programmes graphiques non conçus pour s'exécuter en tant que root et susceptibles de ne pas fonctionner correctement, signifient que vous ne devez jamais tenter d'obtenir une session de bureau root- possédée (===) .

Notez que lorsque vous vous connectez en tant que root est désactivé par défaut sous Ubuntu, il existe des moyens d'obtenir un shell root sans s'authentifier sous le nom root: les effets les plus courants sont Sudo -s ou -i. , mode de récupération et techniques similaires . (Ne vous inquiétez pas si vous ne savez pas ce que sont ces choses.) Il ne s'agit pas d'une connexion: en mode de récupération, vous devenez root avant toute connexion; avec les méthodes basées sur Sudo, vous exécutez un shell en tant que root.

Administrateurs

Dans Ubuntu, les administrateurs sont les utilisateurs qui peuvent faire ce qu'ils veulent en tant que root quand ils le souhaitent .

System Settings, showing human user accounts including an administrator account.
Paramètres système> Comptes d'utilisateurs. "Eliah Kagan" est un administrateur. Il peut donc exécuter des tâches en tant que root, mais il n'est pas root.

Je suis administrateur sur mon système Ubuntu. Lorsque j'exécute des programmes, ils s'exécutent généralement sous le nom ek ("Eliah Kagan" est le nom complet qui correspond au nom d'utilisateur ek.)

Lorsque je lance AbiWord ou LibreOffice, il s'exécute sous le nom ek. Lorsque je lance Firefox, Chromium, Empathy ou Pidgin, il s'exécute sous le nom ek. Les programmes exécutés pour fournir l'interface de bureau s'exécutent sous la forme ek.

Cependant, je suis un administrateur, donc si je dois effectuer une tâche administrative, je peux le faire.

Sudo

Sur la ligne de commande, j'utilise normalement Sudo pour exécuter une commande sous la forme root:

Sudo command...

Cela me demandera mon mot de passe . (Pas le mot de passe de root; root n'en a pas.)

  • Étant donné que je suis administrateur, je peux effectuer des actions en tant que root. Dans la configuration par défaut, je dois entrer mon mot de passe pour le faire.
  • Les utilisateurs qui ne sont pas administrateurs ne peuvent pas effectuer d'actions telles que root, même en indiquant leur mot de passe. Les commandes Sudo échoueront si l'utilisateur qui les exécute n'est pas un administrateur.

Les administrateurs étant des utilisateurs tout à fait ordinaires , à l'exception de pour la possibilité d'effectuer des actions en tant que root, l'exécution d'une commande nécessitant des privilèges root échouera toujours, sauf si la commande est exécutée en tant que root.

Screenshot illustrating the need for Sudo: an administrator can only run certain commands successfully by doing so as <code>root</code>, which is usually done by prepending Sudo (and a space) to the command.
Capture illustrant la nécessité d’utiliser Sudo pour effectuer des tâches administratives. (Basé sur "Sandwich" par Randall Munroe .)

Sudo, graphiquement

Les programmes graphiques peuvent fonctionner de root à interfaces graphiques pour Sudo , tels que gksu/gksudo et kdesudo . Par exemple, pour exécuter GParted comme root, je pourrais exécuter gksudo gparted. Ensuite, je serais invité graphiquement pour mon mot de passe.

gksudo graphical password Prompt

Depuis que je suis invité graphiquement, il ne doit pas y avoir de terminal. C’est l’un des moyens utilisés par les outils d’administration sous root.

Polkit

Polkit (une fois appelé PolicyKit) est un autre moyen pour les administrateurs de procéder comme suit: root. Un programme accède à un service qui effectue l'action. Parfois, l'action exécute tout un programme. parfois l'action est plus limitée.

De nos jours, de nombreux utilitaires d’administration graphique du système sont configurés pour utiliser polkit par défaut, plutôt que pour Sudo.

Le Centre de logiciel est un exemple d'un tel utilitaire. Il tire pleinement parti de polkit, obligeant l'utilisateur à entrer son mot de passe uniquement lorsqu'il veut faire quelque chose qui nécessite les privilèges root. (Ceci est également possible avec l’authentification basée sur Sudo, mais elle est plus difficile et plus moche à accomplir.)

Dans le centre logiciel, je peux trouver et lire des informations sur une application; alors on me demande mon mot de passe quand je veux l'installer.

Authenticating via polkit to install an application in the Ubuntu Software Center.

Comment polkit est différent

Tout programme graphique peut être exécuté en tant que root avec gksudo et d'autres interfaces graphiques Sudo. (Le programme peut ne pas fonctionner très bien, selon qu'il est conçu ou non pour être utilisé en tant que root. Mais la commande permettant de démarrer le programme sera exécutée en tant que root.)

Alors que polkit est maintenant plus commun que les interfaces graphiques Sudo comme manière dont les applications sous Ubuntu effectuent des actions en tant que root dans les coulisses, polki exécutera une application graphique uniquement en tant que rootsi un fichier de configuration le permet et en indique les actions). être effectuée .

Polkit, non graphique

pkexec est la commande utilisée pour exécuter un programme avec polkit.

Comme Sudo, pkexec peut exécuter des commandes non graphiques. (Et il n’exige pas de fichier de configuration définissant les fonctionnalités de la commande. Il exécute simplement la commande sous la forme root.)

pkexec command...

pkexec demande graphiquement un mot de passe, même s’il est exécuté depuis un terminal (c’est l’une des manières par laquelle son comportement ressemble plus à gksudo que de courir directement Sudo).

(S'il n'y a pas d'interface graphique - par exemple, si vous êtes connecté à partir de console virtuelle ou en mode texte seul session SSH , ou si l'interface graphique ne fonctionne pas correctement- -alors pkexec va se dégrade gracieusement et invite votre mot de passe sur la ligne de commande.)

Running a command in a terminal with pkexec.

Une fois l'authentification réussie, la commande s'exécute dans le terminal.

A command runs seamlessly as <code>root</code> after successfully polkit authentication.

Exécution de commandes en tant qu'utilisateurs autres que root

root est spécial car il permet de faire tout ce qui peut être fait. Mais c'est un compte utilisateur comme n'importe quel compte, et les manières d'exécuter des commandes telles que root avec Sudo (directement ou avec une interface graphique) ou polkit peuvent être légèrement modifiées pour exécuter une commande comme n'importe quel autre utilisateur:

Sudo -u usernamecommand...
gksudo -u usernamecommand...
pkexec --user usernamecommand...

Quelle? Vous venez de taper Sudo en premier? Comment est cette sécurité?!

Exécuter des commandes avec Sudo revient à invoquer infailliblité papale .

Lorsque vous exécutez une commande avec Sudo [invoquez l'infaillibilité papale] , Ubuntu [Les gens catholiques] s'efforce de faire en sorte que vous soyez vraiment [vraiment le pape].

Oui, je sais que l'infaillibilité papale (même normative) est déclarative; le parallèle n'est pas parfait.

Essayer de faire quelque chose comme root avec Sudo (ou polkit) est un gros problème - Ubuntu ne laissera pas cette diapositive de côté comme toutes les autres fois que vous exécutez un programme.

Vous êtes invité à entrer votre mot de passe. (Ensuite, vous vous en souvenez pendant une courte période, vous n’avez donc pas besoin de saisir constamment votre mot de passe pour administrer votre système.)

En plus de vous rappeler de faire attention , cela protège contre deux scénarios:

  • Quelqu'un utilise votre ordinateur (ou votre appareil mobile), peut-être sous l'apparence de vérifier ses courriels ou à des fins anodines similaires. Ici, il leur est encore possible de faire du mal - par exemple, ils pourraient modifier ou supprimer vos documents. Cependant, ils ne peuvent pas administrer le système, car ils ne peuvent pas entrer votre mot de passe.
  • Les programmes qui ne sont pas censés administrer le système ne peuvent pas le faire, à moins que vous n'ayez entré votre mot de passe. Par exemple, si votre navigateur Web est compromis par un bogue de sécurité et exécute un code malveillant, il ne peut toujours pas effectuer de tâches administratives. Il ne peut pas créer et supprimer des utilisateurs, modifier les programmes installés en tant que root (qui inclut tout ce qui est installé par le gestionnaire de paquets, tel que LibreOffice), ou modifier le système à un niveau plus profond.

J'ai entendu parler de su. Qu'est-ce que c'est? Puis-je l'utiliser?

su s'authentifie en tant qu'un autre utilisateur et exécute une commande (ou démarre un shell interactif). Il est possible de limiter qui est autorisé à utiliser su, mais su s'authentifie avec le mot de passe du compte cible , et non le mot de passe de l'utilisateur en cours d'exécution.

Par exemple, su username -c 'command...' exécute command... en tant que nom d'utilisateur , exactement comme Sudo -u usernamecommand....

Mais lorsque vous exécutez une commande sous la forme username avec Sudo, vous entrez votre mot de passe . Lorsque vous exécutez une commande en tant que username avec su, vous entrez username le mot de passe .

Étant donné que su effectue l’authentification pour l’utilisateur cible , avec su vous ne pouvez exécuter de commandes qu’en tant qu’utilisateurs dont les comptes sont activés .

Le compte root (comme www-data et nobody) est désactivé par défaut. Aucun mot de passe ne fonctionnera pour vous connecter en tant que root. Vous ne pouvez donc pas utiliser su pour exécuter des commandes sous la forme root.

Vous pouvez utiliser su pour exécuter les commandes en tant qu'utilisateur pouvant se connecter (ce qui inclut généralement tous les comptes d'utilisateur de votre système représentant des êtres humains).

Lorsque vous êtes connecté en tant qu'invité, vous ne pouvez pas utiliser su.

Combinaison de su et Sudo

Une personne qui n'est pas administrateur peut même utiliser su pour exécuter Sudo en tant qu'administrateur. (Ceci est correct, car ils ont besoin du mot de passe de l'administrateur pour exécuter des commandes en tant qu'administrateur.) Autrement dit, un utilisateur limité peut utiliser su pour exécuter Sudo afin d'exécuter une commande sous la forme root. Cela peut ressembler à:

su username -c 'Sudo command...'

(Exécution de programmes graphiques de cette façon nécessite un soin particulier .)

su ne serait-il pas un moyen plus sûr d'exécuter des commandes en tant que root?

Probablement pas.

Que se passe-t-il si un utilisateur ne devrait pas être autorisé à agir en tant que root?

Faites-en un utilisateur limité au lieu d'un administrateur.

Que se passe-t-il si un programme exécuté en tant qu'administrateur tente de Sudo à root?

Si vous n'avez pas reconfiguré Sudo pour le laisser réussir sans mot de passe, il échouera.

Un programme qui ne doit pas être exécuté comme un root piggyback avec une commande Sudo récente ne peut-il pas être utilisé, de sorte qu'aucun mot de passe n'est requis?

Ce serait très peu probable pour réussir. De nos jours, la plupart des systèmes d'exploitation (y compris Ubuntu) ont configuré Sudo par défaut, de sorte que ses horodatages ne s'appliquent que dans un contexte spécifique.

Par exemple, si j'exécute Sudo ... dans un onglet Terminal et que je m'authentifie correctement, Sudo dans un autre onglet (ou exécuté par un programme graphique non associé, ou exécuté depuis une console virtuelle ou une session SSH) demandera toujours un mot de passe. Même si c'est exécuté immédiatement après.

Un programme exécuté en tant qu'utilisateur X n'a-t-il pas accès au mot de passe de l'utilisateur X?

Non.

Si un programme malveillant peut s'exécuter en tant qu'administrateur, ne peut-il pas "écouter" ce qui est saisi lorsque l'administrateur s'authentifie avec Sudo ou polkit?

Potentiellement, oui. Mais ensuite, il pourrait "écouter" un mot de passe saisi pour su.

Si je dis à quelqu'un mon mot de passe ...

Ne dites pas votre mot de passe aux gens.

Que se passe-t-il si quelqu'un doit connaître mon mot de passe pour faire quelque chose en mon nom, mais que je ne veux pas le laisser administrer le système?

Idéalement, ils devraient avoir un compte utilisateur distinct qui leur permette de faire ce qu'ils doivent faire. Par exemple, vous pouvez partager des fichiers entre des comptes, ce qui permet à plusieurs utilisateurs de leur écrire, tout en refusant l'accès à d'autres utilisateurs.

Toutefois, dans le cas où une personne moins fiable pourrait être autorisée à partager votre compte, il devrait s'agir d'un compte utilisateur limité. Vous pouvez créer un compte séparé à cette fin (ce qui est logique: s'il s'agit d'un compte pour vous et quelqu'un d'autre pour lequel vous souhaitez disposer de capacités différentes, il devrait s'agir d'un compte différent).

Donc, la solution la plus sûre serait-elle d'interdire à la fois Sudo et su et de faire en sorte que les utilisateurs se connectent en tant que root, manuellement?

Non, car permettre aux utilisateurs de se connecter en tant que root présente de graves inconvénients. Autant que possible, le plus petit nombre possible d'actions doit être entrepris sous la forme root. Même la plupart des actes liés directement à l'administration d'un système (par exemple, regarder quels utilisateurs sont configurés et lire les journaux) ne nécessitent généralement pas de privilèges root.

De plus, tout comme potentiellement un programme malveillant pourrait regarder ce que quelqu'un tape lorsqu'il exécute Sudo ou su, ou créer un faux Sudo/su mot de passe Prompt, ( potentiellement ) un programme malveillant pourrait également créer un faux écran de connexion.

Qu'est-ce qui fait qu'un utilisateur est un administrateur?

Appartenance à un groupe.

Dans Ubuntu 12.04 et versions ultérieures , les administrateurs sont membres du groupe appelé Sudo.

Dans Ubuntu 11.10 et versions antérieures , les administrateurs sont membres du groupe appelé admin.

Lorsqu'un système Ubuntu antérieur à la version 12.04 est mis à niveau vers la version 12.04 ou ultérieure, le groupe admin est conservé pour des raisons de compatibilité ascendante (et continue de conférer un pouvoir administratif aux utilisateurs qui s'y trouvent), mais le groupe Sudo est également utilisé.

Comptes d'utilisateurs limités

Puis-je utiliser un compte utilisateur limité au lieu d'un compte administrateur?

Si vous aimez, bien sûr. Créez un compte utilisateur limité dans Paramètres système > Comptes utilisateurs et connectez-vous en tant que cet utilisateur.

Puis-je transformer mon compte administrateur en compte utilisateur limité?

Oui, supprimez-le simplement des groupes Sudo et admin (voir ci-dessus).

Mais vous devez vous assurer qu’il existe au moins un autre compte administrateur afin de pouvoir administrer votre système. Si ce n’est pas le cas, alors vous devez démarrer avec mode de récupération ou un CD live et redonner à certains utilisateurs le statut d’administrateur . (This est similaire à réinitialisation d'un mot de passe administrateur perd .)

Les outils graphiques permettant d'administrer les utilisateurs et les groupes vous empêcheront généralement de créer un système sans administrateur, ou du moins de vous prévenir. Les outils de ligne de commande ne le feront généralement pas (en sachant que vous savez ce que vous faites).

78
Eliah Kagan

Aucune question idiote;)

J'espère que cela clarifie un peu les choses:

Sous Ubuntu, deux types de comptes d’utilisateur différents peuvent être créés: standard comptes et administrateur comptes. La différence entre les deux: un compte standard n’est pas autorisé à apporter des modifications importantes à votre système en obtenant un accès root, alors qu’un compte administrateur peut utiliser son mot de passe pour apporter des modifications en tant qu’utilisateur root. L'utilisateur racine lui-même est l'un des nombreux utilisateurs créés par le système et que vous ne voyez ou ne remarquez pas normalement, et vous ne pouvez pas vous connecter en tant que tel (par défaut, de toute façon). Si vous êtes connecté à un compte de type administrateur, vous pouvez devenir cet utilisateur racine à l'aide de la commande Sudo dans un terminal et vous pouvez taper votre mot de passe pour installer le logiciel, modifier le système, etc. Si vous êtes connecté en tant qu'utilisateur standard, vous ne pouvez pas faire cela.

4
Richard

Le compte créé lors de l'installation est un compte administrateur .

Dans Ubuntu, le compte root n'a pas de mot de passe et, par conséquent, vous ne pouvez pas vous connecter en tant qu'utilisateur rootname__. Il existe des moyens de contourner ce problème, mais il s'agit du paramètre par défaut.

Un compte administrateur dans Ubuntu signifie que l'utilisateur est ajouté au groupe Sudoname__, ce qui permet au compte de gagner des privilèges temporairement à l'aide de la commande Sudoname__. PolicyKit peut demander une élévation de privilèges en indiquant le mot de passe 'Administrateur'. (Vous devez sélectionner un utilisateur administrateur et donner le mot de passe de ce compte.)

Pour confirmer que celles-ci sont vraies:

  • Ouvrez un terminal et essayez de mettre à jour l'index du package logiciel. apt-get update est la commande utilisée pour le faire et cela nécessite que soit exécuté en tant que root. Cela fonctionne uniquement lorsque vous vous connectez en tant qu'utilisateur root ou que vous l'exécutez en tant qu'utilisateur root en utilisant des augmentations de privilèges. Un administrateur peut exécuter Sudo apt-get update en s’authentifiant auprès du mécanisme Sudoname__, qui permet d’exécuter des commandes en tant qu’utilisateur. Un utilisateur standard ne sera pas autorisé à le faire.

  • Ouvrez des comptes d'utilisateurs à partir des paramètres système et essayez d'ajouter un nouvel utilisateur. Le mécanisme de protection utilisé ici est le PolicyKit. Les administrateurs seront autorisés à s'authentifier et à élever leurs privilèges, mais les utilisateurs standard seront bloqués. Un mot de passe administrateur est nécessaire pour continuer.

Voici comment vérifier si votre compte est administrateur ou non:

  • Ouvrez les comptes d'utilisateurs à partir des paramètres système.
  • Sélectionnez votre compte d'utilisateur dans la colonne de gauche.
  • Administratordevrait apparaître sous le nom du compte dans les deux volets pour les comptes d’administrateur et Standardpour les utilisateurs normaux.
3
Mahesh

Dans Tous les systèmes Linux Pour apporter des modifications au système, nous devons être authentifiés en tant qu'utilisateur root et pour appliquer toutes les modifications, nous devons être utilisateur root.

Les utilisateurs normaux ne peuvent pas appliquer les modifications à l’ensemble du système. C’est l’avantage de Linux par rapport aux fenêtres.

Si une attaque est faite, cela ne concernera que cette zone du système Linux/Unix car attaquer ou modifier les zones restantes. Des autorisations root sont nécessaires, mais sous Windows, si un endroit est attaqué, tout le système sera affecté.

C’est pourquoi, dans de nombreuses questions, si un utilisateur ne demande pas de mot de passe root, nous l’avertirons alors que cela n’est pas recommandé dans des conditions de sécurité et laissons le choix entre eux.

Si vous souhaitez vous transformer en utilisateur root, Sudo peut vous aider.

Sudo -i 

Si vous souhaitez lancer l'application en tant qu'utilisateur root, vous pouvez utiliser Sudo.

Sudo <app_name>

Il est toujours préférable d’exécuter le système en tant qu’utilisateur non root.

3
rɑːdʒɑ

Non.

l'utilisateur avec lequel vous vous connectez à Ubuntu n'est pas l'utilisateur admin (l'utilisateur admin dans la terminologie Linux est appelé root)

2
tomodachi