J'utilise Linux depuis un moment maintenant et chaque fois que je tapais, sudo
je pensais basculer vers l'utilisateur root pour une commande.
Apparemment, ce n'est pas vrai car tout ce dont j'ai besoin est le mot de passe de mon compte d'utilisateur. Je suppose que puisque je n'ai pas travaillé avec plusieurs utilisateurs, je ne l'ai pas vraiment remarqué dans le monde réel.
Je ne sais pas comment Ubuntu crée mon premier compte. Y a-t-il un utilisateur root? Suis-je root? Je suppose que je viens de créer un nouvel utilisateur lors de l'installation, mais cela m'a-t-il donné des privilèges root? Juste un peu confus ici ...
Alors, pourquoi suis-je autorisé à exécuter des commandes root avec le mot de passe de mon utilisateur?
sudo
a le bit "setuid" activé. Donc, il fonctionne comme l'utilisateur qui en est propriétaire (c'est-à-dire root sur tous les systèmes standard si je ne me trompe pas), pas comme l'utilisateur qui le lance.sudo
puis charge le/etc/sudoers
fichier et vérifie ce qui est autorisé en fonction de celui qui l'a lancé.sudo
privilégiées, travaillant peut-être dans des emplacements répartis géographiquement et sur des équipes 24 × 7, vous souhaitez pouvoir révoquer immédiatement l'accès privilégié d'une personne (par exemple, vous soupçonnez son intégrité). Si tout le monde utilise le mot de passe root unique et que vous le modifiez sans coordination préalable, le chaos peut en résulter. …Réponses:
Dans les détails cela fonctionne de la manière suivante:
/usr/bin/sudo
Le fichier exécutable a le bit setuid défini. Ainsi, même lorsqu'il est exécuté par un autre utilisateur, il s'exécute avec l'ID utilisateur du propriétaire du fichier (root dans ce cas).sudo
vérifie dans le/etc/sudoers
fichier quels sont vos privilèges et si vous êtes autorisé à exécuter la commande que vous appelez. Dire simplement,/etc/sudoers
est un fichier qui définit quels utilisateurs peuvent exécuter quelles commandes en utilisant unsudo
mécanisme.Voilà à quoi ressemble ce fichier sur mon Ubuntu:
La troisième ligne est ce qui vous intéresse probablement. Il permet à n’importe qui du groupe "sudo" d’exécuter une commande en tant qu’utilisateur.
Lorsque Ubuntu configure le premier compte lors de l'installation, il ajoute ce compte au groupe "sudo". Vous pouvez vérifier les groupes auxquels les utilisateurs appartiennent avec la
group
commande.sudo
vous demande un mot de passe. En ce qui concerne le fait qu'il nécessite le mot de passe de l'utilisateur, et non celui de la racine, il s'agit d'un extrait du manuel de sudoers :Cependant, en fait,
sudo
vous n'avez besoin de votre mot de passe utilisateur pour rien. Il vous le demande simplement pour vous assurer que vous êtes vraiment vous et pour vous fournir une sorte d'avertissement (ou une chance de vous arrêter) avant d'invoquer une commande potentiellement dangereuse. Si vous souhaitez désactiver la demande de mot de passe, modifiez l'entrée sudoers en:Une fois que l'authentification a
sudo
engendré un processus enfant qui exécute la commande appelée. L'enfant hérite de l'ID utilisateur root de son parent - lesudo
processus.Alors, répondant précisément à vos questions:
Tu avais raison. Chaque commande précédée de
sudo
s'exécute avec l'ID utilisateur root.Oui, il existe un compte utilisateur root, distinct de votre compte utilisateur créé lors de l'installation du système. Cependant, par défaut, dans Ubuntu, vous n'êtes pas autorisé à vous connecter à un terminal interactif en tant qu'utilisateur root.
Non, vous n'êtes pas une racine. Vous avez uniquement le privilège d'exécuter des commandes individuelles en tant que racine , en utilisant le
sudo
mécanisme décrit ci-dessus.Vous devez entrer le mot de passe de l'utilisateur uniquement en raison d'
sudo
un mécanisme de sécurité interne. Il peut être facilement désactivé. Vous gagnez vos pouvoirs de base à cause du bit setuid/usr/bin/sudo
, pas à cause des mots de passe que vous entrez.la source
sudo
pouvait être exécuté sans saisir mon mot de passe. Très bonne réponse!rootpw
indicateur danssudoers
.sudo su - root
le ferez et vous donnerons un terminal root. Cependant, vous ne pouvez pas vous connecter facilement à une session de bureau en tant que root.sudo
a le privilège root par lui-même et il décide de vous en informer en fonction d'un fichier de configuration.Le but
sudo
est de vous accorder les privilèges de quelqu'un d'autre (généralement root) sans demander le mot de passe de cet autre compte (contrairement àsu
).sudo
demande ici votre mot de passe pour s’assurer que le passant n’abuse pas de votre terminal déverrouillé.Ubuntu et de nombreux autres systèmes d'exploitation Linux et Unix accordent à un compte initial créé lors de l'installation le droit d'exécuter toutes les commandes en tant que
root
.Même s’il
root
s’agit toujours d’un compte sous Linux, lesroot
connexions directes sont désactivées par défaut pour une meilleure sécurité et traçabilité.la source
Piotr a très bien expliqué comment cela
sudo
fonctionne. Cependant, il n'a pas vraiment motivé pourquoi cela fonctionne de cette façon, alors je vais essayer d'ajouter cela ici.Avant la création de la
sudo
commande, nous avions lasu
commande. Cette commande permet à un utilisateur d'exécuter des commandes en tant qu'autre utilisateur, généralementroot
(sudo
il s'agit de l'utilisateur cible par défaut). C'était totalement non discriminant, vous pouvez exécuter n'importe quelle commande. Puisqu'il pouvait être utilisé par n'importe quel utilisateur et qu'il était en fait équivalent à une connexion en tant que cet utilisateur, il était nécessaire de connaître le mot de passe de l'utilisateur cible.A un moment donné, un peu plus de contrôle d'accès a été ajouté: pour pouvoir être utilisé
su
, il fallait être membre duwheel
groupe. Mais comme vous pouvez toujours exécuter n’importe quelle commande, il était toujours logique de vous demander de connaître leur mot de passe.Demander aux utilisateurs de connaître le mot de passe de chacun, ou du superutilisateur, n’était cependant pas très sécurisé. Souvent, vous voulez simplement donner à certains utilisateurs un accès limité à un autre compte (cela fait partie d'un concept de sécurité appelé principe de moindre privilège ). Cela rend également la reddition de comptes difficile: si plusieurs personnes connaissent le mot de passe d'un compte et que ce compte est impliqué dans une erreur ou un abus, vous ne pouvez pas dire lequel d'entre eux l'a réellement fait.
Ainsi a
sudo
été créé. Plutôt que d’autoriser les utilisateurs à exécuter une commande, il contient un fichier de configuration complexe, abordé brièvement dans la réponse de Piotr, qui spécifie précisément qui peut l’utiliser, à quels utilisateurs ils peuvent basculer et quelles commandes ils sont autorisés à exécuter. Avec ce contrôle précis sur qui peut faire quoi et sur qui, nous n'avons plus besoin de donner aux utilisateurs le mot de passe du compte cible; Si nous le faisions, ils pourraient facilement contourner tous les contrôles du fichier de configuration en se connectant sous cet utilisateur. Au lieu de cela, nous leur demandons normalement de prouver qu’ils sont bien ceux avec qui ils ont ouvert la session en saisissant leur propre mot de passe - ceci a pour but d’empêcher quiconque de profiter d’un compte si le terminal est laissé sans surveillance.Cette exigence est levée pour le superutilisateur - ce compte peut faire presque tout au système sans utiliser
sudo
, donc il a été jugé superflu. Il est également possible de spécifier dans le fichier de configuration que les utilisateurs n'ont pas besoin d'entrer de mot de passe. Certaines entreprises l'utilisent lorsqu'elles estiment que la sécurité physique de l'environnement de leur poste de travail est suffisante pour éviter les abus.la source
su
enregistre également, mais comme il ne fait que démarrer un nouveau shell, il enregistre simplement le fait que quelqu'un l’a exécuté.sudo
privilèges peuvent être révoqués sans que le mot de passe root soit à nouveau attribué à tous ceux qui en ont besoin.sudo
vous permet de limiter les commandes qu'un utilisateur peut exécuter, vous pouvez essayer de vous assurer que vous ne leur donnez pas accès à des commandes qui écraseraient le journal.La réponse à votre question est:
Lorsque vous exécutez une commande avec sudo , vous exécutez la commande avec des privilèges élevés , c'est-à-dire des privilèges root . Vous devez seulement taper votre mot de passe utilisateur normal car vous (l'utilisateur) avez été ajouté au fichier sudoers qui vous donne les privilèges root .
la source
sudo
ne donne pas toujours des privilèges élevés, mais il fonctionne avec des privilèges élevés, après avoir effectué ce qu'il a à faire (vérification de l'authentification, il peut perdre des privilèges). Il a besoin de ces privilèges élevés pour pouvoir changer d'utilisateur.sudo
utilise des privilèges élevés (mais ce n’est pas propre à sudo, par exemple, mount en fait également), mais la commande que vous appelez, c’est-command
à- dire,sudo command
ne le sera peut-être pas (selon ce qui est défini/etc/sudoers
).Tout d'abord, la désactivation d'un compte est généralement effectuée en définissant le mot de passe crypté sur *, qui ne correspond à la valeur cryptée d'aucune chaîne. Je ne peux pas vérifier pour le moment, mais je pense que c'est ce que fait Ubuntu pour root également. Donc techniquement, il n'y a pas de mot de passe root sur Ubuntu.
Mais sudo précède Ubuntu; il a été conçu pour les systèmes où il existe certainement des mots de passe racine. Alors pourquoi ne nécessite-t-il pas le mot de passe root? En principe, sudo est conçu pour donner l’autorisation d’exécuter des commandes spécifiques à certains utilisateurs - par exemple, permettre à un développeur d’accéder à la racine pour redémarrer l’application Web, mais pas pour démarrer des serveurs arbitraires. En revanche, connaître le mot de passe root vous donne un accès illimité. vous pouvez utiliser login ou su pour ouvrir un shell root et exécuter des commandes arbitraires. Étant donné que sudo doit fonctionner pour les personnes ne disposant pas de ce niveau d'accès, le mot de passe root ne peut pas être exécuté.
la source