Que se passerait-il si je créais un compte appelé «root»?

30

Si je créais un compte utilisateur appelé root dans Ubuntu, aurait-il automatiquement les droits root? Casser le système? Provoquer un pépin dans la matrice? Que se passerait-il?

    
posée The Forgotten King 08.10.2016 - 21:34
la source

6 réponses

44

Les noms d’utilisateur doivent être uniques. Par conséquent, comme indiqué dans la réponse d’Owen Hines , vous ne pourrez pas créer cet utilisateur. Cependant, le point clé ici est que les pouvoirs du superutilisateur (toutes les autorisations possibles) ne sont pas accordés par le nom d'utilisateur root , mais par UID.

L'utilisateur avec l'UID 0 est le superutilisateur.

Donc, si l'utilisateur avec UID 0 avait un nom différent et que vous avez créé un utilisateur appelé root , ils n'auraient aucun statut particulier.

Je vous renvoie au wiki du tag root !

    
réponse donnée Zanna 08.10.2016 - 22:02
la source
15

Cela ne vous laisserait pas car il y aurait déjà un utilisateur root .

Mais, comme Florian Diesch a déclaré dans les commentaires:

  

Certains outils se plaindront, mais vous pouvez toujours modifier /etc/passwd et etc/shadow manuellement pour créer un deuxième utilisateur nommé root .

    
réponse donnée Owen Hines 08.10.2016 - 21:36
la source
5

D'abord, comment, comme d'autres l'ont dit, vous changez l'utilisateur avec UID 0 en autre chose. Ensuite, vous pouvez créer un utilisateur normal avec le nom de la racine et un UID supérieur à 1000. Cela fonctionnera "bien". Toutes les autorisations et fonctions système de base utilisent l'UID et non le nom d'utilisateur. En fait, c'est une première étape dans le renforcement d'un système Linux. (beaucoup mieux pour désactiver root, mais avant sudo nous le faisions).

Maintenant, que va-t-il se passer?

La plupart du temps rien. Tous les appels système liés à l'autorisation ou à l'authentification utilisent l'UID (que je connais). Et ça a été comme ça pendant un certain temps. Votre système continuera à fonctionner comme d'habitude. Les outils système refléteront le nouveau nom d'utilisateur, mais continueront à fonctionner normalement. En d'autres termes, "racine" dans la convention et non dans la pierre.

Cela dit, je suis sûr que certains outils et programmes sont mal écrits. Les programmes qui vérifient la variable d'environnement $ USER peuvent ne pas fonctionner correctement. Habituellement, il s’agit de scripts et de petits projets, mais vous pourriez passer du temps à rechercher ce mauvais engagement, il ya 6 ans, dans fdisk, qui ne cesse de vous faire mal à la tête.

C'est quelque chose que je faisais tout le temps. Ce fut une étape facile et relève de la règle des "noms d'utilisateurs non prévisibles". Cependant, il existe BEAUCOUP de meilleures façons d’atteindre les mêmes objectifs aujourd’hui.

    
réponse donnée coteyr 10.10.2016 - 11:33
la source
1

Comme d'autres l'ont expliqué, c'est l'UID = 0 qui donne à l'utilisateur des "super pouvoirs", et non le nom d'utilisateur qui est "root". Donc, si vous avez réussi à créer un autre utilisateur appelé "root" (après avoir renommé / supprimé l’original) - le super-statut de l’utilisateur dépendra de l’ID utilisateur que vous lui avez donné.

Ce qui conduit également à une autre idée intéressante: il est tout à fait possible d'avoir plusieurs utilisateurs avec le même UID (ce qui en fait essentiellement le même utilisateur que le système de fichiers mais permet d'avoir un répertoire différent). En fait, certains systèmes de type UNIX ont un autre compte super-utilisateur appelé ou (root backward) qui permet d'avoir deux comptes super-utilisateur avec différents paramètres.

    
réponse donnée Sergey 11.10.2016 - 22:11
la source
1

Comment créer la 2ème "racine":

Oui, en théorie, il ne doit pas y avoir deux utilisateurs avec le même nom d'utilisateur ou les mêmes identifiants. Et les utilitaires standard sont infaillibles et ne feront pas de tels utilisateurs pour vous. Mais vous pouvez toujours éditer manuellement / etc / passwd.

Par exemple, j'ai fait:

$ sudo adduser root2 # created ordinary user
$ sudo vim /etc/passwd # edit last line, change 'root2' to 'root'. 
$ sudo -u '#1002' id # 1002 is UID of new user, it's in last line of /etc/passwd
uid=1002(root) gid=1002(root2) группы=1002(root2)

Comme vous le voyez, nous sommes root maintenant! Oui, ce n'est pas la vraie racine (pas UID = 0), mais ce sont les quatre mêmes lettres. Impressionnant et inutile.

Comment créer une meilleure 2ème "racine":

En outre, vous pouvez faire d’autres modifications. Laissez le nom d'utilisateur tel quel (votrenom ou root2) mais changez uid.

$ tail -n 1 /etc/passwd
root2:x:0:0:,,,:/home/root2:/bin/bash

(voir les champs UID et GID sont des zéros) Maintenant, vous avez un utilisateur habituel (non-root), avec un nom d'utilisateur presque non suspect (ou faites un nom d'utilisateur «johndoe» pour un meilleur effet), mais en fait, cet utilisateur a de super pouvoirs!

$ fdisk /dev/sda
fdisk: unable to open /dev/sda: Permission denied
$ sudo -u root2 fdisk /dev/sda

Command (m for help):

Comme vous le voyez, l'utilisateur ordinaire ne peut pas utiliser fdisk sur / dev / sda, mais root2 peut tout faire!

Cette astuce simple parfois utilisée après le piratage du système pour fournir une porte dérobée. Même si root verra ses clés / mots de passe modifiés, le pirate aura toujours un contrôle total sur le système via un autre utilisateur avec uid = 0.

Comment fonctionne la matrice

En réalité, ni le nom d'utilisateur 'root', ni uid = 0 n'est magique par lui-même. C'est juste une question de convention. Et ce n'est même pas toujours vrai. (voir cette question: Le compte root a-t-il toujours un UID / GID?) 0? ) Le code du noyau est magique. En fait, le code d’espace utilisateur lui-même - ne peut rien faire de ce que root peut faire. Même si s'exécute en tant que root! La puissance racine est dans le noyau. par exemple. Si vous faites "cat / etc / shadow" (seule la racine peut généralement le faire), le programme / bin / cat appelle la fonction open () libc, qui est toujours du code utilisateur, et cette fonction open () effectue un appel système au noyau. Alors le noyau lui-même décide quoi faire. Par exemple, le noyau peut autoriser une opération si l'utilisateur effectif a id == 0.

En théorie, si vous modifiez du code dans le noyau et gérez l'utilisateur "www-data" différemment - certaines opérations peuvent être autorisées uniquement pour l'utilisateur "www-data" (et même pas autorisé pour la racine).

    
réponse donnée yaroslaff 13.10.2016 - 20:58
la source
0

La plupart des outils «conviviaux» vont vérifier cela et ne vous permettent pas de créer un compte avec un nom d'utilisateur déjà utilisé.

Si vous ignorez ceci, et ajoutez manuellement un second compte root à votre / etc / passwd et / etc / shadow, alors lequel sera utilisé, je suppose que cela dépend si vous le mettez avant ou après celui d'origine. Comme tous les comptes utilisateurs sur un système Unix, il aura également un accès superutilisateur uniquement si son UID est zéro, quel que soit son nom.

    
réponse donnée delt 11.10.2016 - 19:48
la source

Lire d'autres questions sur les étiquettes