Vous êtes un administrateur, mais pas root
. L' root
utilisateur peut faire n'importe quoi. Les administrateurs peuvent effectuer des actions en tant queroot
, mais généralement, ce que font les administrateurs n'est pas fait 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, sauf si vous avez beaucoup d' utilisateurs humains de la machine - existent pour que certains programmes ou commandes puissent être exécutés avec leur identité, une identité avec les capacités et limitations appropriées pour le travail.
Par exemple, l' www-data
utilisateur existe de sorte que si vous exécutez un serveur Web, il possède les 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 aucune limitation .
root
est autorisé à faire n'importe quoi. Il y a encore des choses que l' root
on ne peut pas faire parce que le système lui-même ne peut ni les exécuter ni les comprendre. Donc, root
ne peut pas tuer un processus qui est dans un sommeil ininterruptible , ou faire un rocher trop lourd pour être déplacé, puis déplacez-le .
De nombreux processus système importants, tels que init
, s'exécutent en tant que root
et root
sont utilisés pour effectuer des tâches administratives.
Puis-je me connecter en tant que root
?
Il est possible de configurer le root
compte pour 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 penser root
comme comme www-data
, lp
, nobody
et d' autres comptes non humains. (Courez cat /etc/passwd
ou getent passwd
pour tous les voir.)
Les utilisateurs humains se connectent avec leurs propres comptes d'utilisateur. Par la suite, si une tâche doit être effectuée avec un autre compte d'utilisateur, ils l' exécutent avec cette identité sans s'être réellement connectés en tant que cet utilisateur.
Il est possible de configurer les autres utilisateurs non humains, par exemple www-data
, pour pouvoir également se connecter en tant que tels. C'est assez rare, cependant, alors que dans certains autres systèmes d'exploitation de type Unix, il est courant de se connecter comme root
dans un terminal . Les risques liés à l'exécution de toute une interface graphique root
, combinés au nombre de programmes graphiques conçus pour fonctionner en tant que tels root
et susceptibles de ne pas fonctionner correctement, signifient que vous ne devez jamais tenter d'obtenir une session de bureauroot
dotée de la propriété .
Notez que lors de la connexion en tant que root
est désactivée par défaut dans Ubuntu, il existe des moyens d’obtenir un root
shell sans s’authentifier root
, ce qui produit un effet similaire: les plus courants sont sudo -s
ou-i
, le mode de récupération et des techniques similaires . (Ne vous inquiétez pas si vous ne savez pas ce que c'est.) Il ne s'agit pas d'une connexion: en mode de récupération, vous le devenez root
avant toute connexion; avec les sudo
méthodes basées sur, vous exécutez simplement un shell en tant que root.
Administrateurs
Dans Ubuntu, les administrateurs sont les utilisateurs qui peuvent faire ce qu'ils veulent que root
, quand ils choisissent de le faire .
Paramètres système> Comptes d'utilisateurs. "Eliah Kagan" est un administrateur, donc il peut faire des choses comme root
, mais il ne l'est pasroot
.
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 correspondant au ek
nom d’utilisateur.)
Lorsque je lance AbiWord ou LibreOffice, il s'exécute en tant que ek
. Lorsque je lance Firefox, Chrome, Empathy ou Pidgin, il s'exécute en tant que ek
. Les programmes exécutés pour fournir l'interface de bureau s'exécutent en tant que 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, je voudrais normalement utiliser sudo
une commande en tant que root
:
sudo command...
Cela me demandera mon mot de passe. (Pas root
le mot de passe; root
n'en a pas.)
- Parce que je suis un 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 quelles
root
, même en entrant leur mot de passe. sudo
les commandes échoueront si l'utilisateur qui les exécute n'est pas un administrateur.
Étant donné que les administrateurs sont des utilisateurs tout à fait ordinaires, à l' exception de la possibilité d'effectuer des actions en tant que root
, l'exécution d'une commande nécessitant des root
privilèges échouera tout de même, sauf si la commande est exécutée en tant queroot
.
Capture d'écran illustrant la nécessité d'utiliser sudo
pour effectuer des tâches administratives. (Basé sur "Sandwich" de Randall Munroe .)
sudo, graphiquement
Programmes graphiques peuvent fonctionner comme root
par interfaces graphiques poursudo
, comme gksu
/gksudo
et kdesudo
. Par exemple, pour exécuter GParted comme root
je pouvais courir gksudo gparted
. Ensuite, je serais invité graphiquement pour mon mot de passe.
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 root
.
Polkit
Polkit (une fois appelé PolicyKit) est un autre moyen pour les administrateurs de faire les choses comme 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 être utilisé 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 souhaite faire quelque chose qui nécessite des root
privilèges. (Ceci est également possible avec l’ sudo
authentification basée sur l’utilisateur, mais il est plus difficile et plus laid à 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.
Comment polkit est différent
Tout programme graphique peut être exécuté comme root
avec d' gksudo
autres interfaces graphiques sudo
. (Le programme ne fonctionnera peut-être pas 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 sudo
interfaces graphiques en ce qui concerne la manière dont les applications exécutent des actions en root
arrière-plan, polki n'exécutera une application graphique que root
si un fichier de configuration le permettait et indiquait les actions pouvant être effectuées .
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 ne nécessite pas de fichier de configuration définissant les capacités de la commande - il exécute simplement la commande en tant que 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 dont son comportement ressemble plus à gksudo
celui de courir droit sudo
).
(S'il n'y a pas d'interface graphique - par exemple, si vous êtes connecté à partir d'une console virtuelle ou d'une session SSH avec texte uniquement , ou si l'interface graphique ne fonctionne pas correctement -, il pkexec
se dégradera normalement et vous demandera votre mot de passe sur la ligne de commande. .)
Une fois l'authentification réussie, la commande s'exécute dans le terminal.
Exécuter des commandes en tant qu'autres utilisateurs root
root
est spécial parce qu'il arrive à 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 comme 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 username command...
gksudo -u username command...
pkexec --user username command...
Quelle? Vous venez de taper en sudo
premier? Comment est cette sécurité?!
Exécuter des commandes avec sudo
est un peu comme invoquer l'infailliblité papale .
Lorsque vous exécutez une commande avecsudo
[invoquer l'infaillibilité papale] , Ubuntu [les gens catholiques] s'efforce de faire en sorte que vous soyez vraiment [le vrai 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 passer ça comme si de rien n'était.
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 , ceci vous 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
(ce 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 le nombre de personnes autorisées à utiliser su
, mais l' su
authentification est effectuée avec le mot de passe du compte cible , et non le mot de passe de l'utilisateur en cours d'exécution.
Par exemple, fonctionne en tant que nom d' utilisateur , tout comme .su username -c 'command...'
command...
sudo -u username command...
Mais lorsque vous exécutez une commande username
avec sudo
, vous entrez votre mot de passe . Lorsque vous exécutez une commande username
avec su
, vous entrez username
le mot de passe .
Depuis su
effectue l'authentification pour l'utilisateur cible , su
vous ne pouvez exécuter des commandes qu'avec les utilisateurs dont les comptes sont activés .
Le root
compte (comme www-data
et nobody
) est désactivé par défaut. Il n'y a pas de mot de passe qui fonctionnera pour vous connecter en tant que root
. Vous ne pouvez donc pas utiliser les su
commandes en tant que root
.
Vous pouvez utiliser su
pour exécuter des commandes comme un autre utilisateur qui peut se connecter (qui inclut généralement tous les comptes d'utilisateurs sur votre système qui représentent des êtres humains).
Lorsque vous êtes connecté en tant qu'invité, vous ne pouvez pas utiliser su
du tout.
La combinaison su
etsudo
Quelqu'un qui n'est pas administrateur peut même su
s'exécuter sudo
en tant qu'administrateur. (Ceci est correct mais, comme ils ont besoin de mot de passe de l'administrateur pour exécuter des commandes en tant qu'administrateur.) Ainsi, un utilisateur limité peut utiliser su
pour exécuter sudo
pour exécuter une commande comme root
. Cela peut ressembler à:
su username -c 'sudo command...'
(L'exécution de programmes graphiques de cette manière nécessite des précautions particulières .)
Ne serait pas su
un moyen plus sûr d'exécuter des commandes en tant que root
?
Probablement pas.
Que faire 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 le sudo
faire root
?
Si vous ne l'avez pas reconfiguré sudo
pour le laisser réussir sans mot de passe, il échouera.
Un programme ne peut-il pas être exécuté en mode root
piggyback avec une sudo
commande récente , 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 été sudo
configurés par défaut pour que leurs 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
un autre onglet (ou exécuté par un programme graphique non associé, ou exécuté à partir d'une console virtuelle ou d'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
polkit?
Potentiellement, oui. Mais alors 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 gérer 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 fonctionnalités différentes, il doit s'agir d'un compte différent).
Alors, serait la chose la plus sûre de ne pas accorder à la fois sudo
et su
les gens de make connecter en tant que root
manuellement?
Non, car permettre aux utilisateurs de se connecter comme root
du tout présente de graves inconvénients . Dans la mesure du possible, le plus petit nombre possible d'actions doit être entrepris comme 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 root
privilèges.
En outre, tout comme potentiellement un programme malveillant pourrait regarder quels types de quelqu'un quand ils courent sudo
ou su
, ou de créer un faux sudo
/ su
mot de passe rapide, potentiellement un programme malveillant pourrait créer un écran de connexion de faux, aussi.
Qu'est-ce qui fait qu'un utilisateur est un administrateur?
Appartenance à un groupe.
Dans Ubuntu 12.04 et les versions ultérieures , les administrateurs sont membres du groupe appelé sudo
.
Dans Ubuntu 11.10 et les versions antérieures , les administrateurs sont membres du groupe appelé admin
.
Lorsqu'un système Ubuntu antérieur à 12.04 est mis à niveau vers 12.04 ou une version ultérieure, le admin
groupe est conservé pour des raisons de compatibilité ascendante (et continue de conférer un pouvoir administratif aux utilisateurs du système), mais le sudo
groupe 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 d'utilisateurs et connectez-vous en tant qu'utilisateur.
Puis-je faire de mon compte administrateur un compte utilisateur limité?
Oui, supprimez-le simplement des groupes sudo
et admin
(voir ci-dessus).
Cependant, vous devez vous assurer qu'il existe au moins un autre compte administrateur pour pouvoir administrer votre système. Si ce n’est pas le cas, vous devrez alors démarrer en mode de récupération ou sur un CD live et redonner à certains utilisateurs le statut d’administrateur . (Ceci est similaire à la réinitialisation d'un mot de passe administrateur perdu .)
Les outils graphiques permettant d'administrer les utilisateurs et les groupes vous empêchent 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).