GNU/Linux >> Tutoriels Linux >  >> Linux

Différence entre l'utilisateur Sudo et l'utilisateur root ?

Fermé . Cette question a besoin de détails ou de clarté. Il n'accepte pas de réponses actuellement.

Vous voulez améliorer cette question ? Ajoutez des détails et clarifiez le problème en modifiant ce message.

Fermé il y a 4 ans.


Améliorer cette question

Les /etc/sudoers le fichier répertorie les utilisateurs qui peuvent faire quoi avec le sudo commande

L'utilisateur root crée et modifie le /etc/sudoers fichier.

Ce concept est difficile à comprendre pour moi.

Si tous les utilisateurs ayant le privilège sudo appartiennent à sudoers groupe, alors tous peuvent devenir root en donnant le sudo su commande.

Alors qui est l'utilisateur root réel et comment contrôle-t-il les pouvoirs des utilisateurs dans le groupe sudoers ?

Veuillez m'expliquer.

Réponse acceptée :

Résumé :"root" est le nom réel du compte administrateur. "sudo" est une commande qui permet aux utilisateurs ordinaires d'effectuer des tâches administratives. « Sudo » n'est pas un utilisateur.

Réponse longue :

« root » (alias « superutilisateur ») est le nom du compte de l'administrateur système. Les origines du nom sont un peu archaïques, mais peu importe.

L'utilisateur racine a l'ID utilisateur 0 et a nominalement des privilèges illimités. Root peut accéder à n'importe quel fichier, exécuter n'importe quel programme, exécuter n'importe quel appel système et modifier n'importe quel paramètre. (Mais voir ci-dessous¹).

Avant l'invention de la commande "sudo", si vous vouliez effectuer des tâches administratives, vous deviez vous connecter en tant que root, soit en obtenant une invite de connexion² d'une manière ou d'une autre, soit avec le su commande ("su" étant l'abréviation de l'utilisateur de remplacement.)³

C'est un peu compliqué et ne vous permet pas non plus de donner aux utilisateurs des pouvoirs administratifs partiels. Ainsi, la commande "sudo" (abréviation de "substitute user do") a été inventée.

La commande "sudo" vous permet d'exécuter des commandes avec des privilèges de superutilisateur tant que votre identifiant utilisateur se trouve dans le fichier sudoers, vous donnant l'autorisation nécessaire.

Ainsi, par ex. sudo vi /etc/hosts vous permettrait de modifier le fichier hosts comme si vous exécutiez en tant que root. Vous n'avez même pas besoin du mot de passe root, juste votre propre mot de passe de connexion.

Et bien sûr, sudo su vous permettrait de devenir simplement root. Le résultat est le même que si vous vous étiez connecté en tant que root ou exécuté le su , sauf que vous n'avez pas besoin de connaître le mot de passe root, mais vous devez être dans le fichier sudoers.

Le fichier sudoers détermine qui peut utiliser la commande sudo et ce qu'il peut en faire.

Le fichier sudoers est ce qui vous donne plusieurs administrateurs⁴. En effet, vos administrateurs sont root, ainsi que tous ceux répertoriés dans le fichier sudoers. Sans le fichier sudoers, le seul administrateur est root.

En fait, dans les organisations où quelqu'un d'autre administre votre ordinateur pour vous, il est assez courant de ne pas connaître le mot de passe root de votre propre ordinateur - tant que vous êtes dans le fichier sudoers, cela n'a pas d'importance.

Dans une entreprise pour laquelle je travaillais, avec une batterie de serveurs gigantesque, seul un très, très petit nombre de personnes connaissaient les mots de passe root. Au lieu de cela, il y avait une base de données indiquant qui était autorisé à travailler sur quels serveurs. Un processus automatisé vous ajouterait aux fichiers sudoers des serveurs auxquels vous étiez autorisé à accéder et vous supprimerait à l'expiration de votre autorisation.

En relation :Échapper les caractères inconnus de la chaîne pour -exec ?

¹ Une dernière chose :les versions modernes d'Unix peuvent désormais restreindre même ce que l'utilisateur root peut faire.

Sous SELinux (Security Enhanced Linux), il existe effectivement une liste de contrôle d'accès qui détermine quel programme peut faire quoi, et même root ne peut pas dépasser ces restrictions.

Dans le cadre du système de protection de l'intégrité du système (SIP) d'Apple (alias "sans racine"), certains fichiers et répertoires sont verrouillés afin que seules les applications figurant sur la liste blanche appropriée puissent y accéder.

Ces systèmes existent pour protéger un système du cas où un utilisateur malveillant parvient à obtenir un accès root. (Ou dans certains cas, pour empêcher les utilisateurs de jailbreaker leurs appareils intégrés.) Pour des raisons évidentes, il est extrêmement difficile de contourner ces restrictions, même avec un accès root.

² L'invite "login:" est un autre élément archaïque de l'histoire d'Unix, remontant à l'époque où nous utilisions tous des terminaux ascii sur des lignes série, au lieu de systèmes de fenêtres. Vous pouvez toujours obtenir une invite "connexion : " en tapant simplement login dans n'importe quelle fenêtre de terminal, ou en ouvrant une connexion ssh (ou telnet ou rsh) à votre ordinateur à partir d'ailleurs. Vous pouvez vous connecter en tant qu'autre utilisateur à partir de là si vous le souhaitez. (Et si votre ordinateur possède des ports série, vous pouvez toujours le configurer pour autoriser les connexions sur ceux-ci.)

³ Il est également possible que des programmes individuels reçoivent un accès root. Ces programmes peuvent faire tout ce qu'un utilisateur disposant d'un accès root peut faire, même lorsqu'ils sont exécutés par un utilisateur ordinaire. Ceux-ci sont généralement limités à des tâches spécifiques. Par exemple, le programme crontab a des privilèges root afin qu'il puisse éditer les tables cron. De toute évidence, "sudo" a des privilèges root afin qu'il puisse faire ce qu'il fait.

⁴ Je vais couvrir un autre point que j'ai passé sous silence précédemment. J'utilise indifféremment "administrateur" et "root", mais il existe d'autres types d'administrateurs. Ceux-ci sont souvent appelés "comptes de rôle", c'est-à-dire que ces comptes n'appartiennent pas à de vrais humains, mais existent plutôt pour jouer un rôle spécifique sur le système. Si vous regardez le /etc/passwd fichier sur votre système, vous trouverez des dizaines et des dizaines de comptes de ce type.

Par exemple, si mysql était installé sur votre système, il y aurait un utilisateur "mysql", et tous les fichiers de base de données, les fichiers de configuration, etc. appartiendraient tous à cet utilisateur. Seul cet utilisateur (et root, bien sûr) aurait les autorisations nécessaires pour accéder aux fichiers et exécuter le serveur mysql. Dans un sens, cet utilisateur serait un compte administrateur, mais uniquement pour mysql.

Si vous deviez effectuer des tâches d'administration de base de données, vous deviendriez soit "mysql" avec le su mysql ou utilisez sudo où le fichier sudoers vous donnerait des privilèges mysql pour ces commandes spécifiques.


Linux
  1. La Différence Entre [[ $a ==Z* ]] Et [ $a ==Z* ] ?

  2. Quelle est la différence entre Sudo Su - et Sudo Su - ?

  3. La différence entre compte utilisateur et compte de service ?

  4. Linux - Différence entre l'espace utilisateur et l'espace noyau ?

  5. Différence entre Eot et Eof?

La différence entre sudo et su expliquée

Apprenez la différence entre les commandes "su" et "su -" sous Linux

Comprendre la différence entre les commandes sudo et su sous Linux

différence Linux entre sudo crontab -e et juste crontab -e

Quelle est la différence entre root et sudo ?

Quelle est la différence entre l'espace utilisateur et l'espace noyau ?