Cosa accadrebbe se creassi un account chiamato "root"?


30

Se avessi creato un account utente in Ubuntu chiamato root, avrebbe automaticamente i permessi di root? Rompere il sistema? Causa un problema tecnico nella matrice? Cosa succederebbe?


25
Esiste già un account chiamato root.
mikewhatever,

Risposte:


46

I nomi utente devono essere univoci, quindi, come indicato dalla risposta di Owen Hines , non saresti in grado di creare questo utente. Tuttavia, il punto chiave qui è che i poteri dei superutente (tutte le autorizzazioni possibili) non sono concessi dal nome utente root, ma dall'UID.

L'utente con UID 0 è il superutente.

Quindi, se l'utente con UID 0 avesse un nome diverso e tu avessi creato un utente chiamato root, non avrebbero alcuno stato speciale.

Ti rimando al tag wiki!


Potresti rinominare la radice dell'account esistente e quindi creare una normale radice utente?
emory

Come nota a margine, sembra possibile (anche se non ho provato) di cambiare il nome utente uid 0 in qualcos'altro, quindi il superutente non viene chiamato root. Non è una grande idea, ma possibile. Quindi si potrebbe, ad esempio, creare un account superutente chiamato godcon uid 0e un utente normale chiamato rootcon un uid di 1000o qualche altro numero.
Ian D. Scott,

15

Non te lo permetterebbe perché ci sarebbe già un rootutente.

Ma, come ha detto Florian Diesch nei commenti:

Alcuni strumenti si lamentano, ma è sempre possibile modificare /etc/passwde etc/shadowmanualmente per creare un secondo utente di nome root.


2
E se lo fai, cosa succede chown root file?
fkraiem,

1
@fkraiem, hmm .. bella domanda, non conosco la risposta a questo.
TheOdd

3
Quello che accadeva prima è il primo nel file che vince. Non lo so adesso
Giosuè,

5

Innanzitutto come, come altri hanno affermato, si cambia l'utente con UID 0 in qualcos'altro. Quindi è possibile creare un utente normale con il nome di root e un UID superiore a 1000. Funzionerà "bene". Tutte le autorizzazioni e le funzioni di sistema principali utilizzano l'UID e non il nome utente. In realtà questo è un buon primo passo per rafforzare un sistema Linux. (molto meglio disabilitare root, ma prima sudo lo facevamo).

Ora cosa succederà.

Il più delle volte niente. Tutte le chiamate di sistema che hanno a che fare con l'autorizzazione o l'autenticazione utilizzano l'UID (di cui sono a conoscenza). Ed è stato così per qualche tempo. Il sistema continuerà a funzionare normalmente. Gli strumenti di sistema rispecchieranno il nuovo nome utente, ma continueranno a funzionare normalmente. In altre parole "radice" in convenzione e non incastonata nella pietra.

Detto questo, sono sicuro che ci sono alcuni strumenti e programmi scritti male. I programmi che controllano la variabile d'ambiente $ USER potrebbero funzionare in modo errato. Di solito si tratta di script e piccoli progetti, ma potresti dedicare un po 'di tempo a rintracciare quell'impegno negativo, 6 anni fa in fdisk che continua a farti venire il mal di testa.

Questo è qualcosa che facevo sempre. È stato un passaggio semplice e rientra nella regola dei "nomi utente non prevedibili". Esistono oggi modi MOLTO migliori per raggiungere gli stessi obiettivi.


intendi UID penso
Zanna l'

1

Come altri hanno spiegato, è l'UID = 0 che dà all'utente "superpoteri", non che il nome utente sia "root". Quindi, se in qualche modo sei riuscito a creare un altro utente chiamato "root" (dopo aver rinominato / eliminato quello originale), il super-stato dell'utente dipenderebbe dall'UID che gli hai fornito.

Il che porta anche a un'altra idea interessante: è assolutamente possibile avere più utenti con lo stesso UID (il che li rende essenzialmente lo stesso utente dal punto di vista delle autorizzazioni del filesystem ma consente di avere, diciamo, shell e directory home differenti). In effetti, alcuni sistemi simili a UNIX hanno un altro account superutente chiamato toor (root all'indietro) che consente di avere due account superutente con impostazioni diverse.


1

Come creare la seconda 'radice':

Sì, in teoria, non devono esserci due utenti con lo stesso nome utente o stessi ID. E le utility standard sono infallibili e non renderanno tali utenti per te. Ma puoi sempre modificare / etc / passwd manualmente.

Ad esempio, ho fatto:

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

Come vedi, ora siamo root! Sì, questa non è la radice reale (non uid = 0), ma sono le stesse quattro lettere. Impressionante e inutile.

Come creare una seconda "radice" migliore:

Inoltre, puoi apportare altre modifiche. Lascia il nome utente così com'è, (il tuo nome o root2) ma cambia uid.

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

(vedi, i campi UID e GID sono azzerati) Ora hai un normale utente (non root), con un nome utente quasi non sospetto (o crea il nome utente 'johndoe' per un effetto migliore), ma in realtà, questo utente ha dei superpoteri!

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

Command (m for help):

Come vedi, l'utente comune non può usare fdisk su / dev / sda, ma root2 può fare qualsiasi cosa!

Questo semplice trucco a volte utilizzato dopo che il sistema è stato violato per fornire backdoor. Anche se il vero root cambierà le sue chiavi / password, l'hacker avrà comunque il pieno controllo del sistema tramite un altro utente con uid = 0.

Come funziona la matrice

In realtà, né il nome utente 'root', né uid = 0 non sono magici da soli. Questa è solo una questione di convenzioni. E non è nemmeno sempre vero. (vedi questa domanda: l'account di root ha sempre UID / GID 0? ) Il codice del kernel è magico. In realtà, il codice dello spazio utente stesso - non può fare nulla che possa fare root. Anche se funziona come root! La potenza di root è nel kernel. ad es. se si esegue "cat / etc / shadow" (di solito solo root può farlo), il programma / bin / cat chiama la funzione libc open () che è ancora codice userspace e questa funzione open () esegue la chiamata di sistema al kernel. Quindi il kernel stesso decide cosa fare. Ad esempio, il kernel può consentire alcune operazioni se l'utente effettivo ha id == 0.

In teoria, se cambierete un po 'di codice nel kernel e gestirete l'utente "www-data" in modo diverso - alcune operazioni potrebbero essere consentite solo all'utente "www-data" (e non consentite nemmeno al root).


0

La maggior parte degli strumenti 'user-friendly' verificherà questo e non ti permetterà di creare un account con un nome utente già utilizzato.

Se lo elimini e aggiungi manualmente un secondo account root al tuo / etc / passwd e / etc / shadow, quale verrà usato, immagino dipenderebbe se lo mettessi prima o dopo quello originale. Come tutti gli account utente su un sistema unix, avrà anche accesso superutente solo se il suo UID è zero, indipendentemente dal nome.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.