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?
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?
Risposte:
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 radice wiki!
root
. Non è una grande idea, ma possibile. Quindi si potrebbe, ad esempio, creare un account superutente chiamato god
con uid 0
e un utente normale chiamato root
con un uid di 1000
o qualche altro numero.
Non te lo permetterebbe perché ci sarebbe già un root
utente.
Ma, come ha detto Florian Diesch nei commenti:
Alcuni strumenti si lamentano, ma è sempre possibile modificare
/etc/passwd
eetc/shadow
manualmente per creare un secondo utente di nomeroot
.
chown root file
?
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.
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.
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.
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.
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).
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.