web-dev-qa-db-fra.com

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

Si je créais un compte utilisateur dans Ubuntu appelé root, ce dernier disposerait-il automatiquement des autorisations root? Casser le système? Causer un petit problème dans la matrice? Ce qui se passerait?

30

Les noms d'utilisateur doivent être uniques, donc, comme mentionné par réponse d'Owen Hines , vous ne pourrez pas créer cet utilisateur. Toutefois, le point clé ici est que les pouvoirs du superutilisateur (toutes les autorisations possibles) ne sont pas attribués par le nom d'utilisateur rootname__, mais par l'UID.

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

Ainsi, si l'utilisateur avec l'UID 0 avait un nom différent et que vous avez créé un utilisateur appelé rootname__, il n'aurait aucun statut spécial.

Je vous renvoie au racine tag wiki!

44
Zanna

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.

15
Owen Hines

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

Maintenant quant à ce qui va arriver.

La plupart du temps rien. Tous les appels système relatifs à l'autorisation ou à l'authentification utilisent l'UID (à ma connaissance). Et c'est comme ça depuis quelque temps. Votre système continuera à fonctionner normalement. Les outils système refléteront le nouveau nom d'utilisateur, mais continueront à fonctionner normalement. En d’autres termes, "enraciner" 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 agir correctement. Généralement, il s'agit de scripts et de petits projets, mais vous pourriez passer un certain temps à rechercher ce mauvais commit, il y a 6 ans dans fdisk, qui vous donne 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'utilisateur non prévisibles". Il existe BEAUCOUP de meilleurs moyens d'atteindre les mêmes objectifs aujourd'hui.

5
coteyr

Comment créer une '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/etc/passwd manuellement.

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 une vraie racine (pas uid = 0), mais c'est quatre mêmes lettres. Impressionnant et inutile.

Comment créer une meilleure 'racine':

En outre, vous pouvez faire d'autres modifications. Laissez le nom d'utilisateur tel quel, (votrenom ou racine2), mais changez l'identifiant.

$ 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 le nom d'utilisateur 'johndoe' pour un meilleur effet), mais en fait, cet utilisateur a des 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, un utilisateur ordinaire ne peut pas utiliser fdisk sur/dev/sda, mais root2 peut tout faire!

Cette astuce simple parfois utilisée après que le système est piraté pour fournir une porte dérobée. Même si la vraie racine changera ses clés/mots de passe, le pirate aura toujours le contrôle total du système via un autre utilisateur avec uid = 0.

Comment fonctionne la matrice

En fait, 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 UID/GID 0? ) Le code du noyau est magique. En fait, le code de l'espace utilisateur lui-même - ne peut rien faire que root puisse faire. Même si fonctionne en tant que root! Les racines sont dans le noyau. par exemple. si vous faites "cat/etc/shadow" (seule la racine peut le faire), le programme/bin/cat appelle la fonction libc open () qui est toujours du code utilisateur, et cette fonction open () effectue un appel système au noyau. Ensuite, le noyau lui-même décide quoi faire. Par exemple, le noyau peut autoriser certaines opérations si l'utilisateur effectif a id == 0.

En théorie, si vous modifiez un code dans le noyau et gérez différemment l'utilisateur 'www-data' - certaines opérations ne peuvent être autorisées que pour l'utilisateur 'www-data' (et ne sont pas autorisées, même pour root).

1
yaroslaff

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

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 les rend essentiellement le même utilisateur du point de vue des autorisations du système de fichiers, tout en permettant d'avoir des répertoires différents, par exemple Shell et home). En fait, certains systèmes de type UNIX ont un autre compte superutilisateur appelé toor (racine arrière) qui permet d’avoir deux comptes superutilisateur avec des paramètres différents.

1
Sergey

La plupart des outils "conviviaux" vérifient cette fonctionnalité et ne vous permettent pas de créer un compte avec un nom d'utilisateur déjà utilisé.

Si vous contournez ceci et ajoutez manuellement un deuxième compte root à vos/etc/passwd et/etc/shadow, le nom de celui-ci sera utilisé, cela dépendrait du fait que vous le placiez avant ou après celui d'origine. Comme tous les comptes utilisateur sur un système Unix, il aura également un accès superutilisateur uniquement si son UID est égal à zéro, quel que soit son nom.

0
delt