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

30

Si j'ai créé un compte utilisateur dans Ubuntu appelé root, aurait-il automatiquement les autorisations root? Briser le système? Causer un pépin dans la matrice? Ce qui se passerait?

Le roi oublié
la source
25
Il existe déjà un compte appelé root.
mikewimporte

Réponses:

46

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

L'utilisateur avec 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é root, il n'aurait pas de statut spécial.

Je vous renvoie au wiki des balises !

Zanna
la source
Pourriez-vous renommer la racine de compte existante, puis créer une racine d'utilisateur régulière?
emory
En remarque, il semble possible (même si je n'ai pas essayé) de changer le nom d'utilisateur uid 0 en quelque chose d'autre, donc le superutilisateur n'est pas appelé root. Pas une bonne idée, mais possible. Ainsi, on pourrait, par exemple, créer un compte de superutilisateur appelé godavec uid 0, et un utilisateur normal appelé rootavec un uid de 1000ou un autre numéro.
Ian D. Scott
15

Cela ne vous laisserait pas parce qu'il y aurait déjà un rootutilisateur.

Mais, comme l'a dit Florian Diesch dans les commentaires:

Certains outils se plaindront mais vous pouvez toujours modifier /etc/passwdet etc/shadowmanuellement pour créer un deuxième utilisateur nommé root.

L'intrus
la source
2
Et si vous faites cela, que se passe-t-il chown root file?
fkraiem
1
@fkraiem, hmm .. bonne question, je ne connais pas la réponse à cela.
TheOdd
3
Ce qui se passait auparavant, c'est le premier du fichier qui gagne. Je ne sais plus maintenant.
Joshua
5

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

Maintenant, ce qui va se passer.

La plupart du temps, rien. Tous les appels système liés à l'autorisation ou à l'authentification utilisent l'UID (à ma connaissance). Et c'est ainsi depuis un certain temps. Votre système continuera de fonctionner comme d'habitude. Les outils système refléteront le nouveau nom d'utilisateur, mais continueront de fonctionner normalement. En d'autres termes "racine" dans la convention et non pas gravée dans le marbre.

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 agir incorrectement. Habituellement, ce sont des scripts et de petits projets, mais vous pourriez passer un peu de temps à retrouver ce mauvais commit, il y a 6 ans dans fdisk qui vous donne toujours mal à la tête.

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

coteyr
la source
tu veux dire UID je pense
Zanna
1

Comme d'autres l'ont expliqué, c'est l'UID = 0 qui donne à l'utilisateur des "super pouvoirs", pas le nom d'utilisateur étant "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épendrait de l'UID que vous lui avez donné.

Ce qui conduit également à une autre idée intéressante: il est totalement 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 mais permet d'avoir différents, disons, shell et répertoire personnel). En fait, certains systèmes de type UNIX ont un autre compte de superutilisateur appelé toor (root backwards) qui permet d'avoir deux comptes de superutilisateur avec des paramètres différents.

Sergey
la source
1

Comment créer le 2e 'root':

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 la vraie racine (pas uid = 0), mais ce sont les mêmes quatre lettres. Impressionnant et inutile.

Comment créer une meilleure 2e racine:

Vous pouvez également effectuer d'autres modifications. Laissez le nom d'utilisateur tel quel (votre nom ou root2) mais changez l'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 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, 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 la vraie racine va changer 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 en soi. 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 s'il 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 libc open () qui est toujours du code de l'espace 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 efficace a id == 0.

En théorie, si vous changez 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ées à rooter).

yaroslaff
la source
0

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

Si vous contournez cela et ajoutez manuellement un deuxième compte root à votre / etc / passwd et / etc / shadow, alors lequel sera utilisé, je suppose que cela dépendra si vous le mettez avant ou après l'original. Comme tous les comptes d'utilisateurs sur un système Unix, il n'aura également un accès superutilisateur que si son UID est nul, quel que soit le nom.

delt
la source