it-swarm.com.de

Was würde passieren, wenn ich ein Konto namens "root" erstellen würde?

Wenn ich in Ubuntu ein Benutzerkonto mit dem Namen root erstellt habe, würde es automatisch Root-Berechtigungen haben? Das System kaputt machen? Verursachen Sie einen Fehler in der Matrix? Was würde passieren?

30

Benutzernamen müssen eindeutig sein. Wie von Owen Hines 'Antwort erwähnt, können Sie diesen Benutzer nicht erstellen. Der entscheidende Punkt hierbei ist jedoch, dass Superuser-Berechtigungen (alle möglichen Berechtigungen) nicht durch den Benutzernamen root, sondern durch die UID gewährt werden.

Der Benutzer mit der UID 0 ist der Superuser.

Wenn der Benutzer mit der UID 0 einen anderen Namen hätte und Sie einen Benutzer mit dem Namen root erstellt hätten, hätten sie keinen speziellen Status.

Ich verweise Sie auf das root Tag-Wiki!

44
Zanna

Es würde Sie nicht zulassen, da es bereits einen root Benutzer geben würde.

Aber wie Florian Diesch in den Kommentaren gesagt hat:

Einige Tools werden sich beschweren, aber Sie können /etc/passwd und etc/shadow immer manuell bearbeiten, um einen zweiten Benutzer mit dem Namen root zu erstellen.

15
Owen Hines

Erstens, wie Sie, wie andere gesagt haben, den Benutzer mit der UID 0 in etwas anderes ändern. Dann können Sie einen normalen Benutzer mit dem Namen root und einer UID über 1000 erstellen. Dies funktioniert "gut". Alle Berechtigungen und Kernsystemfunktionen verwenden die UID und nicht den Benutzernamen. Tatsächlich ist dies ein guter erster Schritt, um ein Linux-System abzusichern. (viel besser um root zu deaktivieren, aber vor Sudo haben wir das gemacht).

Nun, was passieren wird.

Meistens nichts. Alle Systemaufrufe, die mit Autorisierung oder Authentifizierung zu tun haben, verwenden eine UID (die mir bekannt ist). Und das ist schon seit einiger Zeit so. Ihr System läuft wie gewohnt weiter. System-Tools geben den neuen Benutzernamen wieder, funktionieren jedoch normal weiter. Mit anderen Worten "Wurzel" in der Konvention und nicht in Stein gemeißelt.

Trotzdem bin ich sicher, dass es einige Tools und Programme gibt, die schlecht geschrieben sind. Programme, die die Umgebungsvariable $ USER überprüfen, verhalten sich möglicherweise falsch. Normalerweise handelt es sich dabei um Skripte und kleine Projekte, aber Sie könnten einige Zeit damit verbringen, diesen einen schlechten Commit vor 6 Jahren in fdisk aufzuspüren, der Ihnen immer wieder Kopfschmerzen bereitet.

Das habe ich die ganze Zeit gemacht. Es war ein einfacher Schritt und unterliegt der Regel "nicht vorhersehbarer Benutzername". Es gibt jedoch VIEL bessere Möglichkeiten, um die gleichen Ziele zu erreichen.

5
coteyr

So erstellen Sie die zweite Wurzel:

Ja, theoretisch darf es keine zwei Benutzer mit demselben Benutzernamen oder derselben ID geben. Und Standard-Dienstprogramme sind kinderleicht und machen solche Benutzer nicht für Sie. Aber Sie können/etc/passwd immer manuell bearbeiten.

Zum Beispiel habe ich:

$ 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)

Wie Sie sehen, sind wir jetzt root! Ja, das ist keine echte Wurzel (nicht UID = 0), aber es sind die gleichen vier Buchstaben. Beeindruckend und nutzlos.

So erstellen Sie eine bessere 2. 'Wurzel':

Sie können auch andere Änderungen vornehmen. Lassen Sie den Benutzernamen unverändert (Ihr Name oder root2), aber ändern Sie die UID.

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

(siehe, UID- und GID-Felder sind Nullen) Nun haben Sie einen normalen (Nicht-Root-) Benutzer mit einem fast nicht verdächtigen Benutzernamen (oder machen Sie den Benutzernamen 'johndoe', um eine bessere Wirkung zu erzielen), aber tatsächlich hat dieser Benutzer Superkräfte!

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

Command (m for help):

Wie Sie sehen, kann der normale Benutzer fdisk unter/dev/sda nicht verwenden, aber root2 kann alles!

Dieser einfache Trick wird manchmal verwendet, nachdem das System gehackt wurde, um eine Hintertür bereitzustellen. Selbst wenn der echte Root seine Schlüssel/Passwörter ändert, hat der Hacker über einen anderen Benutzer mit uid = 0 die volle Kontrolle über das System.

Wie Matrix funktioniert

Weder der Benutzername 'root' noch uid = 0 sind für sich genommen magisch. Dies ist nur eine Frage der Konvention. Und es ist nicht immer wahr. (Siehe diese Frage: Hat der Root-Account immer eine UID/GID 0? ) Der Kernel-Code ist magisch. Tatsächlich kann der Userspace-Code selbst - nichts tun, was root kann. Auch wenn das als root läuft! Root Power ist im Kernel. z.B. Wenn Sie "cat/etc/shadow" ausführen (dies kann normalerweise nur root tun), ruft das Programm/bin/cat die Funktion libc open () auf, die immer noch Userspace-Code ist, und diese Funktion open () führt einen Systemaufruf zum Kernel durch. Dann entscheidet der Kernel selbst, was zu tun ist. Beispielsweise kann der Kernel einige Operationen zulassen, wenn der effektive Benutzer die ID == 0 hat.

Wenn Sie theoretisch einen Code im Kernel ändern und den Benutzer 'www-data' anders behandeln, sind einige Vorgänge möglicherweise nur für den Benutzer 'www-data' zulässig (und dürfen nicht einmal root sein).

1
yaroslaff

Wie andere erklärt haben, gibt die UID = 0 dem Benutzer "Superkräfte", nicht den Benutzernamen "root". Wenn Sie es also irgendwie geschafft haben, einen anderen Benutzer namens "root" zu erstellen (nach dem Umbenennen/Löschen des ursprünglichen), hängt der Superstatus des Benutzers von der UID ab, die Sie ihm gegeben haben.

Was auch zu einer anderen interessanten Idee führt: Es ist durchaus möglich, dass mehrere Benutzer dieselbe UID haben (was sie im Wesentlichen zu demselben Benutzer macht, wenn es um Dateisystemberechtigungen geht, aber beispielsweise unterschiedliche Shell- und Basisverzeichnisse zulässt). Tatsächlich haben einige UNIX-ähnliche Systeme ein anderes Superuser-Konto namens toor (root backwards), mit dem zwei Superuser-Konten mit unterschiedlichen Einstellungen eingerichtet werden können.

1
Sergey

Die meisten "benutzerfreundlichen" Tools prüfen dies und lassen Sie kein Konto mit einem Benutzernamen erstellen, der bereits vergeben ist.

Wenn Sie dies umgehen und manuell ein zweites Root-Konto zu Ihrer/etc/passwd und/etc/shadow hinzufügen, hängt es davon ab, welches verwendet wird, wenn Sie es vor oder nach dem ursprünglichen Konto platzieren. Wie alle Benutzerkonten auf einem Unix-System hat es auch Superuser-Zugriff nur, wenn seine UID ungeachtet des Namens Null ist.

0
delt